Gitea è un'applicazione web di hosting di codice scritta in Go e biforcuta da Gogs. Come suggerisce il nome, è progettato per essere utilizzato con il popolare programma di controllo del codice sorgente Git, in modo simile a Gitlab e Github. Questa guida spiegherà come installare Gitea su Debian 10 dietro un proxy inverso HTTPS (Nginx).
Requisiti
- Un sistema Debian 10 su cui hai i privilegi di root.
- Un nome di dominio registrato che punta al tuo server.
- La variabile d'ambiente $EDITOR dovrebbe essere impostata.
- Accesso a un server SMTP per le notifiche e-mail (opzionale).
Assicurati che il tuo (sotto)dominio punti all'indirizzo IPv4 del tuo server con un record A. Facoltativamente, crea un record AAAA che punta all'indirizzo IPv6 del tuo server.
Fase 1:preparazione del sistema
Inizia aggiornando l'indice del tuo pacchetto e installa tutti gli aggiornamenti disponibili:
apt update apt upgrade -y reboot
Per questa configurazione sono necessari diversi pacchetti software:
- Git, una dipendenza di Gitea.
- PostgreSQL, poiché Gitea richiede un database.
- Nginx, che verrà utilizzato come proxy inverso.
- Certbot, un'utilità per ottenere certificati SSL Let's Encrypt.
- Sudo, per eseguire comandi come utente del sistema postgres.
Installali come segue:
apt install -y git nginx certbot postgresql sudo
Quindi, crea un utente per eseguire Gitea:
adduser --system --disabled-password --group --shell /bin/bash --home /home/gitea gitea
Quindi crea la struttura delle directory per Gitea:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
E imposta le proprietà e le autorizzazioni come segue:
chown -R gitea:gitea /var/lib/gitea chown -R gitea:gitea /run/gitea chown -R root:gitea /etc/gitea chmod -R 750 /var/lib/gitea chmod 770 /etc/gitea
I permessi su /etc/gitea sono temporanei e verranno rafforzati dopo l'esecuzione del programma di installazione web.
Fase 2:configurazione del database
Assicurati che Postgres sia abilitato e in esecuzione:
systemctl enable --now [email protected]
Quindi crea un ruolo utente e un database che verranno utilizzati da Gitea:
sudo -u postgres psql postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password'; postgres=# CREATE DATABASE gitea; postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea; postgres=# exit;
Fase 3:installazione di Gitea
Scarica l'ultimo binario linux-amd64 dalla pagina di download di Gitea. Ad esempio:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea chmod 755 /usr/local/bin/gitea
Quindi, crea un file di unità systemd per Gitea:
$EDITOR /etc/systemd/system/gitea.service
E inserisci quanto segue:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target Requires=postgresql.service [Service] Type=simple User=gitea Group=gitea WorkingDirectory=/var/lib/gitea/ RuntimeDirectory=gitea ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Assicurati che la nuova unità sia caricata:
systemctl daemon-reload
Quindi indica a systemd di avviare Gitea all'avvio del sistema:
systemctl enable gitea.service
Fase 4:configurazione di Gitea
Per la configurazione iniziale, utilizzeremo lo script di installazione Web incluso. Per prima cosa, avvia Gitea:
systemctl start gitea.service
Quindi vai a http://tuo_dominio:3000/install e inserisci i parametri richiesti come segue:
- Tipo di database:PostgreSQL
- Ospite:127.0.0.1:5432
- Nome utente:gitea
- Password:inserisci la password che hai scelto durante la creazione del ruolo Postgres.
- Nome database:gitea
- SSL:Disattiva
- Titolo del sito:titolo a tua scelta.
- Percorso radice del repository:/var/lib/gitea/data/repositories
- Percorso radice Git LFS:/var/lib/gitea/data/lfs
- Esegui come nome utente:gitea
- Dominio server SSH:tuo_dominio
- Porta server SSH:22
- Post di ascolto HTTP Gitea:3000
- URL di Gitea Base:https://tuo_dominio/
- Percorso registro:/var/lib/gitea/log
Configura l'e-mail e le restanti impostazioni come ritenuto opportuno, quindi fai clic su "Installa Gitea". Verrai reindirizzato a un URL errato. Questo è normale, poiché non abbiamo ancora configurato Nginx o HTTPS. Per motivi di prestazioni, configureremo ora Gitea per l'ascolto su un socket unix anziché sulla porta TCP predefinita.
Ferma Gitea prima di procedere:
systemctl stop gitea.service
Aumenta le autorizzazioni su /etc/gitea come mostrato di seguito. Ciò impedisce a chiunque non faccia parte del gruppo gitea di leggere app.ini, che contiene informazioni riservate, comprese le credenziali del database.
chmod 750 /etc/gitea chown root:gitea /etc/gitea/app.ini chmod 640 /etc/gitea/app.ini
Apri il suo file di configurazione:
$EDITOR /etc/gitea/app.ini
Remove the following line from the [server] section:
HTTP_PORT = 3000
And add the following lines to the [server] section:
HTTP_ADDR = /run/gitea/gitea.sock PROTOCOL = unix UNIX_SOCKET_PERMISSION = 666
Fase 5:configurazione del proxy inverso
Stop Nginx if it is running, as certbot will need to bind to port 80:
systemctl stop nginx.service
Utilizza il comando seguente per ottenere un certificato per il tuo dominio:
certbot certonly --standalone --agree-tos -m [email protected] -d your_domain
Let's Encrypt verificherà la proprietà del dominio prima di emettere il certificato. Il tuo certificato, catena e chiave privata verranno archiviati in /etc/letsencrypt/live/tuo_dominio/.
Ora possiamo configurare Nginx. Crea un nuovo file di configurazione:
$EDITOR /etc/nginx/sites-available/gitea
E inserisci la seguente configurazione:
server { listen 80; listen [::]:80; server_name your_domain; return 301 https://$server_name$request_uri; access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; } server { listen 443 ssl; listen [::]:443 ssl; server_name your_domain; ssl on; ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem; location / { proxy_pass http://unix:/var/run/gitea/gitea.sock; } access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; }
Il primo blocco server serve semplicemente a reindirizzare tutte le richieste HTTP a HTTPS. Il secondo blocco ascolta le connessioni HTTPS e le invia tramite proxy al socket unix su cui abbiamo configurato Gitea per l'ascolto.
Dopo aver salvato la configurazione di cui sopra, esegui quanto segue per abilitarla:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
Verifica la presenza di eventuali errori di sintassi e modifica la configurazione di conseguenza:
nginx -t
Infine, avvia Nginx e Gitea:
systemctl start nginx.service gitea.service
La tua istanza Gitea ora dovrebbe funzionare correttamente. Se non hai creato un account amministratore utilizzando il programma di installazione web iniziale, al primo utente che si iscriverà verrà assegnato il ruolo di amministratore.
Passaggi facoltativi
Configurazione registrazione
Per impostazione predefinita, Gitea registra i messaggi di livello di gravità Info e superiore. Molto probabilmente vorrai cambiarlo in Avvisa o Errore. Per farlo, apri /etc/gitea/app.ini e cambia il parametro LEVEL nella sezione [log] in uno tra:trace, debug, info, warn, error, critical, fatal, nessuno. Ad esempio, per registrare i messaggi di gravità Warn e superiori, utilizzare:
[log] MODE = file LEVEL = warn ROOT_PATH = /var/lib/gitea/log
Riavvia Gitea per rendere effettive le modifiche:
systemctl restart gitea.service
Server SSH separato
Gitea può in alternativa utilizzare il proprio server SSH. Per abilitarlo, aggiungi la seguente riga alla sezione di configurazione [server]:
START_SSH_SERVER = true
E cambia la porta SSH in qualsiasi numero superiore a 1000, ad esempio:
SSH_PORT = 2222
Quindi riavvia Gitea per applicare le modifiche.