GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Gitea dengan Nginx dan Lets Encrypt SSL gratis di Ubuntu 20.04

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.


Ubuntu
  1. Cara Menginstal Nextcloud dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  2. Cara Menginstal Magento 2 dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04 LTS

  3. Cara Instal Gitea dengan NGINX dan Let's Encrypt SSL Gratis di Ubuntu 20.04

  1. Cara Menginstal Drupal 8 dengan Nginx, PHP-FPM dan SSL di Ubuntu 15.10

  2. Cara Menginstal OpenCart 2 dengan Nginx dan SSL di Ubuntu 15.10

  3. Instal Automad CMS dengan Nginx dan Lets Encrypt SSL di Ubuntu 18.04

  1. Cara Menginstal WordPress dengan Nginx dan Mengenkripsi SSL di CentOS 8

  2. Cara Menginstal X-Cart dengan Nginx dan Mengenkripsi SSL di Ubuntu 18.04 LTS

  3. Cara Menginstal Drupal dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04 LTS