DEV Community

Cover image for Cara install Gitea di Ubuntu 18.04
Erol Joudy for Kawanua Indie Developer

Posted on • Edited on • Originally published at blog.erol.dev

Cara install Gitea di Ubuntu 18.04

Gitea adalah sebuah git server yang merupakan solusi bagi para developer yang ingin mencari alternatif menyimpan koleksi repository. Gitea merupakan sebuah proyek open source berbasis Go.

Salah satu keunggulan dari Gitea dibanding server self-hosted populer seperti Gitlab dan sejenisnya, adalah membutuhkan resource yang minim namun memiliki fitur yang melimpah seperti Github.

Konfigurasi server untuk tutorial ini

Tutorial ini akan membahas cara instalasi Gitea di Ubuntu 18.04.

Persiapan

Gitea mendukung penggunaan MySQL/MariaDB, SQLite, dan PostgreSQL sebagai backend database. Namun dalam artikel kali ini, akan menggunakan SQLite.

Apabila SQLite belum terpasang pada sistem, silahkan install dengan menggunakan perintah berikut.

sudo apt update
sudo apt install -y sqlite3
Enter fullscreen mode Exit fullscreen mode

Instalasi Gitea

Gitea memungkinkan penggunakan Docker image sebagai sarana untuk instalasi, juga tersedia dalam bentuk binary, source, dan package.

Pada artikel ini, instalasi akan menggunakan bentuk binary. Silahkan ikuti langkah instalasi berikut.

Install Git

Langkah pertama adalah dengan memasang Git pada server, jika belum ada sebelumnya.

sudo apt install git
Enter fullscreen mode Exit fullscreen mode

Kemudian lakukan verifikasi instalasi Git dengan cara,

git --version
Enter fullscreen mode Exit fullscreen mode

Outputnya akan seperti dibawah ini.

git version 2.25.1
Enter fullscreen mode Exit fullscreen mode

Tambahkan user git

Tambah sebuah user baru untuk menjalankan Gitea dengan cara berikut.

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

Perintah ini akan secara otomatis menambahkan sebuah user bernama git dan mengatur direktori home pada /home/git. Outputnya akan mirip dengan dibawah ini.

Adding system user `git' (UID 113) ...
Adding new group `git' (GID 117) ...
Adding new user `git' (UID 113) with group `git' ...
Creating home directory `/home/git' ...
Enter fullscreen mode Exit fullscreen mode

Unduh binary milik Gitea

Kunjungi halaman unduhan Gitea dan lihat versi terakhir yang tersedia untuk diunduh. Disarankan jangan mengambil yg masih RC (release candidate). Pada saat artikel ini dibuat, versi terakhir saat artikel ini ditulis adalah 1.13.4. Apabila terdapat versi yang lebih baru, silahkan ganti variabel dari VERSION pada perintah dibawah.

VERSION=1.13.4
sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
Enter fullscreen mode Exit fullscreen mode

Perintah diatas adalah perintah untuk mengunduh Gitea ke direktori /tmp dan selanjutnya pindahkan ke direktori /usr/local/bin.

sudo mv /tmp/gitea /usr/local/bin
Enter fullscreen mode Exit fullscreen mode

Setelah itu, jalankan perintah berikut secara berurutan.

sudo chmod +x /usr/local/bin/gitea
sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git: /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
Enter fullscreen mode Exit fullscreen mode

Membuat file unit systemd

Unduh filenya dengan menggunakan perintah berikut.

sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/
Enter fullscreen mode Exit fullscreen mode

Atau dengan cara manual, buat file gitea.service di direktori /etc/systemd/system/ dengan menyalin kode dibawah ini.

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
###
# Don't forget to add the database service requirements
###
#
#Requires=mysql.service
#Requires=mariadb.service
#Requires=postgresql.service
#Requires=memcached.service
#Requires=redis.service
#
###
# If using socket activation for main http/s
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (You can also provide gitea an http fallback and/or ssh socket too)
#
# An example of /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web Socket
## PartOf=gitea.service
##
## [Socket]
## Service=gitea.service
## ListenStream=<some_port>
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file
# (manually creating /run/gitea doesn't work, because it would not persist across reboots)
#RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini  --custom-path /home/git/custom
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you want to bind Gitea to a port below 1024, uncomment
# the two values below, or use socket activation to pass Gitea its ports as above
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
###

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

Setelah selesai, jalankan perintah ini secara berurutan untuk menjalankan Gitea.

sudo systemctl daemon-reload
sudo systemctl enable --now gitea
Enter fullscreen mode Exit fullscreen mode

Pastikan Gitea sudah aktif dengan mengeksekusi perintah berikut.

sudo systemctl status gitea
Enter fullscreen mode Exit fullscreen mode

Outputnya akan mirip dengan dibawah.

● gitea.service - Gitea (Git with a cup of tea)
   Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
   Active: active (running) since 5s ago
 Main PID: 5111 (gitea)
    Tasks: 7
   Memory: 90.8M
      CPU: 542ms
   CGroup: /system.slice/gitea.service
           └─5111 /usr/local/bin/gitea web --config /etc/gitea/app.ini
...
Enter fullscreen mode Exit fullscreen mode

Konfigurasi awal Gitea

Pada tahap ini Gitea sudah aktif, saatnya untuk melakukan pengaturan lewat web browser.

Secara default, Gitea beroperasi menggunakan port 3000. Pada sistem yang menggunakan ufw firewall, diharuskan untuk membuka port ini dengan perintah berikut.

sudo ufw allow 3000/tcp
Enter fullscreen mode Exit fullscreen mode

Buka browser dan akses alamat http://HOSTNAME_ANDA:3000 atau http://IP_SERVER:3000 dan tampilannya akan seperti ini.

Alt Text

Klik Explore pada menu kiri atas yang akan membuka halaman pengaturan Gitea.

Alt Text

Adapun pengaturan yang disarankan adalah sebagai berikut.

Database Settings

  • Database Type: SQLite3
  • Path: /var/lib/gitea/data/gitea.db

General Settings

  • Site Title: Enter your organization name.
  • Repository Root Path: /home/git/gitea-repositories
  • Git LFS Root Path: /var/lib/gitea/data/lfs
  • Run As Username: git
  • SSH Server Domain: Masukkan domain atau nomor IP server.
  • SSH Port: 22, ganti apabila SSH menggunakan port yang lain.
  • Gitea HTTP Listen Port: 3000
  • Gitea Base URL: Masukkan http dan nama domain atau nomor IP server.
  • Log Path: /var/lib/gitea/log

Pengaturan diatas bisa diatur ulang kemudian dengan cara mengedit langsung file konfigurasi Gitea.

Klik Install Gitea. Dalam waktu singkat browser akan membuka halaman login.

Klik Register dan lakukan pendaftaran user baru. User ini akan secara otomatis menjadi administrator.

Untuk menyelesaikan tahap instalasi Gitea, jalankan perintah berikut ini.

sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini
Enter fullscreen mode Exit fullscreen mode

Konfigurasi Nginx sebagai Proxy SSL

Tahap ini akan menunjukkan cara melakukan konfigurasi Nginx dan Lets Encrypt, agar Gitea dapat diakses via koneksi https dan tidak lagi menggunakan port. Tidak harus, namun sangat direkomendasikan.

Artikel ini akan menggunakan git.contoh.com sebagai nama domain. Cek kembali pengaturan DNS dan pastikan nama domain sudah diarahkan ke alamat IP server ini, bisa dicek menggunakan perintah berikut.

dig git.contoh.com +short
Enter fullscreen mode Exit fullscreen mode

Output yang diharapkan adalah sebuah nomor IP, yaitu IP server ini.

Install Nginx

Install Nginx dengan perintah berikut.

sudo apt update
sudo apt install nginx
Enter fullscreen mode Exit fullscreen mode

Lalu periksa apakah berjalan normal dengan perintah ini.

sudo systemctl status nginx
Enter fullscreen mode Exit fullscreen mode

Outputnya akan terlihat mirip seperti ini.

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since 1min 1s ago
     Docs: man:nginx(8)
 Main PID: 30035 (nginx)
    Tasks: 2 (limit: 661)
   CGroup: /system.slice/nginx.service
           ├─30035 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─30038 nginx: worker process
...
Enter fullscreen mode Exit fullscreen mode

Lakukan konfigurasi pada firewall untuk nginx, jika menggunakan ufw firewall lakukan perintah berikut secara berurutan.

sudo ufw disable
sudo ufw allow 'Nginx Full'
sudo ufw enable
Enter fullscreen mode Exit fullscreen mode

Periksa status firewall dengan cara ini.

sudo ufw status
Enter fullscreen mode Exit fullscreen mode

Outputnya kurang lebih akan terlihat seperti berikut.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx Full                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx Full (v6)            ALLOW       Anywhere (v6)
Enter fullscreen mode Exit fullscreen mode

Setelah itu buka browser dan coba akses alamat http://IP_ADDRESS, apabila terlihat halaman dengan tulisan,

Welcome to nginx!

Berarti langkah instalasi Nginx selesai. Cara instalasi diatas bisa juga dibaca pada artikel berikut.

Buat server block

Langkah selanjutnya, adalah membuat server block untuk domain git.contoh.com.

Pertama, sediakan direktori yang akan menjadi tempat menaruh semua file website nantinya. Jalankan perintah berikut.

sudo mkdir -p /var/www/git.contoh.com/public_html
Enter fullscreen mode Exit fullscreen mode

Selanjutnya buat file index.html yang akan menjadi halaman utama dari domain git.contoh.com dengan menjalankan perintah berikut.

sudo vim /var/www/git.contoh.com/public_html/index.html
Enter fullscreen mode Exit fullscreen mode

Pada editor teks yang terbuka, salin kode dibawah ini atau silahkan gunakan kode milik sendiri.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to git.contoh.com</title>
  </head>
  <body>
    <h1>Success! git.contoh.com home page!</h1>
  </body>
</html>
Enter fullscreen mode Exit fullscreen mode

Simpan dan tutup editor teksnya, lalu eksekusi perintah berikut.

sudo chown -R www-data: /var/www/git.contoh.com
Enter fullscreen mode Exit fullscreen mode

Langkah kedua, pembuatan server block dengan cara berikut.

sudo vim /etc/nginx/sites-available/git.contoh.com
Enter fullscreen mode Exit fullscreen mode

Pada editor teks yang terbuka, gunakan kode dibawah ini.

server {
    listen 80;
    listen [::]:80;

    root /var/www/git.contoh.com/public_html;

    index index.html;

    server_name git.contoh.com;

    access_log /var/log/nginx/git.contoh.com.access.log;
    error_log /var/log/nginx/git.contoh.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}
Enter fullscreen mode Exit fullscreen mode

Untuk mengaktifkan konfigurasi server block diatas, jalankan perintah berikut.

sudo ln -s /etc/nginx/sites-available/git.contoh.com /etc/nginx/sites-enabled/
Enter fullscreen mode Exit fullscreen mode

Selanjutnya cek konfigurasi Nginx jika terdapat error.

sudo nginx -t
Enter fullscreen mode Exit fullscreen mode

Jika tanpa error, outputnya akan terlihat seperti berikut.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Enter fullscreen mode Exit fullscreen mode

Restart Nginx.

sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

Silahkan cek server block yang baru dibuat apakah berfungsi dengan baik. Caranya dengan mengakses via browser alamat http://git.contoh.com, hasil yang diharapkan adalah terlihat sebuah halaman yang bertuliskan,

Success! git.contoh.com home page!

Cara instalasi server block untuk Nginx bisa juga dibaca pada artikel berikut.

Proteksi server block dengan Let's Encrypt

Instalasi Certbot

Untuk mendaftarkan certbot, jalankan perintah berikut secara berurutan. Perintah pada baris terakhir akan membutuhkan waktu yang agak lama, harap sabar menunggu hingga selesai.

sudo apt install certbot
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Enter fullscreen mode Exit fullscreen mode

Pendaftaran sertifikat SSL dari Let’s Encrypt

Jalankan perintah berikut secara berurutan.

mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
Enter fullscreen mode Exit fullscreen mode

Buat file letsencrypt.conf dengan cara berikut.

sudo vim /etc/nginx/snippets/letsencrypt.conf
Enter fullscreen mode Exit fullscreen mode

Salin dan isi kode dibawah ini.

location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan dan lanjutkan membuat file kedua yaitu ssl.conf.

sudo vim /etc/nginx/snippets/ssl.conf
Enter fullscreen mode Exit fullscreen mode

Salin dan isi kode dibawah ini.

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan, selanjutnya file letsencrypt.conf harus dideklarasikan pada server block dengan cara berikut.

sudo vim /etc/nginx/sites-available/git.contoh.com
Enter fullscreen mode Exit fullscreen mode

Tambahkan baris kode berikut ini dalam file tersebut.

  include snippets/letsencrypt.conf;
Enter fullscreen mode Exit fullscreen mode

Konfigurasinya sekarang kurang lebih akan terlihat seperti ini.

server {
    listen 80;
    listen [::]:80;

    root /var/www/git.contoh.com/public_html;

    index index.html;

    server_name git.contoh.com;

    access_log /var/log/nginx/git.contoh.com.access.log;
    error_log /var/log/nginx/git.contoh.com.error.log;

    include snippets/letsencrypt.conf;

    location / {
        try_files $uri $uri/ =404;
    }
}
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan, verifikasi kembali konfigurasinya jika sudah benar.

sudo nginx -t
Enter fullscreen mode Exit fullscreen mode

Jika bebas error, lanjutkan dengan me-restart nginx.

sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

Sesudah restart, jalankan perintah berikut untuk mendaftarkan sertifikat SSL untuk server block domain yang baru dibuat diatas. Perhatikan, jangan lupa tulisan ALAMAT_EMAIL diganti dengan alamat email milik Anda.

sudo certbot certonly --agree-tos --email ALAMAT_EMAIL --webroot -w /var/lib/letsencrypt/ -d git.contoh.com
Enter fullscreen mode Exit fullscreen mode

Output yang dihasilkan apabila sertifikat SSL berhasil diperoleh, akan terlihat seperti dibawah ini.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/git.contoh.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/git.contoh.com/privkey.pem
   Your cert will expire on 2021-06-28. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
Enter fullscreen mode Exit fullscreen mode

Sekarang setelah sertifikat SSL sudah diperoleh, edit kembali file konfigurasi server block.

sudo vim /etc/nginx/sites-available/git.contoh.com
Enter fullscreen mode Exit fullscreen mode

Salin dan update dengan menggunakan kode dibawah ini.

server {
    listen 80;
    server_name git.contoh.com;

    root /var/www/git.contoh.com/public_html;

    index index.html;

    include snippets/letsencrypt.conf;

    access_log /var/log/nginx/git.contoh.com.access.log;
    error_log /var/log/nginx/git.contoh.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.contoh.com;

    root /var/www/git.contoh.com/public_html;

    index index.html;

    ssl_certificate /etc/letsencrypt/live/git.contoh.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.contoh.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/git.contoh.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # . . . kode lainnya
}
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan, verifikasi kembali konfigurasinya jika sudah benar.

sudo nginx -t
Enter fullscreen mode Exit fullscreen mode

Jika bebas error, lanjutkan dengan me-restart nginx.

sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

Buka browser, lalu coba akses domain kali dengan menggunakan https://git.contoh.com.

Pengaturan cronjob untuk certbot

Langkah ini bertujuan untuk memastikan sertikat SSL Let's Encrypt diperpanjang secara otomatis, ketika akan habis masa berlakunya dalam waktu 30 hari.

Pertama, edit cronjob milik certbot dengan perintah ini.

sudo vim /etc/cron.d/certbot
Enter fullscreen mode Exit fullscreen mode

Ubah baris cronjob yang sudah ada menjadi seperti dibawah ini.

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan diatas, selanjutnya untuk mengecek proses perpanjangan sertifikat SSL, bisa dicoba dengan perintah --dry-run berikut ini.

sudo certbot renew --dry-run
Enter fullscreen mode Exit fullscreen mode

Jika tidak muncul error, maka outputnya akan terlihat seperti ini.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/git.contoh.com/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
Enter fullscreen mode Exit fullscreen mode

Cara memproteksi Nginx dengan Let's Encrypt bisa juga dibaca pada artikel berikut.

Konfigurasi lanjutan Gitea

Edit file konfigurasi server block untuk domain git.contoh.com dengan menjalankan perintah berikut.

sudo vim /etc/nginx/sites-enabled/git.contoh.com
Enter fullscreen mode Exit fullscreen mode

Pada editor teks yang terbuka, salin dan update file dengan menggunakan kode dibawah ini.

server {
    listen 80;
    server_name git.contoh.com;

    include snippets/letsencrypt.conf;
    return 301 https://git.contoh.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.contoh.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/git.contoh.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.contoh.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/git.contoh.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/git.contoh.com.access.log;
    error_log /var/log/nginx/git.contoh.com.error.log;

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

Enter fullscreen mode Exit fullscreen mode

Simpan perubahan, verifikasi kembali konfigurasinya jika sudah benar.

sudo nginx -t
Enter fullscreen mode Exit fullscreen mode

Jika bebas error, lanjutkan dengan me-restart nginx.

sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

Selanjutnya ganti url default Gitea dengan domain git.contoh.com lewat perintah berikut.

sudo vim /etc/gitea/app.ini
Enter fullscreen mode Exit fullscreen mode

Pada editor teks, cari bagian [server] kemudian ubah menjadi seperti berikut ini.

[server]
DOMAIN           = git.contoh.com
ROOT_URL         = https://git.contoh.com/
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan, dan restart Gitea.

sudo systemctl restart gitea
Enter fullscreen mode Exit fullscreen mode

Sampai pada langkah ini, Gitea sudah bisa diakses menggunakan alamat https://git.contoh.com

Konfigurasi notifikasi email

Supaya Gitea bisa mengirimkan email notifikasi, dibutuhkan pengaturan lanjutan pada file konfigurasi Gitea.

Buka file konfigurasi Gitea.

sudo vim /etc/gitea/app.ini
Enter fullscreen mode Exit fullscreen mode

Cari bagian [mailer] dan lakukan perubahan di bagian itu dengan memasukkan konfigurasi SMTP yang tepat. Konfigurasi yang salah, akan menyebabkan email notifikasi tidak akan terkirim.

[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan, dan restart kembali Gitea.

sudo systemctl restart gitea
Enter fullscreen mode Exit fullscreen mode

Untuk melakukan pengecekan apakah berfungsi dengan baik, kunjungi: Site Administration > Configuration > SMTP Mailer Configuration, dan cobalah untuk mengirim Test Email dari situ.

Upgrade Gitea

Stop Gitea terlebih dulu dengan perintah berikut.

sudo systemctl stop gitea
Enter fullscreen mode Exit fullscreen mode

Kunjungi halaman unduhan Gitea dan lihat versi terbaru yang tersedia untuk diunduh. Lalu ganti variabel dari VERSION pada perintah dibawah, dan jalankan perintah ini secara berurutan.

VERSION=<VERSI_TERBARU_GITEA>
wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
sudo mv /tmp/gitea /usr/local/bin
sudo chmod +x /usr/local/bin/gitea
sudo systemctl restart gitea
Enter fullscreen mode Exit fullscreen mode

Bisa juga dilakukan dengan membuat file gitea-upgrade.sh dan mengisi-nya dengan kode dibawah ini.

#!/bin/bash

VERSION=<VERSI_TERBARU_GITEA>

echo -e "\n"
echo -e "\e[0;36m..---Upgrade Gitea---...\e[m"
echo "......" && sudo systemctl stop gitea && sleep 1
wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64 && sleep 1
sudo mv /tmp/gitea /usr/local/bin && sleep 1
sudo chmod +x /usr/local/bin/gitea && sleep 1
sudo systemctl restart gitea
echo -e "\e[0;36m>> SUKSES upgrade Gitea ke versi ${VERSION}.\e[m"

Enter fullscreen mode Exit fullscreen mode

Jangan lupa mengganti variable VERSION terlebih dulu sebelum menyimpan file nya. Untuk mengeksekusinya, jalankan perintah berikut ini.

sudo bash gitea-upgrade.sh
Enter fullscreen mode Exit fullscreen mode

Selesai.

Top comments (0)