Gitea è una soluzione di hosting di codice open source basata sulla piattaforma Git. È scritto nella lingua Go. Include un editor di file di repository, rilevamento dei problemi, richieste pull, gestione degli utenti, notifiche, wiki integrato, supporto LFS, hook Git e molto altro.
È un'applicazione leggera. Pertanto, può essere installato su sistemi a bassa potenza. Se stai cercando una piattaforma Git self-hosted con una piattaforma di memoria più piccola, dovresti dare un'occhiata a Gitea.
Questo articolo tratterà come installare e configurare Gitea su Fedora 34 e come configurare il tuo primo repository Git. Gitea può essere installato da sorgente, binario, un pacchetto docker o un pacchetto. Per il nostro tutorial, lo installeremo da binario.
Prerequisiti
- Un server che esegue Fedora 34.
- Un utente sudo non root.
- SELinux disabilitato.
-
Assicurati che tutto sia aggiornato.
$ sudo dnf update
Passaggio 1:configurazione del firewall
Il primo passo è configurare il firewall. Il server Fedora viene fornito con Firewalld firewall.
Controlla se il firewall è in esecuzione.
$ sudo firewall-cmd --state
Dovresti ottenere il seguente output.
running
Controlla i servizi/porte attualmente consentiti.
$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
dhcpv6-client mdns ssh
Consenti porte HTTP e HTTPS.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Ricontrolla lo stato del firewall.
$ sudo firewall-cmd --permanent --list-services
Dovresti vedere un output simile.
dhcpv6-client http https mdns ssh
Ricarica il firewall.
$ sudo systemctl reload firewalld
Passaggio 2:installa Git
Il primo passo è installare Git.
$ sudo dnf install git
Verifica l'installazione controllando la versione Git.
$ git --version
git version 2.31.1
Configura Git
Git può essere configurato con git config
comando. Imposta il tuo nome e indirizzo email per lavorare con Git.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Puoi controllare la configurazione usando il seguente comando.
$ git config --list
user.name=Your Name
[email protected]
Passaggio 3 - Installa e configura PostgreSQL
Gitea supporta SQLite, MySQL/Mariadb, MSSQL e PostgreSQL. Per il nostro tutorial useremo PostgreSQL.
Installa e inizializza 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 utilizza lo schema di crittografia md5 per l'autenticazione della password per impostazione predefinita che non è sicuro. Devi passare a SCRAM-SHA-256
schema. E se hai intenzione di connetterti a un database PostgreSQL remoto, devi configurarlo per ascoltare il tuo indirizzo IP. Entrambi possono essere modificati modificando /var/lib/pgsql/data/postgresql.conf
file. Aprilo per la modifica.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Modifica le seguenti variabili nel modo seguente.
listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia PostgreSQL.
$ sudo systemctl restart postgresql
Accedi alla shell di PostgreSQL.
$ sudo -u postgres psql
Crea un nuovo utente SQL e database per Gitea. Scegli una password complessa per l'utente del database.
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';
Sostituisci il nome utente, il nome del database e la password come appropriato.
Esci dalla shell digitando \q
.
Consenti all'utente del database di accedere al database creato sopra aggiungendo la seguente regola di autenticazione a /var/lib/pgsql/data/pg_hba.conf
.
Se il database è locale, aggiungi questa riga.
local giteadb gitea scram-sha-256
Per un database remoto, usa invece il seguente codice.
host giteadb gitea 192.0.2.10/32 scram-sha-256
Dovrai anche modificare le seguenti righe aggiungendo la sostituzione di ident
con scram-sha-256
.
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Dovrebbero avere il seguente aspetto.
# 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
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia PostgreSQL.
$ sudo systemctl restart postgresql
Dovrai anche aggiungere la seguente regola nel firewall se desideri abilitare le connessioni remote.
$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload
Passaggio 4:crea un utente Git
Crea un nuovo utente di sistema per eseguire l'applicazione Gitea.
$ sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
git
Questo comando crea un nuovo utente e gruppo chiamato git
e imposta la directory home su /home/git
.
Fase 5 - Installa Gitea
Apri la pagina dei download di Gitea e controlla il numero di versione dell'ultimo binario disponibile. Al momento della stesura di questo tutorial, l'ultima versione è 1.14.3. Se esiste una versione più recente, cambiala in VERSION
variabile nel comando seguente.
Usa il wget
utility per prendere l'ultimo binario di Gitea.
$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
Sposta il file binario scaricato in /usr/local/bin
directory.
$ sudo mv gitea /usr/local/bin
Rendi eseguibile il binario.
$ sudo chmod +x /usr/local/bin/gitea
Esegui i seguenti comandi per creare directory e impostare le autorizzazioni necessarie affinché Gitea funzioni correttamente.
$ 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
L'autorizzazione per /etc/gitea
La directory è impostata su 770 affinché la procedura guidata di installazione crei il file di configurazione. Una volta completata l'installazione, imposteremo autorizzazioni più restrittive.
Crea un file di servizio Systemd
Eseguiremo Gitea come servizio systemd. Per questo, crea un nuovo file systemd entry per Gitea.
$ sudo nano /etc/systemd/system/gitea.service
Incolla il seguente codice al suo interno.
[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
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Per riferimento, puoi dare un'occhiata al file systemd di esempio disponibile dal repository Gitea.
Ricarica il demone systemd per abilitare il file che abbiamo appena creato.
$ sudo systemctl daemon-reload
Abilita e avvia il servizio Gitea.
$ sudo systemctl enable --now gitea
Verifica che Gitea sia in esecuzione.
$ 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
...
Fase 6 - Configura Gitea
Gitea, per impostazione predefinita, è in ascolto sulla porta 3000. Puoi utilizzare una porta diversa o attenersi alla porta predefinita. Pertanto, dobbiamo aprire anche la porta 3000.
$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload
Apri il browser e digita https://YOURIPADDRESS:3000
e sarai accolto con il programma di installazione di Gitea. Utilizzare i seguenti valori per configurare.
Impostazioni database
- Tipo di database: Scegli PostgreSQL dal menu a discesa
- Ospite: 127.0.0.1:5432
- Nome utente: gitea
- Password: la tua password
- Nome database: gitea
Impostazioni generali
- Titolo del sito: Inserisci il nome della tua organizzazione
- Percorso radice del repository: Lascia il percorso predefinito
- Percorso radice Git LFS: Lascia il percorso predefinito
- Esegui come nome utente: git
- Dominio del server SSH: Inserisci il tuo indirizzo IP
- Porta di ascolto HTTP: 3000 (puoi cambiare la porta qui, ma dovrai accedervi tramite il firewall.)
- URL base Gitea: http://IL TUO INDIRIZZO:3000
- Percorso registro: Lascia l'impostazione predefinita
È possibile configurare le impostazioni e-mail e server a questo punto, oppure modificarle in un secondo momento. Tuttavia, dovresti compilare le impostazioni dell'account amministratore.
Per avviare l'installazione, fai clic su Installa Gitea* pulsante. Una volta completato, verrai automaticamente registrato e reindirizzato alla dashboard dell'account.
L'installazione creerà il file di configurazione di Gitea. Modifica la sua autorizzazione in sola lettura.
$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini
Questo è tutto. Gitea è ora installato sul tuo server.
Passaggio 7:installa SSL utilizzando Let's Encrypt
Per installare un certificato SSL utilizzando Let's Encrypt, dobbiamo scaricare lo strumento Certbot utilizzando il programma di installazione del pacchetto Snapd incluso in Ubuntu 20.04.
Esegui i seguenti comandi per installare Certbot.
$ sudo dnf install certbot
Genera il certificato SSL.
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
Il comando precedente scaricherà un certificato in /etc/letsencrypt/live/example.com
directory sul tuo server.
Crea una directory webroot di sfida per il rinnovo automatico di Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, prima crea il file /etc/cron.daily/certbot-renew
e aprilo per la modifica.
$ sudo nano /etc/cron.daily/certbot-renew
Incolla il seguente codice.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Modifica le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Passaggio 8 - Installa e configura Nginx
Il prossimo passo è installare il server Nginx.
$ sudo dnf install nginx
Crea il file di configurazione di Nginx per Gitea.
$ sudo nano /etc/nginx/conf.d/gitea.conf
Incolla il seguente codice al suo interno.
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;
}
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Verifica se il file di configurazione funziona correttamente.
$ sudo nginx -t
Riavvia il server Nginx.
$ sudo systemctl restart nginx
Quindi, cambia il dominio Gitea e l'URL principale. Per farlo, apri il file di configurazione /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Modifica i seguenti valori.
[server]
SSH_DOMAIN = git.example.com
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il servizio Gitea.
$ sudo systemctl restart gitea
Passaggio 9 - Impostazione delle notifiche e-mail
Se desideri ricevere notifiche e-mail, puoi abilitarle tramite Sendmail o tramite un servizio di transazione e-mail di terze parti come Amazon SES, Postmark, Mailgun o Sendgrid.
Per abilitare le notifiche, apri il file di configurazione /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Modifica la sezione seguente nel file e aggiungi il codice seguente.
[mailer]
ENABLED = true
FROM = [email protected]
MAILER_TYPE = smtp
HOST = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER = [email protected]
PASSWD = `password`
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il servizio Gitea.
$ sudo systemctl restart gitea
Fase 10 - Aggiornamento di Gitea
L'aggiornamento di Gitea comporta il download e la sostituzione del file binario di Gitea.
Per prima cosa, interrompi il servizio Gitea.
$ sudo systemctl stop gitea
Scarica e installa Gitea binario.
$ 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
Riavvia il servizio Gitea.
$ sudo systemctl start gitea
Passaggio 11 - Come utilizzare SSH
Per utilizzare SSH, dobbiamo aggiungere la nostra chiave SSH a Gitea. Se non ne hai uno, puoi crearne uno usando il seguente comando sul tuo sistema locale.
$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"
Questo creerà una chiave denominata id_ed25519
nel ~/.ssh
directory. Per aggiungere questa chiave, copia il contenuto del file ~/.ssh/id_ed25519.pub
negli appunti. Quindi aggiungi questa chiave alla pagina delle impostazioni di Gitea nella scheda Chiavi SSH/GPG . Fai clic su Aggiungi chiave pulsante e assegna un nome alla chiave e incollala nella casella.
Se hai un elenco di utenti consentiti nel file di configurazione sshd, devi aggiungere git
ad esso.
Apri il file di configurazione SSHD.
$ sudo nano /etc/ssh/sshd_config
Cerca una riga che dovrebbe assomigliare alla seguente.
AllowUsers myuser myotheruser git
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia il servizio SSHD.
$ sudo systemctl restart ssh
Devi aggiungere la passphrase per la chiave che abbiamo creato a ssh-agent
strumento sul tuo sistema locale in modo che non ti venga chiesto ripetutamente. Esegui i seguenti comandi per farlo.
$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519
Puoi clonare il tuo repository per testare la connessione 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.
Conclusione
Questo conclude il tutorial sull'installazione e la configurazione del servizio di hosting del codice Gitea su Fedora 34. Se hai domande, pubblicale nei commenti qui sotto.