Repo pribadi di GitHub itu nyaman sampai satu hari Anda sadar semua kode, issue, dan catatan desain ada di komputer orang lain. Saya tidak sedang menakut-nakuti. Saya hanya pernah mengalami momen ketika satu repositori dihapus karena pemilik akun salah pencet, dan tidak ada tombol undo.

Gitea adalah server Git yang ringan. Bukan "GitHub mini" yang serba kekurangan — untuk kebutuhan satu orang atau satu tim kecil, dia justru lebih tenang. Tidak ada notifikasi merah, tidak ada rekomendasi, tidak ada halaman yang mencoba menjual sesuatu.
Yang saya pakai: satu container, satu database SQLite, dan folder data. Total RAM kurang dari 300 MB untuk pemakaian normal.
Docker Compose yang cukup
# docker-compose.yml
services:
gitea:
image: gitea/gitea:1
container_name: gitea
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3
- GITEA__server__DOMAIN=git.contoh.com
- GITEA__server__SSH_DOMAIN=git.contoh.com
- GITEA__server__ROOT_URL=https://git.contoh.com/
- GITEA__server__HTTP_PORT=3000
- GITEA__server__SSH_PORT=2222
- GITEA__server__SSH_LISTEN_PORT=22
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:22"
Jalankan dengan docker compose up -d, lalu buka http://IP-SERVER:3000. Instalasi pertama akan meminta membuat akun admin. Selesai — tidak ada wizard panjang, tidak ada email verifikasi.
Perhatikan dua port SSH. Di dalam container, Gitea mendengarkan SSH di port 22. Di host, saya memetakannya ke 2222 karena port 22 sudah dipakai SSH server yang saya gunakan untuk masuk ke mesin itu. Ini penyebab error nomor satu saat orang mencoba Gitea pertama kali: clone gagal karena URL yang diberikan menunjuk ke port yang salah.
Kenapa SQLite bukan pilihan buruk
Banyak panduan langsung menyuruh PostgreSQL. Untuk satu pengguna dengan beberapa repo, SQLite lebih dari cukup, dan backup-nya sesederhana menyalin satu file. PostgreSQL masuk akal ketika ada banyak pengguna aktif bersamaan atau Anda berencana menjalankan Gitea Actions dengan beban tinggi.
Keputusan ini bukan selamanya. Gitea bisa dipindah dari SQLite ke PostgreSQL nanti, dan dokumentasinya menyediakan langkahnya. Yang penting: jangan menunda proyek hanya karena memilih database yang "lebih benar".
HTTPS dan domain
Jangan buka Gitea langsung ke internet tanpa TLS. Dua cara yang wajar: reverse proxy Caddy di depan container, atau Cloudflare Tunnel kalau Anda tidak ingin membuka port sama sekali.
Dengan Caddy, cukup satu blok:
git.contoh.com {
reverse_proxy 127.0.0.1:3000
}
Caddy akan mengurus sertifikat otomatis. Setelah domain aktif, ubah ROOT_URL di compose ke https://git.contoh.com/ dan restart container. Kalau URL ini salah, clone lewat HTTPS akan menghasilkan tautan aneh, dan avatar bisa gagal dimuat.
Backup yang benar
Menyalin folder data saat container hidup itu seperti memfoto ruangan sambil orang-orangnya masih berjalan. Kadang hasilnya bagus, kadang ada yang terpotong. Gitea menyediakan perintah resmi:
docker exec -u git gitea /usr/local/bin/gitea dump -c /data/gitea/conf/app.ini
Hasilnya file zip berisi database, repositori, konfigurasi, dan data lain. Simpan ke luar mesin — bukan di folder yang sama. Backup yang tinggal satu disk dengan sumbernya bukan backup; itu cuma salinan.
Untuk jadwal, pasangkan systemd timer atau cron. Saya menjalankannya setiap malam, menyimpan tujuh versi terakhir, dan menguji restore setiap tiga bulan. Uji restore itu bagian yang paling sering dilewatkan orang, padahal tanpa itu Anda hanya punya keyakinan, bukan backup.
Yang tidak perlu Anda harapkan
Gitea bukan pengganti penuh GitHub. Kalau proyek Anda bergantung pada marketplace Actions, integrasi Dependabot, atau komunitas yang menemukan bug lewat issue publik, tetap di GitHub. Gitea unggul untuk hal lain: repo privat, kendali penuh, dan tidak ada kuota yang berubah diam-diam.
Gitea Actions sekarang cukup matang untuk CI sederhana — build, test, deploy. Tapi ekosistem action-nya tidak seluas GitHub, dan Anda akan menulis beberapa workflow sendiri. Itu biaya yang wajar, bukan kekurangan fatal.
Kesalahan yang sering terjadi
- UID/GID salah. Container berjalan sebagai user 1000, tapi folder data dimiliki root. Akibatnya repo tidak bisa ditulis. Perbaiki dengan
chown -R 1000:1000 data. - Port SSH bentrok. Gitea gagal start karena host sudah memakai port 22. Petakan ke port lain dan sesuaikan
SSH_PORT. - ROOT_URL tidak diperbarui. Setelah pindah domain, clone URL dan webhook masih menunjuk alamat lama.
- Backup hanya database. Repo Git ada di folder terpisah;
gitea dumpmenangani keduanya, menyalin satu file SQLite tidak. - Lupa mengganti password admin default. Segera setelah instalasi, bukan nanti.
Pertanyaan yang sering muncul
Apakah bisa impor repo dari GitHub?
Bisa. Menu New Migration menerima URL GitHub, GitLab, atau clone biasa. Untuk repo besar, lakukan lewat koneksi yang stabil dan siapkan ruang disk dua kali ukuran repo.
Bisa dipakai untuk tim?
Bisa, dengan catatan Anda siap mengurus backup, pembaruan, dan keamanan sendiri. Gitea mendukung organisasi, tim, dan permission per repo — cukup untuk tim 5–20 orang.
Apakah repo saya tetap jalan kalau server mati?
Repo lokal Anda tetap ada, tapi remote-nya tidak bisa diakses. Itu beda penting: Git terdesentralisasi, jadi pekerjaan tidak hilang selama Anda rajin commit dan push ke remote lain.
Sumber
Baca juga:
0 comments:
Post a Comment