Gitea adalah server Git gratis, open-source, self-hosted, dan terkenal yang ditulis dalam bahasa pemrograman Go. Ini adalah platform kontrol versi yang mirip dengan Github. Ini kuat, terukur dan menawarkan banyak fitur termasuk masalah dan pelacakan waktu, percabangan repositori, penguncian file, dan penandaan, penggabungan, dan banyak lainnya. Jika Anda mencari layanan Git yang dihosting sendiri, mungkin Gitea adalah opsi terbaik yang dapat Anda gunakan.
Dalam tutorial ini, saya akan menunjukkan cara menginstal Gitea di Debian 11.
Prasyarat
- Server yang menjalankan Debian 11.
- Kata sandi root dikonfigurasi di server.
Instal dan Konfigurasikan Database MariaDB
Gitea menggunakan MariaDB/MySQL sebagai backend database. Jadi server database harus diinstal di server Anda. Jika belum terinstal, Anda dapat menginstalnya dengan menjalankan perintah berikut:
apt-get install mariadb-server -y
Setelah MariaDB diinstal, Anda perlu mengatur kata sandi MariaDB dan mengamankan instalasi. Anda dapat melakukannya dengan menjalankan skrip mysql_secure_installation:
mysql_secure_installation
Jawab semua pertanyaan seperti yang ditunjukkan di bawah ini:
Enter current password for root (enter for none): OK, successfully used password, moving on... Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Selanjutnya, sambungkan ke antarmuka MariaDB menggunakan perintah berikut:
mysql -u root -p
Setelah Anda terhubung, buat database dan pengguna untuk Gitea dengan perintah berikut:
MariaDB [(none)]> CREATE DATABASE gitea;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password';
Selanjutnya, flush hak istimewa dan keluar dari MariaDB dengan perintah berikut:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
Instal Gitea
Pertama, Anda perlu membuat pengguna khusus untuk menjalankan Gitea. Anda dapat membuatnya dengan perintah berikut:
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /opt/git git
Anda akan melihat output berikut:
Adding system user `git' (UID 109) ... Adding new group `git' (GID 115) ... Adding new user `git' (UID 109) with group `git' ... Creating home directory `/opt/git' ...
Selanjutnya, unduh Gitea versi terbaru dengan perintah berikut:
curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d '"' -f 4 | grep '\linux-amd64$' | wget -i -
Selanjutnya, pindahkan biner Gitea ke jalur sistem dengan perintah berikut:
mv gitea-*-linux-amd64 /usr/local/bin/gitea
Selanjutnya, atur izin yang dapat dieksekusi ke biner Gitea:
chmod +x /usr/local/bin/gitea
Selanjutnya, verifikasi versi Gitea menggunakan perintah berikut:
gitea --version
Anda akan melihat output berikut:
Gitea version 1.15.3 built with GNU Make 4.1, go1.16.8 : bindata, sqlite, sqlite_unlock_notify
Selanjutnya, Anda perlu membuat struktur direktori untuk Gitea. Anda dapat membuatnya dengan perintah berikut:
mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
Selanjutnya, atur izin dan kepemilikan yang tepat dengan perintah berikut:
chown git:git /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chown root:git /etc/gitea
chmod 770 /etc/gitea
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Buat File Layanan Systemd untuk Gitea
Selanjutnya, Anda perlu membuat file layanan systemd untuk Gitea. Anda dapat membuatnya dengan perintah berikut:
nano /etc/systemd/system/gitea.service
Tambahkan baris berikut:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target After=mysql.service [Service] LimitMEMLOCK=infinity LimitNOFILE=65535 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=/opt/git GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Simpan dan tutup file kemudian muat ulang daemon systemd dengan perintah berikut:
systemctl daemon-reload
Selanjutnya, mulai dan aktifkan layanan Gitea dengan perintah berikut:
systemctl start gitea
systemctl enable gitea
Untuk memeriksa layanan Gitea, jalankan perintah berikut:
systemctl status gitea
Anda akan melihat output berikut:
? gitea.service - Gitea (Git with a cup of tea) Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2021-10-02 12:59:27 UTC; 9s ago Main PID: 19179 (gitea) Tasks: 8 (limit: 4679) Memory: 128.3M CPU: 1.415s CGroup: /system.slice/gitea.service ??19179 /usr/local/bin/gitea web -c /etc/gitea/app.ini Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 cmd/web.go:102:runWeb() [I] Starting Gitea on PID: 19179 Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/setting/setting.go:569:NewContext() [W] Custom config '/etc/gitea/app.ini' not> Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/custom Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:25:PreloadSettings() [I] Preparing to run install page Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:28:PreloadSettings() [I] SQLite3 Supported Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 cmd/web.go:196:listen() [I] Listen: http://0.0.0.0:3000 Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 ...s/graceful/server.go:62:NewServer() [I] Starting new Web server: tcp:0.0.0.0:300>
Pada titik ini, Gitea dimulai dan mendengarkan pada port 3000. Anda dapat memeriksanya dengan perintah berikut:
ss -antpl | grep 3000
Anda akan melihat output berikut:
LISTEN 0 4096 *:3000 *:* users:(("gitea",pid=19179,fd=6))
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Konfigurasi Nginx untuk Gitea
Selanjutnya, Anda perlu menginstal dan mengkonfigurasi Nginx sebagai proxy terbalik untuk Gitea. Pertama, instal Nginx dengan perintah berikut:
apt-get install nginx -y
Selanjutnya, buat file konfigurasi virtual host Nginx dengan perintah berikut:
nano /etc/nginx/conf.d/gitea.conf
Tambahkan baris berikut:
server { listen 80; server_name gitea.example.com; access_log /var/log/nginx/gitea_access.log; error_log /var/log/nginx/gitea_error.log; location / { proxy_pass http://localhost:3000; } }
Simpan dan tutup file kemudian verifikasi Nginx untuk kesalahan sintaks:
nginx -t
Anda akan melihat output berikut:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Selanjutnya, restart layanan Nginx dengan perintah berikut:
systemctl restart nginx
Untuk memeriksa status Nginx, jalankan perintah berikut:
systemctl status nginx
Anda akan melihat output berikut:
? 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 Sat 2021-10-02 13:00:33 UTC; 4s ago Docs: man:nginx(8) Process: 19209 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 19211 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 19212 (nginx) Tasks: 3 (limit: 4679) Memory: 3.2M CPU: 50ms CGroup: /system.slice/nginx.service ??19212 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??19213 nginx: worker process ??19214 nginx: worker process Oct 02 13:00:33 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Oct 02 13:00:33 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
Selanjutnya, Anda perlu mengedit file Gitea app.ini dan menentukan informasi domain Anda:
nano /etc/gitea/app.ini
Ubah baris berikut:
DOMAIN = gitea.example.com ROOT_URL = http://gitea.example.com/
Simpan dan tutup file, lalu mulai ulang layanan Gitea untuk menerapkan perubahan:
systemctl restart gitea
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Akses Antarmuka Web Gitea
Sekarang, buka browser web Anda dan akses antarmuka web Gitea menggunakan URL http://gitea.example.com . Anda akan diarahkan ke halaman berikut:
Berikan informasi database Gitea Anda, URL, nama pengguna admin, kata sandi, port dan klik tombol Instal Gitea tombol. Anda akan melihat dasbor Gitea di halaman berikut:
Kesimpulan
Selamat! Anda telah berhasil menginstal Gitea dengan Nginx sebagai proxy terbalik di Debian 11. Anda dapat mengimplementasikan Gitea di lingkungan pengembangan Anda untuk melacak dan mengelola proyek Anda.