Self-Host Forgejo: Git Milik Sendiri Saat GitHub Down
Panduan memasang Forgejo di VPS: binary resmi, systemd, HTTPS, SSH git di port 2222, backup dengan forgejo dump, dan cara memindahkan repo dari GitHub. Plus batas jujur: uptime jadi tanggung jawabmu.

Saat GitHub Down, Repo-mu Tetap di Sana
GitHub adalah layanan yang sangat jarang down — tetapi “sangat jarang” bukan “tidak pernah”. Dan ketika terjadi, yang berhenti bukan hanya halaman web: git push, CI, pull request, dan deploy yang bergantung padanya ikut menunggu.
Self-hosting bukan jawaban untuk semua orang. Tetapi kalau repositori adalah bagian dari jalur produksi, memiliki salinan yang bisa kamu kendalikan adalah bentuk ketahanan yang masuk akal.
Forgejo adalah forge Git open source (fork Gitea) yang ringan, mendukung issues, pull request, dan Forgejo Actions. Ia bisa berjalan di satu VPS kecil.
Yang Kamu Butuhkan
- VPS dengan 2 vCPU dan RAM 2–4 GB. Untuk tim kecil, SQLite sudah cukup.
- Domain yang diarahkan ke VPS, misalnya
git.example.com. - Ubuntu 24.04/26.04 (perintah di bawah memakai apt; distro lain menyesuaikan).
- Akses root atau sudo.
Panduan ini memakai instalasi binary resmi — paling mudah diperiksa dan di-upgrade, tanpa Docker.
1. Siapkan Git dan User
sudo apt update
sudo apt install -y git git-lfs
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control'
--group --disabled-password --home /home/git git
sudo mkdir /var/lib/forgejo
sudo chown git:git /var/lib/forgejo && sudo chmod 750 /var/lib/forgejo
sudo mkdir /etc/forgejo
sudo chown root:git /etc/forgejo && sudo chmod 770 /etc/forgejo 2. Pasang Binary
Ambil rilis terbaru dari forgejo.org/download, verifikasi signature sesuai instruksi di halaman itu, lalu:
sudo cp forgejo-*-linux-amd64 /usr/local/bin/forgejo
sudo chmod 755 /usr/local/bin/forgejo
forgejo --version 3. Pasang systemd Unit
Forgejo menyediakan unit resmi:
sudo wget -O /etc/systemd/system/forgejo.service
https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service
sudo systemctl daemon-reload
sudo systemctl enable --now forgejo
sudo systemctl status forgejo --no-pager Kalau kamu memakai PostgreSQL/MySQL, buka unit tersebut dan aktifkan baris Wants=/After= untuk database. Untuk SQLite, biarkan apa adanya.
4. Konfigurasi Awal
Buka http://IP-VPS:3000 dari browser. Isi halaman instalasi:
- Database: SQLite3 (atau PostgreSQL kalau sudah disiapkan).
- Server Domain:
git.example.com. - Forgejo Base URL:
https://git.example.com/. - Administrator Account: buat sekarang, supaya kamu tidak bergantung pada registrasi terbuka.
Setelah selesai, hentikan service dan rapikan permission:
sudo systemctl stop forgejo
sudo chmod 750 /etc/forgejo && sudo chmod 640 /etc/forgejo/app.ini Edit /etc/forgejo/app.ini untuk hal yang penting:
[server]
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
HTTP_PORT = 3000
HTTP_ADDR = 127.0.0.1
START_SSH_SERVER = true
SSH_PORT = 2222
SSH_DOMAIN = git.example.com
[service]
DISABLE_REGISTRATION = true HTTP_ADDR = 127.0.0.1 membuat Forgejo hanya bisa diakses lewat reverse proxy, bukan langsung dari internet.
Karena port 22 sudah dipakai SSH host, Git-over-SSH memakai 2222. Clone-nya jadi:
git clone ssh://[email protected]:2222/namamu/repo.git Lalu jalankan lagi:
sudo systemctl start forgejo 5. HTTPS dengan Reverse Proxy
Contoh dengan Caddy (paling singkat karena sertifikat diurus otomatis):
git.example.com {
reverse_proxy 127.0.0.1:3000
} Kalau memakai nginx, konfigurasi resmi Forgejo sudah menyertakan header yang dibutuhkan (Host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto). Pastikan client_max_body_size cukup besar untuk push pertama.
Buka firewall hanya untuk yang perlu:
sudo ufw allow 80,443/tcp
sudo ufw allow 2222/tcp 6. Backup yang Benar-Benar Bisa Dipulihkan
Forgejo punya perintah dump bawaan:
sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini
dump --file /var/backups/forgejo-$(date +%F).zip --verbose Simpan hasilnya di luar server — object storage, mesin lain, atau bucket yang kamu kontrol. Backup yang hanya ada di disk yang sama bukan backup.
Untuk pemulihan, siapkan prosedurnya sekarang, bukan saat insiden. Uji restore ke VPS lain minimal sekali.
7. Pindah dari GitHub
Tiga pilihan, dari yang paling mudah:
- Migrasi lewat UI — tombol “New Migration” di Forgejo, masukkan URL repo GitHub. Issues dan pull request ikut bila dipilih.
- Mirror — Forgejo bisa menarik repo secara berkala dari GitHub; berguna selama masa transisi.
- Push mirror manual — dari clone yang ada:
git remote add forgejo ssh://[email protected]:2222/namamu/repo.git
git push --mirror forgejo --mirror membawa semua branch, tag, dan ref. Setelah itu, jadikan Forgejo remote utama dan GitHub sebagai mirror (kalau masih ingin visibilitas di sana).
8. CI: Forgejo Actions
Forgejo Actions kompatibel dengan alur GitHub Actions untuk banyak kasus. Runner-nya (act_runner) didaftarkan dengan token dari panel admin, lalu menjalankan job di mesin yang kamu tentukan.
Untuk mulai, satu runner dengan label docker atau host sudah cukup. Jangan jalankan runner dengan akses root ke host produksi; batasi lewat container atau user terpisah.
Batas Jujur Self-Hosting
Self-hosting memindahkan ketergantungan, bukan menghilangkannya:
- Uptime jadi tanggung jawabmu. Tidak ada status page pihak lain yang menanggungnya.
- Patch keamanan harus rutin. Forgejo merilis patch berkala; pasang, jangan tunda.
- Backup dan restore harus diuji. Dump yang tidak pernah dicoba dipulihkan bukan jaminan.
- Upgrade butuh urutan. Backup dulu, ganti binary, lalu jalankan migrasi database (Forgejo menjalankannya saat start). Baca catatan rilis sebelum lompat versi besar.
Kalau kamu tidak punya kapasitas operasional untuk itu, forge terkelola tetap pilihan yang lebih baik. Self-host masuk akal ketika kontrol, data residency, atau ketahanan jalur produksi memang menjadi prioritas.
Ukuran yang Wajar
Untuk tim 5–50 orang, satu VPS 2 vCPU/4 GB dengan SQLite biasanya cukup. Simpan LFS dan arsip di disk terpisah atau object storage kalau repositorinya besar.
Di Dalang, VPS untuk Forgejo bisa dipesan sebagai layanan terpisah dari aplikasi produksi — sehingga maintenance forge tidak menjatuhkan situs, dan sebaliknya. Mulai dari dalang.io/products/vps.
Repositori yang kamu kendalikan tetap bisa diakses saat penyedia lain bermasalah. Itulah intinya.