VPS Murah Nevacloud

Punya Git Server Sendiri di VPS: Pasang Forgejo lewat Docker Compose

Pernah kepikiran, dari sekian repo yang kita push selama bertahun-tahun, berapa banyak yang benar-benar kita pegang sendiri? GitHub dan GitLab memang nyaman, tapi kenyamanan itu ada harganya: kode kita tinggal di infrastruktur orang lain, ikut aturan orang lain, dan kalau suatu hari layanannya berubah kebijakan atau akun kita kena limitasi — kita cuma bisa pasrah. Solusinya tidak harus dramatis: cukup pasang Forgejo di VPS yang sudah kita kelola, dan dalam satu sore kita punya git server sendiri yang lengkap dengan web UI, SSH, dan issue tracker.

Forgejo adalah fork komunitas dari Gitea yang kini berkembang mandiri — ringan, self-hosted, dan dirilis dalam irama terjadwal tiap kuartal. Versi stabil terbaru saat tulisan ini dibuat adalah v17.0.1 (rilis 26 Oktober 2026), sementara jalur LTS adalah 15.0.11 yang dukungannya berlanjut sampai Juli 2027. Oke, lanjuutt.. kita rakit sekarang juga.

Kenapa Forgejo, Bukan Sekadar Gitea atau Gitlab?

Tiga alasan praktis yang membuat Forgejo pas untuk VPS kecil:

  • Ringan. Satu container Docker dengan SQLite saja sudah cukup jalan nyaman di VPS 1 GB — tidak seperti GitLab yang praktis menuntut 4 GB+.
  • Perkembangan aktif dan terjadwal. Rilis mayor keluar tiap tiga bulan (v17.0 Oktober 2026, v18.0 dijadwalkan Januari 2027), jadi kita tidak memakai proyek yang setengah mati.
  • 100% komunitas. Forgejo dikelola lewat Codeberg dengan model tata kelola terbuka — tidak ada perusahaan tunggal yang bisa sekali tombak mengubah arah proyeknya, seperti yang pernah mengguncang ekosistem Gitea.

Kalau kita cuma butuh repo pribadi, wiki, dan pull request untuk tim kecil, ini lebih dari cukup.

Persiapan Singkat

Yang kita butuhkan:

  • VPS Ubuntu/Debian dengan Docker dan Docker Compose terpasang.
  • Satu subdomain, misalnya git.contoh.com, yang A record-nya menunjuk IP VPS.
  • Reverse proxy untuk HTTPS — Caddy atau Nginx, keduanya pernah kita bahas sebelumnya. Forgejo sendiri jalan di port 3000.

Langkah 1: Siapkan docker-compose.yml

Buat direktori kerja lalu file compose mengikuti pola resmi dari dokumentasi Forgejo:


networks:
  forgejo:
    external: false

services:
  server:
    image: codeberg.org/forgejo/forgejo:17
    container_name: forgejo
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - forgejo
    volumes:
      - ./forgejo:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"

Dua hal yang sering terlewat padahal penting: tag :17 otomatis mengikuti patch terbaru jalur 17.0.x (misalnya 17.0.4 kalau sudah rilis), dan port 222 dipetakan ke port 22 internal — sengaja supaya tidak bertabrakan dengan SSH utama VPS yang sudah duduk di port 22.

Langkah 2: Perbaiki Kepemilikan Folder Data

Ini jebakan nomor satu. Dokumentasi resmi menyatakan volume /data harus dimiliki oleh user/group dengan UID/GID yang sama dengan variabel di compose file — kalau tidak, container bisa saja menolak menyala. Sebelum up, jalankan:


sudo chown -R 1000:1000 ./forgejo
docker compose up -d

Lalu buka http://IP-VPS:3000 di browser untuk menyelesaikan wizard instalasi. Kalau penggunaan kita personal, database SQLite (default) sudah cukup dan tidak perlu container tambahan.

Langkah 3: Tutup Pintu Depan dengan Reverse Proxy

Arahkan subdomain git.contoh.com ke localhost:3000. Contoh blok Caddy cuma satu baris:


git.contoh.com {
    reverse_proxy localhost:3000
}

HTTPS otomatis terurus, dan sejak sini kita login lewat domain, bukan IP. Jangan lupa menutup port 3000 di firewall kalau tidak ingin dashboardnya bisa diakses langsung tanpa TLS.

Langkah 4: Sambungkan SSH Clone lewat Port 222

Supaya git@ clone berfungsi, kunci publik kita daftarkan di menu pengaturan akun Forgejo (Settings → SSH/GPG Keys). Lalu di laptop, tambahkan entri di ~/.ssh/config:


Host git.contoh.com
    Port 222
    User git

Uji koneksinya persis seperti di dokumentasi resmi:


ssh -F /dev/null [email protected] -p 222

Balasan “Hi there, <user>!” berarti semuanya sudah terpasang benar.

Uji Coba: Pindahkan Repo dari GitHub

Cara paling cepat membuktikan server baru ini hidup adalah memindahkan satu repo lama. Di mesin lokal, ambil salinan lengkap beserta semua branch-nya, lalu dorong ke Forgejo:


git clone --mirror [email protected]:username/repo-lama.git
cd repo-lama.git
git push --mirror [email protected]:username/repo-lama.git

Flag --mirror menyalin branch, tag, dan ref lainnya utuh — hasilnya identik dengan aslinya, bukan cuma branch main. Setelah selesai, buka repo di web UI dan periksa halaman Commits: jumlah serta tanggalnya harus cocok dengan sumber. Kalau cocok, kita baru saja memindahkan rumah kode kita sendiri, tanpa bergantung pada siapa pun.

Upgrade antar Versi: Yang Wajib Diperhatikan

Forgejo menerbitkan patch kapan pun ada perbaikan penting, tapi lompatan versi mayor (misalnya 16 → 17) menuntut langkah manual dan verifikasi manusia — tag :17 tidak akan membawa kita pindah jalur secara diam-diam, yang justru aman. Kebiasaan yang patut dipegang sejak awal: backup dulu, baru naikkan tag, baru docker compose up -d.

Buat yang tidak mau repot tiap kuartal, pakai jalur LTS 15.0 yang didukung sampai 15 Juli 2027 — trade-off-nya fitur baru datang lebih lambat.

Kalau Ada yang Gagal: Tiga Gejala Paling Umum

  • Container mati ulang terus. Hampir selalu soal kepemilikan folder ./forgejo — ulangi chown -R 1000:1000. Di host dengan SELinux aktif (Alma/Rocky), tambahkan flag :Z di volume: ./forgejo:/data:Z.
  • Git clone SSH timeout. Cek apakah port 222 terbuka di firewall cloud provider, dan uji dengan perintah ssh -F /dev/null di atas supaya ~/.ssh/config lama tidak menyesatkan hasil tes.
  • Lupa password admin dan tidak bisa masuk. Gunakan tool CLI di dalam container: docker exec -it forgejo forgejo admin user change-password -u nama-admin -p password-baru — jangan langsung utak-atik database.

Dan satu kebiasaan terakhir yang paling berharga: folder ./forgejo adalah seluruh hidup instance kita (repo, database SQLite, konfigurasi app.ini). Masukkan ke jadwal backup — restic atau rclone sama-sama cocok untuk ini. Git server tanpa backup itu ironi tingkat tinggi: kita lari dari risiko vendor lock-in cuma untuk membuat single point of failure sendiri. Wkwkwk.

Kesimpulan

Dalam empat langkah kita punya git server sendiri di VPS: Forgejo v17 di Docker, HTTPS lewat reverse proxy, SSH clone lewat port 222, dan data yang sepenuhnya ada di tangan kita. Yang menentukan nyaman-tidaknya jangka panjang bukan instalasinya, tapi dua kebiasaan kecil: backup rutin folder /data dan upgrade yang sadar-versi. Repo pertama yang layak di-push ke sana? Dotfiles kita sendiri — kecil, berguna, dan jadi bukti bahwa infrastruktur ini benar-benar milik kita. Selamat mencoba!

Baca juga

Nevacloud VPS Indonesia

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *