Gitea adalah solusi hosting kode sumber terbuka berdasarkan platform Git. Itu ditulis dalam bahasa Go. Ini termasuk editor file repositori, pelacakan masalah, permintaan tarik, manajemen pengguna, pemberitahuan, wiki bawaan, Dukungan LFS, kait Git, dan banyak lagi.
Ini adalah aplikasi yang ringan. Oleh karena itu, dapat diinstal pada sistem berdaya rendah. Jika Anda mencari platform Git yang dihosting sendiri dengan platform memori yang lebih kecil, Anda harus memeriksa Gitea.
Artikel ini akan membahas cara menginstal dan mengkonfigurasi Gitea di Fedora 34 dan cara mengatur repositori Git pertama Anda. Gitea dapat diinstal dari sumber, biner, paket buruh pelabuhan, atau paket. Untuk tutorial kami, kami akan menginstalnya dari biner.
Prasyarat
- Server yang menjalankan Fedora 34.
- Pengguna sudo non-root.
- SELinux Dinonaktifkan.
-
Pastikan semuanya diperbarui.
$ sudo dnf update
Langkah 1 - Konfigurasi Firewall
Langkah pertama adalah mengkonfigurasi firewall. Server Fedora dilengkapi dengan Firewall firewall.
Periksa apakah firewall sedang berjalan.
$ sudo firewall-cmd --state
Anda akan mendapatkan output berikut.
running
Periksa layanan/port yang diizinkan saat ini.
$ sudo firewall-cmd --permanent --list-services
Ini akan menunjukkan output berikut.
dhcpv6-client mdns ssh
Izinkan port HTTP dan HTTPS.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Periksa kembali status firewall.
$ sudo firewall-cmd --permanent --list-services
Anda akan melihat keluaran serupa.
dhcpv6-client http https mdns ssh
Muat Ulang Firewall.
$ sudo systemctl reload firewalld
Langkah 2 - Instal Git
Langkah pertama adalah menginstal Git.
$ sudo dnf install git
Verifikasi instalasi dengan memeriksa versi Git.
$ git --version
git version 2.31.1
Konfigurasi Git
Git dapat dikonfigurasi dengan git config
memerintah. Tetapkan nama dan alamat email Anda untuk bekerja dengan Git.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Anda dapat memeriksa konfigurasi dengan menggunakan perintah berikut.
$ git config --list
user.name=Your Name
[email protected]
Langkah 3 - Instal dan Konfigurasi PostgreSQL
Gitea mendukung SQLite, MySQL/Mariadb, MSSQL, dan PostgreSQL. Untuk tutorial kita, kita akan menggunakan PostgreSQL.
Instal dan inisialisasi PostgreSQL.
$ sudo dnf module enable postgresql:13
$ sudo dnf install postgresql-server postgresql-contrib
$ sudo postgresql-setup --initdb --unit postgresql
$ sudo systemctl enable --now postgresql
PostgreSQL menggunakan skema enkripsi md5 untuk otentikasi kata sandi secara default yang tidak aman. Anda perlu beralih ke SCRAM-SHA-256
skema. Dan jika Anda akan terhubung ke database PostgreSQL jarak jauh, Anda perlu mengonfigurasinya untuk mendengarkan alamat IP Anda. Keduanya dapat diubah dengan mengedit /var/lib/pgsql/data/postgresql.conf
mengajukan. Buka untuk diedit.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Edit variabel berikut dengan cara berikut.
listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang PostgreSQL.
$ sudo systemctl restart postgresql
Masuk ke shell PostgreSQL.
$ sudo -u postgres psql
Buat pengguna dan database SQL baru untuk Gitea. Pilih kata sandi yang kuat untuk pengguna basis data Anda.
postgres-# CREATE ROLE gitea WITH LOGIN PASSWORD 'yourpassword';
postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
Ganti nama pengguna, nama database, dan kata sandi yang sesuai.
Keluar dari shell dengan mengetikkan \q
.
Izinkan pengguna database untuk mengakses database yang dibuat di atas dengan menambahkan aturan otentikasi berikut ke /var/lib/pgsql/data/pg_hba.conf
.
Jika databasenya lokal, tambahkan baris ini.
local giteadb gitea scram-sha-256
Untuk database jarak jauh, gunakan kode berikut sebagai gantinya.
host giteadb gitea 192.0.2.10/32 scram-sha-256
Anda juga perlu mengedit baris berikut dengan menambahkan penggantian ident
dengan scram-sha-256
.
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Mereka akan terlihat seperti berikut.
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang PostgreSQL.
$ sudo systemctl restart postgresql
Anda juga perlu menambahkan aturan berikut di firewall jika Anda ingin mengaktifkan koneksi jarak jauh.
$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload
Langkah 4 - Buat pengguna Git
Buat pengguna sistem baru untuk menjalankan aplikasi Gitea.
$ sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
git
Perintah ini membuat pengguna dan grup baru bernama git
dan set direktori home ke /home/git
.
Langkah 5 - Instal Gitea
Buka halaman Unduhan Gitea dan periksa nomor versi biner terbaru yang tersedia. Pada saat penulisan tutorial ini, versi terbaru adalah 1.14.3. Jika ada versi yang lebih baru, ubah di VERSION
variabel dalam perintah di bawah ini.
Gunakan wget
utilitas untuk mengambil biner Gitea terbaru.
$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
Pindahkan biner yang diunduh ke /usr/local/bin
direktori.
$ sudo mv gitea /usr/local/bin
Jadikan biner tersebut dapat dieksekusi.
$ sudo chmod +x /usr/local/bin/gitea
Jalankan perintah berikut untuk membuat direktori dan mengatur izin yang diperlukan agar Gitea berfungsi dengan baik.
$ sudo mkdir -p /var/lib/gitea/{custom,data,log}
$ sudo chown -R git:git /var/lib/gitea/
$ sudo chmod -R 750 /var/lib/gitea/
$ sudo mkdir /etc/gitea
$ sudo chown root:git /etc/gitea
$ sudo chmod 770 /etc/gitea
Izin untuk /etc/gitea
direktori diatur ke 770 untuk wizard instalasi untuk membuat file konfigurasi. Setelah penginstalan selesai, kami akan menetapkan izin yang lebih ketat.
Buat file layanan Systemd
Kami akan menjalankan Gitea sebagai layanan systemd. Untuk itu, buat file entri systemd baru untuk Gitea.
$ sudo nano /etc/systemd/system/gitea.service
Tempelkan kode berikut di dalamnya.
[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=postgresql.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Untuk referensi, Anda dapat melihat contoh file systemd yang tersedia dari repositori Gitea.
Muat ulang daemon systemd untuk mengaktifkan file yang baru saja kita buat.
$ sudo systemctl daemon-reload
Aktifkan dan mulai layanan Gitea.
$ sudo systemctl enable --now gitea
Verifikasi bahwa Gitea sedang berjalan.
$ sudo systemctl status gitea
gitea.service - Gitea
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-07-04 20:33:38 EDT; 1 day 8h ago
Main PID: 46404 (gitea)
Tasks: 7 (limit: 2328)
Memory: 115.5M
CPU: 9min 12.061s
CGroup: /system.slice/gitea.service
---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini
...
Langkah 6 - Konfigurasi Gitea
Gitea, secara default, mendengarkan pada port 3000. Anda dapat menggunakan port lain atau tetap menggunakan port default. Oleh karena itu, kita perlu membuka port 3000 juga.
$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload
Buka browser Anda dan ketik https://YOURIPADDRESS:3000
dan Anda akan disambut dengan penginstal Gitea. Gunakan nilai berikut untuk mengonfigurasi.
Setelan Basis Data
- Jenis Basis Data: Pilih PostgreSQL dari tarik-turun
- Tuan rumah: 127.0.0.1:5432
- Nama pengguna: gitea
- Sandi: kata sandi Anda
- Nama Basis Data: gitea
Setelan Umum
- Judul Situs: Masukkan nama organisasi Anda
- Jalur Root Repositori: Tinggalkan jalur default
- Jalur Akar Git LFS: Tinggalkan jalur default
- Jalankan sebagai Nama Pengguna: git
- Domain Server SSH: Masukkan alamat IP Anda
- Port Pendengaran HTTP: 3000 (Anda dapat mengubah port di sini, tetapi Anda harus mengaksesnya melalui firewall.)
- URL Basis Gitea: http://YOURIPADDRESS:3000
- Jalur Masuk: Biarkan default
Anda dapat mengonfigurasi pengaturan Email dan Server saat ini, atau Anda dapat mengubahnya nanti. Namun, Anda harus mengisi pengaturan akun administrator.
Untuk memulai penginstalan, klik tombol Instal Gitea* tombol. Setelah selesai, Anda akan secara otomatis masuk dan diarahkan ke dasbor akun.
Instalasi akan membuat file konfigurasi Gitea. Ubah izinnya menjadi hanya-baca.
$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini
Itu dia. Gitea sekarang terinstal di server Anda.
Langkah 7 - Instal SSL menggunakan Let's Encrypt
Untuk menginstal sertifikat SSL menggunakan Let's Encrypt, kita perlu mengunduh alat Certbot menggunakan penginstal paket Snapd yang disertakan di Ubuntu 20.04.
Jalankan perintah berikut untuk menginstal Certbot.
$ sudo dnf install certbot
Buat sertifikat SSL.
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/example.com
direktori di server Anda.
Buat direktori webroot tantangan untuk pembaruan otomatis Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Buat Pekerjaan Cron untuk memperbarui SSL. Ini akan berjalan setiap hari untuk memeriksa sertifikat dan memperbarui jika diperlukan. Untuk itu, buat dulu file /etc/cron.daily/certbot-renew
dan buka untuk diedit.
$ sudo nano /etc/cron.daily/certbot-renew
Tempelkan kode berikut.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Ubah izin pada file tugas agar dapat dieksekusi.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Langkah 8 - Instal dan konfigurasikan Nginx
Langkah selanjutnya adalah menginstal server Nginx.
$ sudo dnf install nginx
Buat file konfigurasi Nginx untuk Gitea.
$ sudo nano /etc/nginx/conf.d/gitea.conf
Tempelkan kode berikut di dalamnya.
server {
listen 80;
location ~ /\.well-known/acme-challenge {
root /var/lib/letsencrypt/;
}
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your_domain;
client_max_body_size 50m;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20- POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers off;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
access_log /var/log/nginx/gitea.access.log;
error_log /var/log/nginx/gitea.error.log;
}
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Verifikasi apakah file konfigurasi berfungsi dengan benar.
$ sudo nginx -t
Mulai ulang server Nginx.
$ sudo systemctl restart nginx
Selanjutnya, ubah domain Gitea dan URL root. Untuk melakukannya, buka file konfigurasi /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Ubah nilai berikut.
[server]
SSH_DOMAIN = git.example.com
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang layanan Gitea.
$ sudo systemctl restart gitea
Langkah 9 - Menyiapkan Notifikasi Email
Jika Anda ingin menerima notifikasi email, Anda dapat mengaktifkannya melalui Sendmail atau melalui layanan transaksi Email pihak ketiga seperti Amazon SES, Postmark, Mailgun, atau Sendgrid.
Untuk mengaktifkan notifikasi, buka file konfigurasi /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Edit bagian berikut dalam file dan tambahkan kode berikut.
[mailer]
ENABLED = true
FROM = [email protected]
MAILER_TYPE = smtp
HOST = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER = [email protected]
PASSWD = `password`
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang layanan Gitea.
$ sudo systemctl restart gitea
Langkah 10 - Memperbarui Gitea
Memutakhirkan Gitea melibatkan mengunduh dan mengganti biner Gitea.
Pertama, hentikan layanan Gitea.
$ sudo systemctl stop gitea
Unduh dan instal biner Gitea.
$ GITEAVERSION=LATESTVERSION
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
$ sudo mv gitea /usr/local/bin
$ sudo chmod +x /usr/local/bin/gitea
Mulai ulang layanan Gitea.
$ sudo systemctl start gitea
Langkah 11 - Cara menggunakan SSH
Untuk menggunakan SSH, kita perlu menambahkan kunci SSH kita sendiri ke Gitea. Jika Anda tidak memilikinya, Anda dapat membuatnya menggunakan perintah berikut di sistem lokal Anda.
$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"
Ini akan membuat kunci bernama id_ed25519
di ~/.ssh
direktori. Untuk menambahkan kunci ini, salin isi file ~/.ssh/id_ed25519.pub
ke papan klip Anda. Kemudian tambahkan kunci ini ke halaman pengaturan Gitea Anda di bawah tab Kunci SSH/GPG . Klik Tambahkan Kunci tombol dan beri nama kunci dan tempel di kotak.
Jika Anda memiliki daftar pengguna yang diizinkan di file konfigurasi sshd, Anda perlu menambahkan git
untuk itu.
Buka file konfigurasi SSHD.
$ sudo nano /etc/ssh/sshd_config
Cari garis yang akan terlihat seperti berikut.
AllowUsers myuser myotheruser git
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang layanan SSHD.
$ sudo systemctl restart ssh
Anda perlu menambahkan frasa sandi untuk kunci yang kami buat ke ssh-agent
alat di sistem lokal Anda sehingga Anda tidak diminta berulang kali. Jalankan perintah berikut untuk melakukannya.
$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519
Anda dapat mengkloning repositori Anda untuk menguji koneksi SSH.
$ git clone ssh://[email protected]/username/repo.git
Cloning into 'repo'...
The authenticity of host 'example.com (201.110.80.160)' can't be established.
ECDSA key fingerprint is SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'example.com,201.110.80.160' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), 4.77 KiB | 977.00 KiB/s, done.
Kesimpulan
Ini menyimpulkan tutorial tentang menginstal dan mengonfigurasi layanan hosting kode Gitea di Fedora 34. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.