GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal GitBucket dengan Nginx di Ubuntu 20.04 LTS

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.


Ubuntu
  1. Cara Menginstal Seafile dengan Nginx di Ubuntu 20.04 LTS

  2. Cara Menginstal Nginx dengan Google PageSpeed ​​di Ubuntu 20.04

  3. Cara Menyebarkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  1. Cara Menginstal MediaWiki dengan Nginx di Ubuntu 16.04

  2. Cara Menginstal Seafile dengan Nginx di Ubuntu 18.04 LTS

  3. Cara Menginstal Magento dengan Nginx di Ubuntu 15.10

  1. Cara Menginstal Mailpile dengan Nginx di Ubuntu 15.10

  2. Cara Instal Redmine 3 dengan Nginx di Ubuntu 15.10

  3. Cara Menginstal Piwik dengan Nginx di Ubuntu 15.10