Gitea adalah aplikasi web hosting kode yang ditulis dalam Go. Seperti namanya, ia dirancang untuk digunakan dengan program kontrol sumber populer Git, mirip dengan Gitlab dan Github. Panduan ini akan menjelaskan penginstalan Gitea pada CentOS 8 dengan proxy terbalik HTTPS Nginx.
Persyaratan
- Sistem CentOS 8 di mana Anda memiliki hak akses root.
- Nama domain terdaftar yang menunjuk ke server Anda.
- Variabel lingkungan $EDITOR harus disetel ke editor teks pilihan Anda.
- 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.
CATATAN: Panduan ini mengasumsikan SELinux disetel ke nonaktif atau permisif.
Langkah 1:Mempersiapkan sistem
Mulailah dengan menginstal pembaruan yang tersedia dan mem-boot ulang:
dnf update -yreboot
Untuk penyiapan ini, diperlukan beberapa komponen perangkat lunak:
- Git, ketergantungan Gitea.
- PostgreSQL, karena Gitea membutuhkan database.
- Nginx, yang akan digunakan sebagai proxy terbalik.
- Sudo, untuk menjalankan perintah sebagai pengguna sistem postgres.
- Dapatkan
- Certbot, sebuah utilitas untuk mendapatkan sertifikat SSL Let's Encrypt. Certbot akan diinstal secara terpisah karena tidak tersedia di repositori perangkat lunak CentOS.
Instal sebagai berikut:
dnf install -y git postgresql postgresql-server nginx sudo wget
Certbot-auto adalah skrip yang mengatur instalasi certbot. Unduh:
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
Pastikan izin yang benar telah disetel:
chmod 0755 /usr/local/bin/certbot-auto
Jalankan yang berikut ini untuk menginstal certbot. Anda akan diminta oleh manajer paket untuk mengkonfirmasi instalasi dependensi, jawab 'y'.
certbot-auto --install-only
Selanjutnya, buat pengguna untuk menjalankan Gitea:
useradd --system --shell /bin/bash --create-home --home-dir /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/giteachown -R gitea:gitea /var/run/giteachown -R root:gitea /etc/giteachmod -R 750 /var/lib/giteachmod 770 /etc/giteaIzin pada /etc/gitea bersifat sementara dan akan diperketat setelah menjalankan penginstal web.
Aktifkan lalu lintas ke port 80 dan 443 secara permanen:
firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanentfirewall-cmd --reloadAkses ke port 3000 hanya diperlukan sementara untuk pengaturan awal karena kami akan mengonfigurasi gitea untuk menggunakan soket Unix.
firewall-cmd --add-port 3000/tcpLangkah 2:Penyiapan Basis Data
Inisialisasi Postgres:
postgresql-setup --initdb --unit postgresqlPastikan itu diaktifkan dan dijalankan:
systemctl aktifkan --now postgresql.serviceMasuk ke Postgres:
sudo -u postgres psqlKemudian buat peran pengguna dan database untuk digunakan oleh Gitea:
postgres=# CREATE ROLE gitea LOGIN PASSWORD ENCRYPTED 'your_password';postgres=# CREATE DATABASE gitea;postgres=# HIBAH SEMUA HAK ISTIMEWA PADA DATABASE gitea TO gitea;postgres=# \qBuka file konfigurasi otentikasi klien Postgres:
$EDITOR /var/lib/pgsql/data/pg_hba.confTambahkan baris berikut tepat setelah # Koneksi lokal IPv4 :
# koneksi lokal IPv4:host gitea gitea 127.0.0.1/32 md5Simpan file dan mulai ulang Postgres:
systemctl restart postgresql.serviceLangkah 3:Menginstal Gitea
Unduh Gitea versi biner linux-amd64 dari halaman unduhan Gitea. Misalnya:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/giteaSetel izin yang benar pada biner yang diunduh:
chmod 755 /usr/local/bin/giteaSelanjutnya, buat file unit systemd:
$EDITOR /etc/systemd/system/gitea.serviceDan masukkan berikut ini:
[Unit]Description=Gitea (Git dengan secangkir teh)After=syslog.targetAfter=network.targetRequires=postgresql.service[Service]Type=simpleUser=giteaGroup=giteaWorkingDirectory=/var/lib/gitea/RuntimeDirectory=giteaExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.iniRestart=alwaysEnvironment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea[Install]WantedBy=multi-pengguna. sasaranPastikan unit baru dimuat:
systemctl daemon-reloadKemudian instruksikan systemd untuk memulai Gitea saat boot:
systemctl aktifkan gitea.serviceLangkah 4:Mengonfigurasi Gitea
Untuk konfigurasi awal, kami akan menggunakan web installer yang disertakan. Pertama, mulai Gitea:
systemctl start gitea.serviceKemudian 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/giteachown root:gitea /etc/gitea/app.inichmod 640 /etc/gitea/app.ini
Buka file konfigurasinya:
$EDITOR /etc/gitea/app.ini
Hapus baris berikut dari bagian server:
HTTP_PORT =3000
Dan tambahkan baris berikut di bagian server:
HTTP_ADDR =/run/gitea/gitea.sockPROTOCOL =unixUNIX_SOCKET_PERMISSION =666
Langkah 5:Pengaturan Proxy Terbalik
Hentikan Nginx jika sedang berjalan, untuk mengizinkan certbot mendengarkan pada port 80:
systemctl stop nginx.service
Gunakan perintah berikut untuk mendapatkan sertifikat untuk domain Anda:
certbot-auto 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/conf.d/gitea.conf
Dan masukkan blok server berikut:
server { dengarkan 80; dengarkan [::]:80; server_name your_domain; kembalikan 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 { dengarkan 443 ssl; dengarkan [::]:443 ssl; server_name your_domain; ssl aktif; ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem; lokasi / { 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 telah mengonfigurasi Gitea untuk mendengarkan.
Setelah Anda menyimpan konfigurasi di atas, periksa kesalahan sintaks dan edit konfigurasi Anda jika perlu:
nginx -t
Terakhir, mulai Nginx dan Gitea:
systemctl start nginx.service gitea.service
Instance Gitea Anda sekarang harus berjalan dengan sukses. Akses di https://domain_anda
Langkah Opsional
Konfigurasi Logging
Secara default, pesan log Gitea tentang Info tingkat keparahan dan di atasnya. Kemungkinan besar Anda ingin mengubahnya menjadi Warn atau Error . 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 =fileLEVEL =warnROOT_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 =benar
Dan ubah port SSH ke sembarang angka di atas 1024, misalnya:
SSH_PORT =2222
Kemudian restart Gitea untuk menerapkan perubahan dan mengaktifkan lalu lintas ke port yang dipilih:
firewall-cmd --add-port 2222/tcp --permanentfirewall-cmd --reload