GitBucket adalah platform web Git open-source yang didukung oleh Scala. Ini menyediakan fitur antarmuka pengguna seperti Github seperti hosting repositori Git melalui HTTP dan SSH, masalah, wiki, penampil repositori, dan permintaan tarik. Muncul dengan serangkaian fitur yang kaya. Beberapa di antaranya tercantum di bawah ini:
- UI yang Intuitif
- Dukungan untuk GitLFS
- Mendukung repositori Git Publik dan Pribadi
- Linimasa aktivitas dan notifikasi email
- Kompatibilitas API dengan GitHub
- Pengelolaan akun dan grup
Dalam tutorial ini, kami akan menjelaskan cara menginstal GitBucket dengan Nginx di Ubuntu 20.04.
Prasyarat
- Server yang menjalankan Ubuntu 20.04 dengan RAM 2 GB.
- Nama domain yang valid ditunjukkan dengan server Anda.
- Kata sandi root dikonfigurasi di server Anda.
Instal Java
GitBucket berbasis Java sehingga Anda perlu menginstalnya di sistem Anda. Anda dapat menginstalnya dengan perintah berikut:
apt-get install default-jdk -y
Setelah terinstal, verifikasi versi Java menggunakan perintah berikut:
java -version
Anda akan mendapatkan output berikut:
openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Instal dan Konfigurasi GitBucket
Sebelum memulai, sebaiknya buat pengguna dan grup terpisah untuk menjalankan GitBucket. Anda dapat membuat grup dan pengguna baru bernama gitbucket dengan perintah berikut:
groupadd -g 555 gitbucket
useradd -g gitbucket --no-user-group --home-dir /opt/gitbucket --no-create-home --shell /usr/sbin/nologin --system --uid 555 gitbucket
Selanjutnya, buat direktori baru untuk GitBucket dengan perintah berikut:
mkdir /opt/gitbucket
Selanjutnya, unduh versi terbaru GitBucket di dalam direktori GitBucket:
cd /opt/gitbucket
wget https://github.com/gitbucket/gitbucket/releases/download/4.33.0/gitbucket.war
Selanjutnya, ubah kepemilikan direktori GitBucket:
chown -R gitbucket:gitbucket /opt/gitbucket
GitBucket hadir dengan database H2 tertanam. Anda dapat membuat file konfigurasi database baru dengan perintah berikut:
nano /opt/gitbucket/database.conf
Tambahkan baris berikut:
db { url = "jdbc:h2:${DatabaseHome};MVCC=true" user = "sa" password = "sa" }
Simpan dan tutup file setelah Anda selesai.
Buat File Layanan Systemd untuk GitBucket
Selanjutnya, Anda perlu membuat file layanan systemd untuk mengelola layanan GitBucket. Anda dapat membuatnya menggunakan perintah berikut:
nano /etc/systemd/system/gitbucket.service
Tambahkan baris berikut:
# GitBucket Service [Unit] Description=Manage Java service [Service] WorkingDirectory=/opt/gitbucket ExecStart=/usr/bin/java -Xms128m -Xmx256m -jar gitbucket.war User=gitbucket Group=gitbucket Type=simple Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Simpan dan tutup file setelah Anda selesai. Kemudian, muat ulang daemon systemd menggunakan perintah berikut:
systemctl daemon-reload
Selanjutnya, mulai layanan GitBucket dan aktifkan untuk memulai setelah sistem reboot dengan perintah berikut:
systemctl start gitbucket
systemctl enable gitbucket
Selanjutnya, verifikasi status layanan GitBucket dengan perintah berikut:
systemctl status gitbucket
Anda akan mendapatkan output berikut:
? gitbucket.service - Manage Java service Loaded: loaded (/etc/systemd/system/gitbucket.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-14 02:27:13 UTC; 10s ago Main PID: 93029 (java) Tasks: 36 (limit: 2282) Memory: 324.9M CGroup: /system.slice/gitbucket.service ??93029 /usr/bin/java -Xms128m -Xmx256m -jar gitbucket.war May 14 02:27:19 ubuntu2004 java[93029]: 2020-05-14 02:27:19.868:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0 May 14 02:27:19 ubuntu2004 java[93029]: 2020-05-14 02:27:19.868:INFO:oejs.session:main: No SessionScavenger set, using defaults May 14 02:27:19 ubuntu2004 java[93029]: 2020-05-14 02:27:19.875:INFO:oejs.session:main: node0 Scavenging every 600000ms May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.261 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.691 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.697 [main] WARN slick.util.AsyncExecutor - Having maxConnection > maxThreads can result in d> May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.721 [main] INFO g.core.servlet.InitializeListener - Check version May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.721 [main] INFO g.core.servlet.InitializeListener - Start schema update May 14 02:27:22 ubuntu2004 java[93029]: 02:27:22.156 [main] INFO l.servicelocator.ServiceLocator - Can not use class liquibase.parser.core.ya> May 14 02:27:22 ubuntu2004 java[93029]: 02:27:22.161 [main] INFO l.servicelocator.ServiceLocator - Can not use class liquibase.parser.core.js>
Pada titik ini, GitBucket sedang berjalan dan mendengarkan pada port 8080.
Konfigurasikan Nginx sebagai Proxy Terbalik
Secara default, GitBucket berjalan pada port 8080. Jadi, sebaiknya konfigurasikan Nginx sebagai proxy terbalik untuk GitBucket.
Pertama, instal server web Nginx dengan perintah berikut:
apt-get install nginx -y
Selanjutnya, buat file konfigurasi virtual host Nginx untuk GitBucket:
nano /etc/nginx/sites-available/gitbucket
Tambahkan baris berikut:
upstream gitbucket { server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5; } server { listen 80; server_name gitbucket.linuxbuz.com; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://gitbucket/; } }
Simpan dan tutup file. Kemudian, buat tautan simbolis ke direktori yang mendukung situs:
ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/
Selanjutnya, periksa Nginx apakah ada kesalahan sintaks dengan perintah berikut:
nginx -t
Anda akan mendapatkan output berikut:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Terakhir, mulai ulang layanan Nginx untuk menerapkan perubahan:
systemctl restart nginx
Amankan GitBucket dengan Let's Encrypt
Selanjutnya, Anda perlu menginstal klien Certbot untuk mengamankan GitBucket Anda dengan Let's Encrypt SSL.
Pertama, tambahkan repositori Certbot menggunakan perintah berikut:
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
Selanjutnya, perbarui repositori dan instal klien Certbot dengan perintah berikut:
apt-get update -y
apt-get install certbot python3-certbot-nginx -y
Selanjutnya, jalankan perintah berikut untuk mengunduh dan menginstal Let's Encrypt SSL untuk situs web Anda:
certbot --nginx -d gitbucket.linuxbuz.com
Anda akan diminta untuk memberikan email Anda dan menerima persyaratan layanan:
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 gitbucket.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/gitbucket
Selanjutnya, pilih apakah akan mengalihkan lalu lintas HTTP ke HTTPS atau tidak:
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 menyelesaikan penginstalan.
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/gitbucket - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://gitbucket.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=gitbucket.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/gitbucket.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/gitbucket.linuxbuz.com/privkey.pem Your cert will expire on 2020-08-12. 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
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Akses GitBucket
Sekarang, buka browser web Anda dan ketik URL https://gitbucket.linuxbuz.com. Anda akan diarahkan ke halaman berikut:
Klik pada Tanda di tombol. Anda akan melihat halaman login GitBucket:
Berikan nama pengguna default GitBucket sebagai root dan kata sandi sebagai root dan klik Sign di tombol. Anda akan melihat dasbor GitBucket di halaman berikut:
Selanjutnya, klik Akun Setelan di sudut kanan atas untuk mengubah kata sandi root default:
Berikan sandi baru yang aman dan klik Simpan tombol untuk memperbarui kata sandi root.
Kesimpulan
Selamat! Anda telah berhasil menginstal dan mengamankan GitBucket dengan Nginx sebagai proxy terbalik di Ubuntu 20.04. Anda sekarang dapat meng-host repositori Git Anda sendiri menggunakan GitBucket.