Gogs: Self-hosted Git yang Praktis

Gogs: Self-hosted Git yang Praktis

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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:

1
2
3
4
5
6
7
8
9
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.