GNU/Linux >> Belajar Linux >  >> Fedora

Cara Memasang Layanan Hosting Kode Gitea di Fedora 34

Gitea adalah solusi hosting kode sumber terbuka berdasarkan platform Git. Itu ditulis dalam bahasa Go. Ini termasuk editor file repositori, pelacakan masalah, permintaan tarik, manajemen pengguna, pemberitahuan, wiki bawaan, Dukungan LFS, kait Git, dan banyak lagi.

Ini adalah aplikasi yang ringan. Oleh karena itu, dapat diinstal pada sistem berdaya rendah. Jika Anda mencari platform Git yang dihosting sendiri dengan platform memori yang lebih kecil, Anda harus memeriksa Gitea.

Artikel ini akan membahas cara menginstal dan mengkonfigurasi Gitea di Fedora 34 dan cara mengatur repositori Git pertama Anda. Gitea dapat diinstal dari sumber, biner, paket buruh pelabuhan, atau paket. Untuk tutorial kami, kami akan menginstalnya dari biner.

Prasyarat

  • Server yang menjalankan Fedora 34.
  • Pengguna sudo non-root.
  • SELinux Dinonaktifkan.
  • Pastikan semuanya diperbarui.

    $ sudo dnf update
    

Langkah 1 - Konfigurasi Firewall

Langkah pertama adalah mengkonfigurasi firewall. Server Fedora dilengkapi dengan Firewall firewall.

Periksa apakah firewall sedang berjalan.

$ sudo firewall-cmd --state

Anda akan mendapatkan output berikut.

running

Periksa layanan/port yang diizinkan saat ini.

$ sudo firewall-cmd --permanent --list-services

Ini akan menunjukkan output berikut.

dhcpv6-client mdns ssh

Izinkan port HTTP dan HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Periksa kembali status firewall.

$ sudo firewall-cmd --permanent --list-services

Anda akan melihat keluaran serupa.

dhcpv6-client http https mdns ssh

Muat Ulang Firewall.

$ sudo systemctl reload firewalld

Langkah 2 - Instal Git

Langkah pertama adalah menginstal Git.

$ sudo dnf install git

Verifikasi instalasi dengan memeriksa versi Git.

$ git --version
git version 2.31.1

Konfigurasi Git

Git dapat dikonfigurasi dengan git config memerintah. Tetapkan nama dan alamat email Anda untuk bekerja dengan Git.

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Anda dapat memeriksa konfigurasi dengan menggunakan perintah berikut.

$ git config --list
user.name=Your Name
[email protected]

Langkah 3 - Instal dan Konfigurasi PostgreSQL

Gitea mendukung SQLite, MySQL/Mariadb, MSSQL, dan PostgreSQL. Untuk tutorial kita, kita akan menggunakan PostgreSQL.

Instal dan inisialisasi PostgreSQL.

$ sudo dnf module enable postgresql:13
$ sudo dnf install postgresql-server postgresql-contrib
$ sudo postgresql-setup --initdb --unit postgresql
$ sudo systemctl enable --now postgresql

PostgreSQL menggunakan skema enkripsi md5 untuk otentikasi kata sandi secara default yang tidak aman. Anda perlu beralih ke SCRAM-SHA-256 skema. Dan jika Anda akan terhubung ke database PostgreSQL jarak jauh, Anda perlu mengonfigurasinya untuk mendengarkan alamat IP Anda. Keduanya dapat diubah dengan mengedit /var/lib/pgsql/data/postgresql.conf mengajukan. Buka untuk diedit.

$ sudo nano /var/lib/pgsql/data/postgresql.conf

Edit variabel berikut dengan cara berikut.

listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Mulai ulang PostgreSQL.

$ sudo systemctl restart postgresql

Masuk ke shell PostgreSQL.

$ sudo -u postgres psql

Buat pengguna dan database SQL baru untuk Gitea. Pilih kata sandi yang kuat untuk pengguna basis data Anda.

postgres-# CREATE ROLE gitea WITH LOGIN PASSWORD 'yourpassword';
postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

Ganti nama pengguna, nama database, dan kata sandi yang sesuai.

Keluar dari shell dengan mengetikkan \q .

Izinkan pengguna database untuk mengakses database yang dibuat di atas dengan menambahkan aturan otentikasi berikut ke /var/lib/pgsql/data/pg_hba.conf .

Jika databasenya lokal, tambahkan baris ini.

local    giteadb    gitea    scram-sha-256

Untuk database jarak jauh, gunakan kode berikut sebagai gantinya.

host    giteadb    gitea    192.0.2.10/32    scram-sha-256

Anda juga perlu mengedit baris berikut dengan menambahkan penggantian ident dengan scram-sha-256 .

# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Mereka akan terlihat seperti berikut.

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Mulai ulang PostgreSQL.

$ sudo systemctl restart postgresql

Anda juga perlu menambahkan aturan berikut di firewall jika Anda ingin mengaktifkan koneksi jarak jauh.

$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload

Langkah 4 - Buat pengguna Git

Buat pengguna sistem baru untuk menjalankan aplikasi Gitea.

$ sudo useradd \
   --system \
   --shell /bin/bash \
   --comment 'Git Version Control' \
   --create-home \
   --home /home/git \
   git

Perintah ini membuat pengguna dan grup baru bernama git dan set direktori home ke /home/git .

Langkah 5 - Instal Gitea

Buka halaman Unduhan Gitea dan periksa nomor versi biner terbaru yang tersedia. Pada saat penulisan tutorial ini, versi terbaru adalah 1.14.3. Jika ada versi yang lebih baru, ubah di VERSION variabel dalam perintah di bawah ini.

Gunakan wget utilitas untuk mengambil biner Gitea terbaru.

$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64

Pindahkan biner yang diunduh ke /usr/local/bin direktori.

$ sudo mv gitea /usr/local/bin

Jadikan biner tersebut dapat dieksekusi.

$ sudo chmod +x /usr/local/bin/gitea

Jalankan perintah berikut untuk membuat direktori dan mengatur izin yang diperlukan agar Gitea berfungsi dengan baik.

$ sudo mkdir -p /var/lib/gitea/{custom,data,log}
$ sudo chown -R git:git /var/lib/gitea/
$ sudo chmod -R 750 /var/lib/gitea/
$ sudo mkdir /etc/gitea
$ sudo chown root:git /etc/gitea
$ sudo chmod 770 /etc/gitea

Izin untuk /etc/gitea direktori diatur ke 770 untuk wizard instalasi untuk membuat file konfigurasi. Setelah penginstalan selesai, kami akan menetapkan izin yang lebih ketat.

Buat file layanan Systemd

Kami akan menjalankan Gitea sebagai layanan systemd. Untuk itu, buat file entri systemd baru untuk Gitea.

$ sudo nano /etc/systemd/system/gitea.service

Tempelkan kode berikut di dalamnya.

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=postgresql.service

[Service]
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=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Untuk referensi, Anda dapat melihat contoh file systemd yang tersedia dari repositori Gitea.

Muat ulang daemon systemd untuk mengaktifkan file yang baru saja kita buat.

$ sudo systemctl daemon-reload

Aktifkan dan mulai layanan Gitea.

$ sudo systemctl enable --now gitea

Verifikasi bahwa Gitea sedang berjalan.

$ sudo systemctl status gitea
  gitea.service - Gitea
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-07-04 20:33:38 EDT; 1 day 8h ago
   Main PID: 46404 (gitea)
      Tasks: 7 (limit: 2328)
     Memory: 115.5M
CPU: 9min 12.061s CGroup: /system.slice/gitea.service ---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini ...

Langkah 6 - Konfigurasi Gitea

Gitea, secara default, mendengarkan pada port 3000. Anda dapat menggunakan port lain atau tetap menggunakan port default. Oleh karena itu, kita perlu membuka port 3000 juga.

$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload

Buka browser Anda dan ketik https://YOURIPADDRESS:3000 dan Anda akan disambut dengan penginstal Gitea. Gunakan nilai berikut untuk mengonfigurasi.

Setelan Basis Data

  • Jenis Basis Data: Pilih PostgreSQL dari tarik-turun
  • Tuan rumah: 127.0.0.1:5432
  • Nama pengguna: gitea
  • Sandi: kata sandi Anda
  • Nama Basis Data: gitea

Setelan Umum

  • Judul Situs: Masukkan nama organisasi Anda
  • Jalur Root Repositori: Tinggalkan jalur default
  • Jalur Akar Git LFS: Tinggalkan jalur default
  • Jalankan sebagai Nama Pengguna: git
  • Domain Server SSH: Masukkan alamat IP Anda
  • Port Pendengaran HTTP: 3000 (Anda dapat mengubah port di sini, tetapi Anda harus mengaksesnya melalui firewall.)
  • URL Basis Gitea: http://YOURIPADDRESS:3000
  • Jalur Masuk: Biarkan default

Anda dapat mengonfigurasi pengaturan Email dan Server saat ini, atau Anda dapat mengubahnya nanti. Namun, Anda harus mengisi pengaturan akun administrator.

Untuk memulai penginstalan, klik tombol Instal Gitea* tombol. Setelah selesai, Anda akan secara otomatis masuk dan diarahkan ke dasbor akun.

Instalasi akan membuat file konfigurasi Gitea. Ubah izinnya menjadi hanya-baca.

$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini

Itu dia. Gitea sekarang terinstal di server Anda.

Langkah 7 - Instal SSL menggunakan Let's Encrypt

Untuk menginstal sertifikat SSL menggunakan Let's Encrypt, kita perlu mengunduh alat Certbot menggunakan penginstal paket Snapd yang disertakan di Ubuntu 20.04.

Jalankan perintah berikut untuk menginstal Certbot.

$ sudo dnf install certbot

Buat sertifikat SSL.

$ sudo certbot certonly --standalone --preferred-challenges http -d example.com

Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/example.com direktori di server Anda.

Buat direktori webroot tantangan untuk pembaruan otomatis Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Buat Pekerjaan Cron untuk memperbarui SSL. Ini akan berjalan setiap hari untuk memeriksa sertifikat dan memperbarui jika diperlukan. Untuk itu, buat dulu file /etc/cron.daily/certbot-renew dan buka untuk diedit.

$ sudo nano /etc/cron.daily/certbot-renew

Tempelkan kode berikut.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Ubah izin pada file tugas agar dapat dieksekusi.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Langkah 8 - Instal dan konfigurasikan Nginx

Langkah selanjutnya adalah menginstal server Nginx.

$ sudo dnf install nginx

Buat file konfigurasi Nginx untuk Gitea.

$ sudo nano /etc/nginx/conf.d/gitea.conf

Tempelkan kode berikut di dalamnya.

server {
        listen 80;
    
        location ~ /\.well-known/acme-challenge {
                root /var/lib/letsencrypt/;
        }
    
        server_name yourdomain.com;
        return 301 https://$server_name$request_uri;
}
server {
        listen 443 ssl http2;
        server_name your_domain;
    
        client_max_body_size 50m;
    
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
        ssl_session_tickets off;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20- POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
        ssl_prefer_server_ciphers off;
        ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
        ssl_stapling on;
        ssl_stapling_verify on;

        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
    
        proxy_read_timeout 720s;
        proxy_connect_timeout 720s;
        proxy_send_timeout 720s;
        
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    
        location / {
                proxy_redirect off;
                proxy_pass http://127.0.0.1:3000;
     	}
        access_log /var/log/nginx/gitea.access.log;
        error_log /var/log/nginx/gitea.error.log;
}

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Verifikasi apakah file konfigurasi berfungsi dengan benar.

$ sudo nginx -t

Mulai ulang server Nginx.

$ sudo systemctl restart nginx

Selanjutnya, ubah domain Gitea dan URL root. Untuk melakukannya, buka file konfigurasi /etc/gitea/app.ini .

$ sudo nano /etc/gitea/app.ini

Ubah nilai berikut.

[server]
SSH_DOMAIN       = git.example.com
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Mulai ulang layanan Gitea.

$ sudo systemctl restart gitea

Langkah 9 - Menyiapkan Notifikasi Email

Jika Anda ingin menerima notifikasi email, Anda dapat mengaktifkannya melalui Sendmail atau melalui layanan transaksi Email pihak ketiga seperti Amazon SES, Postmark, Mailgun, atau Sendgrid.

Untuk mengaktifkan notifikasi, buka file konfigurasi /etc/gitea/app.ini .

$ sudo nano /etc/gitea/app.ini

Edit bagian berikut dalam file dan tambahkan kode berikut.

[mailer]
ENABLED = true
FROM           = [email protected]
MAILER_TYPE    = smtp
HOST           = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER           = [email protected]
PASSWD         = `password`

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Mulai ulang layanan Gitea.

$ sudo systemctl restart gitea

Langkah 10 - Memperbarui Gitea

Memutakhirkan Gitea melibatkan mengunduh dan mengganti biner Gitea.

Pertama, hentikan layanan Gitea.

$ sudo systemctl stop gitea

Unduh dan instal biner Gitea.

$ GITEAVERSION=LATESTVERSION
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
$ sudo mv gitea /usr/local/bin
$ sudo chmod +x /usr/local/bin/gitea

Mulai ulang layanan Gitea.

$ sudo systemctl start gitea

Langkah 11 - Cara menggunakan SSH

Untuk menggunakan SSH, kita perlu menambahkan kunci SSH kita sendiri ke Gitea. Jika Anda tidak memilikinya, Anda dapat membuatnya menggunakan perintah berikut di sistem lokal Anda.

$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"

Ini akan membuat kunci bernama id_ed25519 di ~/.ssh direktori. Untuk menambahkan kunci ini, salin isi file ~/.ssh/id_ed25519.pub ke papan klip Anda. Kemudian tambahkan kunci ini ke halaman pengaturan Gitea Anda di bawah tab Kunci SSH/GPG . Klik Tambahkan Kunci tombol dan beri nama kunci dan tempel di kotak.

Jika Anda memiliki daftar pengguna yang diizinkan di file konfigurasi sshd, Anda perlu menambahkan git untuk itu.

Buka file konfigurasi SSHD.

$ sudo nano /etc/ssh/sshd_config

Cari garis yang akan terlihat seperti berikut.

AllowUsers myuser myotheruser git

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Mulai ulang layanan SSHD.

$ sudo systemctl restart ssh

Anda perlu menambahkan frasa sandi untuk kunci yang kami buat ke ssh-agent alat di sistem lokal Anda sehingga Anda tidak diminta berulang kali. Jalankan perintah berikut untuk melakukannya.

$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519

Anda dapat mengkloning repositori Anda untuk menguji koneksi SSH.

$ git clone ssh://[email protected]/username/repo.git
Cloning into 'repo'...
The authenticity of host 'example.com (201.110.80.160)' can't be established.
ECDSA key fingerprint is SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'example.com,201.110.80.160' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), 4.77 KiB | 977.00 KiB/s, done.

Kesimpulan

Ini menyimpulkan tutorial tentang menginstal dan mengonfigurasi layanan hosting kode Gitea di Fedora 34. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.


Fedora
  1. Cara Menginstal Platform Hosting Kode Gitea dengan HTTPS di CentOS 8

  2. Cara Menginstal Node.js di Fedora 35 / Fedora 34

  3. Cara menginstal dan mengkonfigurasi Redis 6 di Fedora 34

  1. Cara Menginstal Layanan Git Self-hosted Git menggunakan Docker di Ubuntu 18.04

  2. Cara Menginstal Vagrant di Fedora 34

  3. Cara Menginstal Platform Hosting Kode Gitea dengan HTTPS di Debian 10

  1. Cara Menginstal layanan Gitea Git di Debian 11

  2. Cara Menginstal OpenOffice 4.1.10 di Fedora 34

  3. Cara Menginstal AnyDesk di Fedora 35 / Fedora 34