- Published on
Deploy Next.js ke GitHub Pages dengan Custom Domain Gratis
- Authors
Panduan ini menjelaskan langkah-langkah untuk menyebarkan (deploy) aplikasi Next.js ke GitHub Pages menggunakan GitHub Actions, serta mengonfigurasi custom domain gratis dari GitHub Pages itu sendiri (*.github.io).
1. Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Akun GitHub
- Node.js v22.x.x terinstal (di lokal)
- Proyek Next.js yang sudah berjalan di lokal
- Git sudah diinisialisasi di dalam folder proyek
2. Struktur Proyek
Pastikan struktur proyek Anda mirip dengan berikut:
my-project/
βββ .github/
β βββ workflows/
β βββ deploy.yml
βββ pages/
βββ public/
βββ package.json
βββ next.config.js
βββ ...
3. Konfigurasi next.config.js
Tambahkan konfigurasi berikut untuk mendukung ekspor ke GitHub Pages:
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
basePath: '/nama-repo',
trailingSlash: true,
};
module.exports = nextConfig;
Gantilah /nama-repo dengan nama repositori Anda di GitHub.
4. Tambahkan Script export di package.json
Buka file package.json, dan pastikan bagian scripts seperti ini:
{
"scripts": {
"dev": "next dev",
"build": "next build",
"export": "next export",
"start": "next start"
}
}
Script export sangat penting karena Next.js tidak otomatis menyediakannya. Perintah ini akan menghasilkan file statis di dalam folder out/ yang akan digunakan untuk GitHub Pages.
5. Workflow GitHub Actions dalam file deploy.yml
Untuk mengotomatisasi proses build dan deploy ke GitHub Pages setiap kali Anda mendorong (push) perubahan ke cabang utama (main), buat file bernama deploy.yml di dalam folder .github/workflows/ dan isi dengan konfigurasi berikut:
name: Deploy to GitHub Pages
on:
push:
branches:
- main # Workflow ini akan berjalan saat Anda push ke branch 'main'
permissions:
contents: write # Memberi hak kepada GitHub Actions untuk menulis ke branch 'gh-pages'
jobs:
build-and-deploy:
runs-on: ubuntu-latest # Gunakan runner Ubuntu
steps:
- name: Checkout Repository
uses: actions/checkout@v3 # Mengambil kode dari repositori Anda
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 22 # Versi Node.js yang digunakan (sesuai lokal Anda)
check-latest: true # Gunakan versi terbaru dari channel 22
- name: Install Dependencies
run: npm install # Menginstal semua dependensi dari package.json
- name: Build and Export
run: |
npm run build # Membuat build aplikasi Next.js
npm run export # Mengekspor menjadi file statis di folder 'out'
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3 # Action khusus untuk deploy ke GitHub Pages
with:
github_token: ${{ secrets.GITHUB_TOKEN }} # Token default dari GitHub untuk autentikasi
publish_dir: ./out # Folder yang akan dideploy
publish_branch: gh-pages # Branch tempat GitHub Pages membaca konten
π Penjelasan tambahan:
- File ini sepenuhnya bekerja otomatis setelah Anda push ke
main. - Branch
gh-pagesakan dibuat dan diperbarui otomatis oleh Actions. - Anda tidak perlu menulis ke
gh-pagessecara manual.
6. Aktifkan GitHub Pages
Masuk ke GitHub > Repositori Anda > Settings > Pages, lalu atur:
- Source:
Deploy from a branch - Branch:
gh-pages - Folder:
/ (root)
Setelah itu, situs Anda akan aktif di:
https://username.github.io/nama-repo/
Pastikan nama repositori sesuai dengan basePath yang Anda tetapkan sebelumnya.
7. Verifikasi Hasil
- Buka tab Actions di GitHub untuk melihat proses build dan deploy.
- Jika sukses, akses URL Pages Anda.
- Pastikan semua aset dimuat dengan benar.
8. π Penjelasan Tambahan: Memahami File .yaml pada GitHub Actions (5W1H)
Sebagai bagian penting dari proses deploy otomatis, mari kita pahami lebih dalam apa itu file .yaml yang digunakan di GitHub Actions, terutama untuk pemula agar tidak bingung atau ragu dalam menggunakannya.
π¦ What β Apa Itu File .yaml dalam GitHub Actions?
File .yaml adalah file konfigurasi teks yang digunakan GitHub Actions untuk mendefinisikan workflow otomatis. Dalam konteks tutorial ini, file tersebut digunakan untuk:
- Menjalankan proses build dan export Next.js
- Men-deploy hasilnya ke GitHub Pages
File ini wajib berada di folder:
.github/workflows/deploy.yml
.yamladalah singkatan dari YAML Ainβt Markup Language, format ringan seperti JSON, tapi lebih mudah dibaca.
π¨ Why β Mengapa Kita Membutuhkan File .yaml?
GitHub Actions bekerja sepenuhnya berdasarkan deklarasi β artinya, GitHub hanya akan menjalankan sesuatu jika diberi instruksi secara eksplisit melalui file .yaml.
Tanpa file ini:
- GitHub tidak tahu harus melakukan apa setelah push ke repository
- Tidak ada proses otomatisasi build/export
- Website kamu tidak akan pernah ter-deploy ke GitHub Pages secara otomatis
Jadi, file
.yamladalah jantung dari automasi dalam proses CI/CD (Continuous Integration / Continuous Deployment).
π© Who β Siapa yang Menggunakan atau Menulis File Ini?
- Anda sendiri (developer) yang menulis file ini sebagai bagian dari setup proyek
- GitHub Actions runner yang menjalankan langkah-langkah di dalam file saat ada event (misalnya push)
- Tidak perlu ditulis oleh orang lain atau pihak ketiga, karena GitHub sudah menyediakan action siap pakai (seperti
actions/checkout,peaceiris/actions-gh-pages, dll.)
π§ Where β Di Mana File Ini Ditempatkan?
Lokasi file .yaml ini harus tepat, yaitu di dalam:
<root-project>/
βββ .github/
βββ workflows/
βββ deploy.yml
β οΈ Penamaan folder dan file case-sensitive! Harus
.github, bukan.Githubatau.GITHUB.
π₯ When β Kapan File Ini Dijalankan?
GitHub Actions akan secara otomatis menjalankan workflow ini ketika ada event tertentu, sesuai yang didefinisikan dalam bagian on:.
Dalam tutorial ini:
on:
push:
branches:
- main
Artinya: β‘οΈ Setiap kali Anda push ke branch main, workflow akan dijalankan dari awal hingga deploy selesai.
πͺ How β Bagaimana File .yaml Ini Bekerja?
Mari kita bedah alurnya secara natural dan jelas:
- a. Trigger
on:
push:
branches:
- main
β‘οΈ Menunggu event push ke branch main.
- b. Permission
permissions:
contents: write
β‘οΈ Memberikan izin agar workflow boleh menulis (push) ke branch gh-pages.
- c. Job Utama
jobs:
build-and-deploy:
runs-on: ubuntu-latest
β‘οΈ Menentukan job yang berjalan di server virtual (runner Linux).
- d. Langkah-langkah (steps)
Berikut ini urutan prosesnya:
Ambil kode dari repo:
uses: actions/checkout@v3Instalasi Node.js versi 22:
uses: actions/setup-node@v3 with: node-version: 22Instal dependensi proyek:
run: npm installBuild dan export Next.js:
run: | npm run build npm run exportDeploy hasil export ke GitHub Pages:
uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./out
π¦ Hasil dari proses ini akan mendorong isi folder
out/ke branchgh-pages.
9. Penutup
Dengan mengikuti langkah-langkah ini, Anda telah berhasil:
- Men-deploy proyek Next.js ke GitHub Pages
- Menggunakan GitHub Actions untuk otomatisasi
- Mengaktifkan custom domain default dari GitHub (
*.github.io) secara gratis
Untuk ekstensi tutorial ini menggunakan domain pihak ketiga (misal Freenom atau domain berbayar), bagian lanjutan dapat disiapkan sesuai permintaan.
Catatan Penyusunan Artikel ini disusun sebagai materi edukasi dan referensi umum berdasarkan berbagai sumber pustaka, praktik lapangan, serta bantuan alat penulisan. Pembaca disarankan untuk melakukan verifikasi lanjutan dan penyesuaian sesuai dengan kondisi serta kebutuhan masing-masing sistem.