Gogs: Self-hosted Git yang Praktis
Posted on
Self-hosted Git? umumnya yang terlintas dibenak kita adalah Gitlab CE. Gitlab CE termasuk bagus, fiturnya banyak. Tapi, saya butuh yang sederhana, gak butuh fitur yang aneh-aneh. Gogs, jawabannya.
Lahirnya Golang, benar-benar membawa berkah. Gogs dibangun pakai Go, hasilnya single binary yang siap di run. Mantap kan? hahaha. Server kita tidak butuh dependensi apa-apa, kita hanya butuh database yag dibutuhkan Gogs. Lebih detail dokumentasi Dogs ada di laman dokumentasi Gogs.
Untuk database, saya memilih MySql, alasannya karena ada service lain yang pakai MySql, jadi ya sekalian saja. Kemudian saya pakai Nginx untuk Webserver dan reverse proxy. Sedangkan Gogs-nya saya memilih versi docker. Kok pakai docker? bukannya Gogs tinggal run binary? Yes, exactly. Saya pakai docker karena lebih sreg aja, kebetulan saya pakai docker untuk service lain. Jadi memudahkan manajemenku sendiri. Terakhir, untuk SSL saya pakai letsencrypt.
Snipset reverse proxy nginx untuk Gogs:
server {
server_name git.sumarsono.com;
#client_max_body_size 50M; # kalau upload data gede ke repo, pakai ini biar gak error
location / {
proxy_pass http://127.0.0.1:10017/;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/git.sumarsono.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/git.sumarsono.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = git.sumarsono.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name git.sumarsono.com;
listen 80;
return 404; # managed by Certbot
}
Snipset docker-compose.yml:
gogs:
container_name: gogs
image: gogs/gogs
restart: always
volumes:
- ./gogs-data:/data
ports:
- "10016:22"
- "10017:3000"
Tertarik dengan Gogs? langsung ke situs mereka saja.