Git Anda sendiri: Forgejo atau Gitea
Cara menyiapkan server repositori pribadi dengan antarmuka web, akses SSH, dan build run — serta apa yang harus disalin agar kode Anda tidak hilang.
Diperbarui 23 Agustus 2026
Anda memerlukan Git sendiri ketika kode tidak boleh keluar ke platform milik orang lain, atau ketika Anda tidak ingin ada batasan pada repositori privat dan menit build. Forgejo dan Gitea adalah dua proyek yang sangat terkait (Forgejo lahir dari Gitea); keduanya terpasang dalam satu container dan berjalan di mesin yang sederhana.
Apa yang harus dipilih dan berapa banyak sumber daya
Hampir tidak ada perbedaan dalam pekerjaan sehari-hari: antarmuka, issues, pull request, mirror, Actions untuk build. Forgejo dikembangkan oleh komunitas, Gitea oleh perusahaan. Pilih Forgejo jika independensi proyek penting bagi Anda.
Untuk dua atau tiga orang, VDS-1 sudah cukup. Begitu Anda menambahkan runner untuk build, ambil VDS-3 atau lebih tinggi: build menghabiskan CPU dan disk, dan kecepatan disk dibatasi oleh tier.
Memasang via Compose
services:
forgejo:
image: codeberg.org/forgejo/forgejo:11
container_name: forgejo
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
ports:
- "3000:3000"
- "2222:22"
docker compose up -d
docker compose logs -f forgejo
Buka http://<machine-address>:3000 dan lakukan konfigurasi awal. Pengguna pertama yang dibuat menjadi administrator.
Anda tidak perlu membiarkan port 3000 terbuka ke luar. Tutup port tersebut dan letakkan web server dengan sertifikat di depan layanan — dengan begitu Anda mendapatkan HTTPS dan tidak menunjukkan panel konfigurasi kepada orang luar. Sampai konfigurasi selesai, siapa pun yang membuka alamat tersebut bisa lebih dulu membuat administrator.
Akses SSH
Port 22 di dalam container diteruskan ke 2222, karena 22 dipakai oleh SSH sistem. Di pengaturan repositori, alamatnya akan terlihat seperti ini:
git clone ssh://git@example.com:2222/user/repo.git
Jika Anda ingin git@example.com:user/repo.git yang biasa tanpa port, biarkan 2222 untuk container dan atur penerusan di host melalui SSH sistem, atau pindahkan SSH administratif ke port lain (lihat perlindungan akses).
Build
Actions dijalankan oleh runner terpisah — container forgejo-runner, yang mendaftar dengan token dari pengaturan administrator. Berikan akses ke Docker socket hanya dengan sengaja: itu setara dengan root di mesin. Untuk build, sebaiknya batasi runner berdasarkan memori dan CPU — lihat batas sumber daya.
Apa yang harus di-backup
Semua state disimpan di volume ./data: repositori, database, lampiran, konfigurasi. Backup dilakukan seperti ini:
docker compose stop forgejo
restic -r <repository> backup ./data
docker compose start forgejo
Anda perlu menghentikan layanan jika menggunakan SQLite — jika tidak, snapshot database bisa tidak konsisten. Dengan PostgreSQL, pg_dump sudah cukup tanpa menghentikan layanan. Untuk detail lebih lanjut, lihat apa tepatnya yang harus di-backup dan Restic.
Kesalahan umum
- Lupa tentang ukuran repositori. Build server game dan media dengan cepat menghabiskan ruang disk: 40 GB dari tier awal habis tanpa disadari.
- Email belum diatur. Tanpa itu, undangan dan reset kata sandi tidak berfungsi. Lebih mudah menghubungkan SMTP eksternal daripada mengatur server mail sendiri.
- Memperbarui tanpa backup. Mengubah versi major mengubah skema database. Backup dulu, baru
docker compose pull— lihat memperbarui container.