Gitea adalah aplikasi web hosting kode yang ditulis dalam Go dan bercabang dari Gogs. Seperti namanya, ia dirancang untuk digunakan dengan program kontrol sumber populer Git, mirip dengan Gitlab dan Github. Panduan ini akan menjelaskan cara menginstal Gitea pada Debian 10 di belakang proxy terbalik HTTPS (Nginx).
Persyaratan
- Sistem Debian 10 tempat Anda memiliki hak akses root.
- Nama domain terdaftar yang menunjuk ke server Anda.
- Variabel lingkungan $EDITOR harus disetel.
- Akses ke server SMTP untuk pemberitahuan email (opsional).
Pastikan (sub) domain Anda mengarah ke alamat IPv4 server Anda dengan catatan A. Secara opsional, buat data AAAA yang menunjuk ke alamat IPv6 server Anda.
Langkah 1:Mempersiapkan sistem
Mulailah dengan memperbarui indeks paket Anda dan instal pembaruan yang tersedia:
apt update apt upgrade -y reboot
Untuk pengaturan ini, diperlukan beberapa paket perangkat lunak:
- Git, ketergantungan Gitea.
- PostgreSQL, karena Gitea membutuhkan database.
- Nginx, yang akan digunakan sebagai proxy terbalik.
- Certbot, utilitas untuk mendapatkan sertifikat SSL Let's Encrypt.
- Sudo, untuk menjalankan perintah sebagai pengguna sistem postgres.
Instal sebagai berikut:
apt install -y git nginx certbot postgresql sudo
Selanjutnya, buat pengguna untuk menjalankan Gitea:
adduser --system --disabled-password --group --shell /bin/bash --home /home/gitea gitea
Kemudian buat struktur direktori untuk Gitea:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
Dan atur kepemilikan dan izin sebagai berikut:
chown -R gitea:gitea /var/lib/gitea chown -R gitea:gitea /run/gitea chown -R root:gitea /etc/gitea chmod -R 750 /var/lib/gitea chmod 770 /etc/gitea
Izin pada /etc/gitea bersifat sementara dan akan diperketat setelah menjalankan penginstal web.
Langkah 2:Penyiapan Basis Data
Pastikan Postgres diaktifkan dan dijalankan:
systemctl enable --now [email protected]
Kemudian buat peran pengguna dan database untuk digunakan oleh Gitea:
sudo -u postgres psql postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password'; postgres=# CREATE DATABASE gitea; postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea; postgres=# exit;
Langkah 3:Menginstal Gitea
Download biner linux-amd64 terbaru dari halaman download Gitea. Misalnya:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea chmod 755 /usr/local/bin/gitea
Selanjutnya, buat file unit systemd untuk Gitea:
$EDITOR /etc/systemd/system/gitea.service
Dan masukkan berikut ini:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target Requires=postgresql.service [Service] Type=simple User=gitea Group=gitea WorkingDirectory=/var/lib/gitea/ RuntimeDirectory=gitea ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Pastikan unit baru dimuat:
systemctl daemon-reload
Kemudian instruksikan systemd untuk memulai Gitea saat startup sistem:
systemctl enable gitea.service
Langkah 4:Mengonfigurasi Gitea
Untuk konfigurasi awal, kami akan menggunakan skrip pemasangan web yang disertakan. Pertama, mulai Gitea:
systemctl start gitea.service
Kemudian arahkan ke http://your_domain:3000/install dan isi parameter yang diperlukan sebagai berikut:
- Jenis Basis Data:PostgreSQL
- Tuan rumah:127.0.0.1:5432
- Nama pengguna:gitea
- Kata Sandi:Masukkan kata sandi yang Anda pilih selama pembuatan peran Postgres.
- Nama Basis Data:gitea
- SSL:Nonaktifkan
- Judul Situs:Judul pilihan Anda.
- Jalur Root Repositori:/var/lib/gitea/data/repositories
- Jalur Akar Git LFS:/var/lib/gitea/data/lfs
- Jalankan Sebagai Nama Pengguna:gitea
- Domain Server SSH:domain_anda
- Port Server SSH:22
- Pos Dengar HTTP Gitea:3000
- URL Basis Gitea:https://domain_anda/
- Jalur Masuk:/var/lib/gitea/log
Konfigurasikan email dan sisa pengaturan yang dianggap pas, lalu klik "Install Gitea". Anda akan diarahkan ke URL yang salah. Ini normal, karena kami belum mengonfigurasi Nginx atau HTTPS. Untuk alasan kinerja, sekarang kami akan mengonfigurasi Gitea untuk mendengarkan pada soket unix alih-alih port TCP default.
Hentikan Gitea sebelum melanjutkan:
systemctl stop gitea.service
Kencangkan izin pada /etc/gitea seperti yang ditunjukkan di bawah ini. Ini mencegah siapa pun yang tidak berada dalam grup gitea membaca app.ini, yang berisi informasi sensitif, termasuk kredensial basis data.
chmod 750 /etc/gitea chown root:gitea /etc/gitea/app.ini chmod 640 /etc/gitea/app.ini
Buka file konfigurasinya:
$EDITOR /etc/gitea/app.ini
Remove the following line from the [server] section:
HTTP_PORT = 3000
And add the following lines to the [server] section:
HTTP_ADDR = /run/gitea/gitea.sock PROTOCOL = unix UNIX_SOCKET_PERMISSION = 666
Langkah 5:Menyiapkan Proksi Terbalik
Stop Nginx if it is running, as certbot will need to bind to port 80:
systemctl stop nginx.service
Gunakan perintah berikut untuk mendapatkan sertifikat untuk domain Anda:
certbot certonly --standalone --agree-tos -m [email protected] -d your_domain
Let's Encrypt akan memverifikasi kepemilikan domain sebelum mengeluarkan sertifikat. Sertifikat, rantai, dan kunci pribadi Anda akan disimpan di /etc/letsencrypt/live/your_domain/.
Sekarang kita dapat mengkonfigurasi Nginx. Buat file konfigurasi baru:
$EDITOR /etc/nginx/sites-available/gitea
Dan masukkan konfigurasi berikut:
server { listen 80; listen [::]:80; server_name your_domain; return 301 https://$server_name$request_uri; access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; } server { listen 443 ssl; listen [::]:443 ssl; server_name your_domain; ssl on; ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem; location / { proxy_pass http://unix:/var/run/gitea/gitea.sock; } access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; }
Blok server pertama hanya berfungsi untuk mengarahkan semua permintaan HTTP ke HTTPS. Blok kedua mendengarkan koneksi HTTPS dan mem-proxy-nya ke soket unix tempat kami mengonfigurasi Gitea untuk mendengarkan.
Setelah Anda menyimpan konfigurasi di atas, jalankan yang berikut untuk mengaktifkannya:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
Periksa kesalahan sintaks dan edit konfigurasi Anda sesuai dengan itu:
nginx -t
Terakhir, mulai Nginx dan Gitea:
systemctl start nginx.service gitea.service
Instance Gitea Anda sekarang harus berjalan dengan sukses. Jika Anda tidak membuat akun administrator menggunakan penginstal web awal, pengguna pertama yang mendaftar akan diberikan peran administrator.
Langkah Opsional
Konfigurasi Logging
Secara default, Gitea mencatat pesan dari Info tingkat keparahan ke atas. Anda kemungkinan besar ingin mengubahnya menjadi Peringatkan atau Kesalahan. Untuk melakukannya, buka /etc/gitea/app.ini dan ubah parameter LEVEL di bagian [log] menjadi salah satu dari:trace, debug, info, warn, error, critical, fatal, none. Misalnya, untuk mencatat pesan dengan tingkat keparahan Peringatkan dan di atasnya, gunakan:
[log] MODE = file LEVEL = warn ROOT_PATH = /var/lib/gitea/log
Mulai ulang Gitea agar perubahan diterapkan:
systemctl restart gitea.service
Server SSH terpisah
Gitea juga dapat menggunakan server SSH-nya sendiri. Untuk mengaktifkannya, tambahkan baris berikut ke bagian konfigurasi [server]:
START_SSH_SERVER = true
Dan ubah port SSH ke angka di atas 1000, misalnya:
SSH_PORT = 2222
Kemudian restart Gitea untuk menerapkan perubahan.