Gitea adalah sistem kontrol versi sumber terbuka dan dihosting sendiri yang ditulis dalam Go. Ini sederhana, ringan, dan dapat diinstal pada sistem berdaya rendah. Ini adalah cabang dari Gogs dan alternatif untuk GitHub dan GitLab. Muncul dengan banyak fitur termasuk, editor file repositori, pelacakan masalah proyek, manajemen pengguna, pemberitahuan, wiki bawaan, dan banyak lagi. Itu dapat diinstal pada semua sistem operasi modern termasuk, Linux, macOS, Windows, ARM, dan arsitektur PowerPC.
Dalam tutorial ini, kami akan menunjukkan cara menginstal layanan Gitea Git dengan Nginx dan Let's Encrypt SSL di Ubuntu 20.04.
Prasyarat
- Server yang menjalankan Ubuntu 20.04.
- Nama domain yang valid menunjuk ke server Anda.
- Kata sandi root dikonfigurasi di server Anda.
Instal Git
Pertama, Anda perlu menginstal paket Git di server Anda. Anda dapat menginstalnya dengan menjalankan perintah berikut:
apt-get install git -y
Setelah paket Git diinstal, Anda dapat melanjutkan ke langkah berikutnya.
Instal dan Konfigurasi MariaDB
Secara default, MariaDB tidak diamankan. Jadi, Anda harus mengamankannya terlebih dahulu. Anda dapat mengamankannya dengan menjalankan skrip mysql_secure_installation:
mysql_secure_installation
Skrip ini akan mengatur kata sandi root, menghapus pengguna anonim, melarang login root dari jarak jauh dan menghapus database pengujian seperti yang ditunjukkan di bawah ini:
Enter current password for root (enter for none): 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
Setelah MariaDB diamankan, masuk ke shell MariaDB dengan perintah berikut:
mysql -u root -p
Masukkan kata sandi root Anda saat diminta. Kemudian, ubah GLOBAL innodeb_file_per_table menjadi On:
MariaDB [(none)]>SET GLOBAL innodb_file_per_table = ON;
Selanjutnya, buat database dan user untuk Gitea dengan perintah berikut:
MariaDB [(none)]>CREATE DATABASE giteadb;
MariaDB [(none)]>CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'password';
Selanjutnya, berikan semua hak istimewa ke database giteadb:
MariaDB [(none)]>GRANT ALL ON giteadb.* TO 'gitea'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Selanjutnya, perbarui kumpulan karakter basis data dengan perintah berikut:
MariaDB [(none)]>ALTER DATABASE giteadb CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
Terakhir, bersihkan hak istimewa dan keluar dari shell MariaDB dengan perintah berikut:
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>EXIT;
Selanjutnya, Anda perlu mengedit file konfigurasi default MariaDB dan menambahkan parameter innodb:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Tambahkan baris berikut di dalam bagian [mysqld]:
innodb_file_format = Barracuda innodb_large_prefix = 1 innodb_default_row_format = dynamic
Simpan dan tutup file. Kemudian, restart layanan MariaDB untuk menerapkan perubahan:
systemctl restart mariadb
Pada titik ini, database MariaDB Anda telah dikonfigurasi. Sekarang Anda dapat melanjutkan ke langkah berikutnya.
Instal dan Konfigurasi Gitea
Pertama, Anda perlu mengunduh versi terbaru biner Gitea dari repositori Git. Anda dapat mengunduhnya dengan perintah berikut:
wget https://dl.gitea.io/gitea/1.12.1/gitea-1.12.1-linux-amd64
Selanjutnya, salin file yang diunduh ke direktori /usr/bin/ dan berikan izin eksekusi:
cp gitea-1.12.1-linux-amd64 /usr/bin/gitea
chmod 755 /usr/bin/gitea
Selanjutnya, buat pengguna sistem untuk Gitea dengan perintah berikut:
adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
Selanjutnya, buat struktur direktori untuk Gitea dengan perintah berikut:
mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chown git:git /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chmod 770 /etc/gitea
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Buat File Layanan Gitea Systemd
Selanjutnya, Anda perlu membuat file layanan systemd untuk mengelola layanan Gitea. Anda dapat membuatnya dengan perintah berikut:
nano /etc/systemd/system/gitea.service
Tambahkan baris berikut:
[Unit] Description=Gitea After=syslog.target After=network.target After=mysql.service [Service] RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea/ ExecStart=/usr/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 dan tutup file. Kemudian, muat ulang daemon systemd dan mulai layanan Gitea dengan perintah berikut:
systemctl daemon-reload
systemctl start gitea
Anda sekarang dapat memeriksa status layanan Gitea dengan perintah berikut:
systemctl status gitea
Anda akan melihat output berikut:
? gitea.service - Gitea Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2020-06-25 08:23:01 UTC; 6s ago Main PID: 24046 (gitea) Tasks: 9 (limit: 2353) Memory: 134.3M CGroup: /system.slice/gitea.service ??24046 /usr/bin/gitea web -c /etc/gitea/app.ini Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 routers/init.go:127:GlobalInit() [I] Delete all repository archives Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 ...dules/setting/log.go:233:newLogService() [I] Gitea v1.12.1 built with GNU Make 4> Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 ...dules/setting/log.go:279:newLogService() [I] Gitea Log Mode: Console(Console:inf> Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 ...les/setting/cache.go:70:newCacheService() [I] Cache Service Enabled Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 ...les/setting/cache.go:81:newCacheService() [I] Last Commit Cache Service Enabled Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 ...s/setting/session.go:63:newSessionService() [I] Session Service Enabled Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 routers/init.go:165:GlobalInit() [I] SQLite3 Supported Jun 25 08:23:02 ubuntu20 gitea[24046]: 2020/06/25 08:23:02 routers/init.go:51:checkRunMode() [I] Run Mode: Development Jun 25 08:23:03 ubuntu20 gitea[24046]: 2020/06/25 08:23:03 cmd/web.go:161:runWeb() [I] Listen: http://0.0.0.0:3000 Jun 25 08:23:03 ubuntu20 gitea[24046]: 2020/06/25 08:23:03 ...s/graceful/server.go:55:NewServer() [I] Starting new server: tcp:0.0.0.0:3000 on> lines 1-19/19 (END)
Selanjutnya, aktifkan layanan Gitea untuk memulai pada sistem reboot dengan perintah berikut:
systemctl enable gitea
Pada titik ini, Gitea dimulai dan mendengarkan pada port 3000. Sekarang Anda dapat melanjutkan ke langkah berikutnya.
Konfigurasi Nginx untuk Gitea
Secara default, Gitea mendengarkan pada port 3000. Jadi, Anda perlu mengonfigurasi Nginx sebagai proxy terbalik untuk mengakses Gitea tanpa menentukan port.
Pertama, instal server web Nginx dengan menjalankan perintah berikut:
apt-get install nginx -y
Setelah terinstal, buat file konfigurasi virtual host Nginx baru untuk Gitea:
nano /etc/nginx/sites-available/gitea
Tambahkan baris berikut:
upstream gitea { server 127.0.0.1:3000; } server { listen 80; server_name gitea.linuxbuz.com; root /var/lib/gitea/public; access_log off; error_log off; location / { try_files maintain.html $uri $uri/index.html @node; } location @node { client_max_body_size 0; proxy_pass http://localhost:3000; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 120; } }
Simpan dan tutup file. Kemudian, aktifkan file konfigurasi virtual host Nginx dengan perintah berikut:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
Terakhir, restart layanan Nginx dengan perintah berikut:
systemctl restart nginx
Anda juga dapat memeriksa status layanan Nginx dengan perintah berikut:
systemctl status nginx
Anda akan mendapatkan 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 Thu 2020-06-25 08:26:00 UTC; 1min 24s ago Docs: man:nginx(8) Process: 24866 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 24877 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 24879 (nginx) Tasks: 3 (limit: 2353) Memory: 3.6M CGroup: /system.slice/nginx.service ??24879 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??24880 nginx: worker process ??24881 nginx: worker process Jun 25 08:25:59 ubuntu20 systemd[1]: Starting A high performance web server and a reverse proxy server... Jun 25 08:26:00 ubuntu20 systemd[1]: Started A high performance web server and a reverse proxy server.
Pada titik ini, Nginx dikonfigurasi untuk melayani Gitea. Sekarang Anda dapat melanjutkan ke langkah berikutnya.
Amankan Gitea dengan Let's Encrypt SSL
Pertama, Anda perlu menginstal klien Certbot untuk menginstal dan mengelola Let's Encrypt SSL di sistem Anda. Anda dapat menginstalnya dengan menjalankan perintah berikut:
apt-get install certbot python3-certbot-nginx -y
Setelah Certbot terinstal, jalankan perintah berikut untuk mengunduh dan menginstal situs web Let's Encrypt SSL for Gitea.
certbot --nginx -d gitea.linuxbuz.com
Berikan alamat email Anda dan setujui persyaratan layanan seperti yang ditunjukkan di bawah ini:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for gitea.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/gitea
Selanjutnya, pilih apakah akan mengarahkan lalu lintas HTTP ke HTTPS seperti yang ditunjukkan di bawah ini:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Ketik 2 dan tekan Enter untuk menginstal sertifikat seperti yang ditunjukkan di bawah ini:
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/gitea - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://gitea.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=gitea.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/gitea.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/gitea.linuxbuz.com/privkey.pem Your cert will expire on 2020-09-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - 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
Sekarang, situs web Gitea Anda diamankan dengan Let's Encrypt SSL. Sekarang Anda dapat melanjutkan ke langkah berikutnya.
Akses Antarmuka Web Gitea
Sekarang, buka browser web Anda dan ketik URL https://gitea.linuxbuz.com/install. Anda akan diarahkan ke halaman berikut:
Berikan nama database Gitea Anda, nama pengguna, kata sandi, jalur repositori, jalankan sebagai nama pengguna, port mendengarkan, URL dasar Gitea, jalur Log, nama pengguna admin Gitea, kata sandi dan klik Instal Gitea tombol. Setelah instalasi selesai, Anda akan melihat dasbor Gitea di layar berikut:
Kesimpulan
Selamat! Anda telah berhasil menginstal Gitea dengan Nginx dan Let's Encrypt SSL di server Ubuntu 20.04. Anda sekarang dapat menjelajahi Gitea dan membuat repositori pertama Anda dengan Gitea. Untuk informasi selengkapnya, kunjungi dokumentasi Gitea.