Gogs adalah server git open source yang di-hosting sendiri (self-hosted) yang ditulis dalam Go. Gogs meliputi file editor repositori, pelacakan masalah, dan wiki bawaan.

Gogs adalah aplikasi yang ringan dan dapat diinstal pada sistem dengan sumber daya rendah. Jika Anda mencari alternatif untuk Gitlab dengan jejak memori yang jauh lebih kecil dan Anda tidak membutuhkan semua bell dan whistles yang ditawarkan Gitlab, maka Anda harus mencoba Gogs.

Tutorial ini mencakup langkah-langkah untuk menginstal dan mengkonfigurasi Gogs di Ubuntu 18.04. Instruksi yang sama berlaku untuk Ubuntu 16.04 dan distribusi berbasis Ubuntu lainnya.

Sebelum Memulai

Gogs dapat menggunakan database SQLite, PostgreSQL, atau MySQL /MariaDB untuk menyimpan semua datanya.

Dalam tutorial ini, kita akan menggunakan SQLite sebagai database. Jika SQLite belum diinstal pada sistem, Anda dapat menginstalnya dengan mengetik:

sudo apt install sqlite3

Untuk lapisan keamanan tambahan, disarankan untuk membuat firewall dasar. Anda dapat mengikuti langkah-langkah di Cara Setting Firewall dengan UFW di Ubuntu 18.04.

Mulai Install Gogs

Kami akan menginstal Gogs dari binary. Instalasi adalah proses yang sangat mudah.

Install Git

Langkah pertama adalah instal Git di server Anda. Untuk melakukannya, refresh indeks paket lokal dan instal paket git dengan menjalankan perintah berikut sebagai user sudo:

sudo apt update
sudo apt install git

Verifikasi installasi dengan mengetik perintah berikut

git --version
git version 2.17.1

Buat user Git

Buat user sistem baru untuk menjalankan service Gogs dengan mengetik:

sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git

Perintah akan membuat user dan mengatur direktori home ke /home/git. Outputnya akan terlihat seperti di bawah ini:

Adding system user `git' (UID 111) ...
Adding new group `git' (GID 116) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...

Download binary Gogs

Kunjungi halaman download Gogs dan download binary terbaru sesuai dengan arsitektur sistem Anda. Pada saat penulisan, versi terbaru adalah 0.11.86, jika ada versi baru yang tersedia ubah variabelVERSION dalam perintah di bawah ini.

Unduh arsip Gogs di direktori / tmp menggunakan perintah wget berikut:

VERSION=0.11.86

wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp

Setelah unduhan selesai, ekstrak file tar.gz Gogs dan pindahkan ke direktori /home/git:

sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git

Jalankan perintah berikut untuk mengubah kepemilikan direktori instalasi Gogs ke git pengguna dan grup:

sudo chown -R git: /home/git/gogs

Buat Unit File Systemd

Gogs dilengkapi dengan unit file Systemd yang sudah dikonfigurasi untuk cocok dengan pengaturan kita secara otomatis.

Salin file ke direktori /etc/systemd/system/ dengan mengetik:

sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/

Setelah selesai, mulai dan aktifkan layanan Gogs:

sudo systemctl start gogs
sudo systemctl enable gogs

Verifikasi bahwa layanan dimulai dengan sukses:

* gogs.service - Gogs
   Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-04-25 04:13:44 PDT; 9s ago
 Main PID: 14376 (gogs)
    Tasks: 8 (limit: 2319)
   CGroup: /system.slice/gogs.service
           `-14376 /home/git/gogs/gogs web

Instal Gogs menggunakan web installer

Sekarang Gogs sudah diunduh dan dijalankan, sekarang saatnya menyelesaikan instalasi melalui antarmuka web.

Buka browser Anda, ketik http://DOMAIN_atau_IP:3000 dan layar yang serupa dengan yang berikut akan muncul:

Install Gogs di Ubuntu 1

Database Settings:

  • Database Type: SQLite3
  • Path: Gunakan PATH absolute misal /home/git/gogs/gogs.db

Application General Settings

  • Application Name: Masukkan nama organisasi
  • Repository Root Path: Biarkan default /home/git/gogs-repositories
  • Run User: git
  • Domain: Masukkan domain atau alamat IP server Anda.
  • SSH Port: 22, ubah bagian ini jika SSH listening pada port lain
  • HTTP Port: 3000
  • Application URL: Gunakan http dan domain atau alamat IP server Anda.
  • Log Path: Biarkan default/home/git/gogs/log

Anda juga dapat mengubah pengaturan di kemudian hari dengan mengedit file konfigurasi Gogs secara manual (baik dengan text editor nano atau vim).

Setelah selesai tekan tombol “Install Gogs”. Instalasi akan berjalan instant dan ketika selesai Anda akan diarahkan ke halaman login.

Klik tautan “Sign up now” .

Pengguna yang terdaftar pertama, secara otomatis akan ditambahkan ke grup Admin.

Dengan begini, Gogs telah diinstal pada mesin Ubuntu Anda.

Gogs + Nginx sebagai SSL Reverse Proxy

Langkah ini opsional tetapi sangat dianjurkan. Untuk menggunakan Nginx sebagai reverse proxy, Anda harus memiliki domain atau subdomain yang menunjuk ke IP publik server Anda. Dalam tutorial ini, kita akan menggunakan gogs.example.com.

Pertama, instal Nginx dan hasilkan sertifikat SSL gratis dari Let’s Encrypt dengan mengikuti panduan di bawah ini:

Setelah selesai, buka editor teks Anda dan edit file server block domain:

sudo nano /etc/nginx/sites-enabled/gogs.example.com
server {
    listen 80;
    server_name gogs.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://gogs.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name gogs.example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    client_max_body_size 50m;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/gogs.example.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/gogs.example.com.access.log;
    error_log /var/log/nginx/gogs.example.com.error.log;

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}

Jangan lupa mengganti gogs.example.com dengan domain Gogs Anda dan set jalur yang benar ke file sertifikat SSL.

Langkah selanjutnya adalah Restart Nginx agar perubahan diterapkan:

sudo systemctl restart nginx

Selanjutnya, kita perlu mengubah domain Gogs dan url root. Untuk melakukannya, buka file konfigurasi dan edit baris berikut:

sudo nano /home/git/gogs/custom/conf/app.ini
[server]
DOMAIN           = gogs.example.com
ROOT_URL         = https://gogs.example.com/

Restart Gogs dengan mengetik :

sudo systemctl restart gogs

Pada titik ini, Gogs dikonfigurasi dan Anda dapat mengaksesnya di: https://gogs.example.com

Konfigurasi Email Notifikasi Gogs

Agar Gogs dapat mengirim email pemberitahuan, Anda dapat menginstal Postfix atau menggunakan layanan email transaksional seperti SendGrid, MailChimp, MailGun atau SES.

Untuk mengaktifkan pemberitahuan email, buka file konfigurasi dan edit baris berikut:

sudo nano /home/git/gogs/custom/conf/app.ini
[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = USER_SMTP
PASSWD  = MASUKKAN_PASSWORD_SMTP

Pastikan Anda memasukkan informasi SMTP server dengan benar.

Mulai ulang layanan Gogs agar perubahan diterapkan:

sudo systemctl restart gogs

Gogs juga memungkinkan Anda untuk terhubung ke Slack dengan membuat web webhook dan mengirim pemberitahuan ke channel Slack Anda.

Cara Upgrade Gogs di Ubuntu 18.04

Untuk upgrade Gogs, beberapa langkah manual berikut diperlukan.

  1. Pertama-tama hentikan layanan Gogs:
    sudo systemctl stop gogs
  2. Rename direktori instalasi Gogs.
    sudo mv /home/git/gogs{,_old}
  3. Unduh versi Gogs terbaru dan pindahkan ke direktori /home/git:
    VERSION=<THE_LATEST_GOGS_VERSION>
    wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
    sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git

    Pastikan Anda mengubah VERSION dengan versi rilis Gogs yang terbaru (versi release).

  4. Copy direktori customdatalog direktori yang diekstraksi menggunakan perintah rsync berikut :
    sudo rsync -a /home/git/gogs_old/{custom,data,log} /home/git/gogs/
  5. Terakhir, start Gogs service:
    sudo systemctl restart gogs

Selesai.

Kesimpulan

Tutorial ini memandu Anda melalui instalasi dan konfigurasi Gogs di Ubuntu 18.04. Anda sekarang dapat membuat project pertama Anda dan mulai menggunakan server Gogs baru Anda.