Introduzione
Gogs è un server git open source self-hosted scritto in Go. Include un editor di file del repository, il rilevamento dei problemi del progetto e un wiki integrato.
Gogs è un'applicazione leggera e può essere installata su sistemi a bassa potenza. Se stai cercando un'alternativa a Gitlab con un footprint di memoria molto più piccolo e non hai bisogno di tutte le campane e fischietti che Gitlab offre, allora dovresti provare Gogs.
Questo tutorial illustra i passaggi per installare e configurare Gogs su Ubuntu 18.04. Le stesse istruzioni valgono per Ubuntu 16.04.
Se il tuo intento è installare Gogs su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Prima di iniziare
Gogs può utilizzare il database SQLite, PostgreSQL o MySQL/MariaDB per archiviare tutti i suoi dati.
In questo tutorial, useremo SQLite come database preferito. Se SQLite non è installato sul tuo sistema puoi installarlo digitando:
sudo apt install sqlite3
Per un ulteriore livello di sicurezza, si consiglia di impostare un firewall di base. Puoi seguire i passaggi nella nostra guida: Come configurare UFW Firewall su Ubuntu 18.04 LTS.
Installare Git
Installeremo Gogs da binario. L'installazione è un processo piuttosto semplice.
Il primo passo è installare Git sul tuo server. Per fare ciò, aggiorna l'indice del pacchetto locale e installa il pacchetto git eseguendo i seguenti comandi come utente sudo:
sudo apt update
sudo apt install git
Verifica l'installazione visualizzando la versione Git:
git --version
Dovresti visualizzare un messaggio di output simile al seguente:
git version 2.17.1
Creare un utente Git
Crea un nuovo utente di sistema per eseguire il servizio Gogs digitando:
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
Il comando creerà l'utente e imposterà la home directory su /home/git
. L'output sarà simile al seguente:
Adding system user `git' (UID 111) ...
Adding new group `git' (GID 116) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...
Scaricare il binario di Gogs
Visita la pagina di download di Gogs e scarica l'ultimo binario per la tua architettura. Al momento in cui scrivo, l'ultima versione è 0.11.91, se è disponibile una nuova versione cambia la VERSION
variabile nel comando seguente.
Scarica l'archivio Gogs nella directory /tmp
usando il seguente comando wget:
VERSION=0.11.91
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
Una volta completato il download, estrarre il file tar.gz di Gogs e spostarlo nella directory /home/git
:
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
Eseguire il comando seguente per modificare la proprietà della directory di installazione di Gogs per l'utente e raggruppare git:
sudo chown -R git: /home/git/gogs
Creare un file unità di systemd
Gogs viene fornito con un file di unità Systemd che è già configurato per corrispondere alla nostra configurazione.
Copia il file nella directory /etc/systemd/system/
digitando:
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
Una volta fatto, avvia e abilita il servizio Gogs con il seguente comando:
sudo systemctl start gogs
sudo systemctl enable gogs
Verifica che il servizio sia avviato correttamente:
sudo systemctl status gogs
Dovresti visualizzare un messaggio di output simile al seguente:
● gogs.service - Gogs
Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-01-09 20:00:24 CET; 6s ago
Main PID: 18347 (gogs)
Tasks: 7 (limit: 2298)
CGroup: /system.slice/gogs.service
└─18347 /home/git/gogs/gogs web
...
Configurare Gogs usando il programma di installazione web
Ora che Gogs è scaricato e in esecuzione, è tempo di finalizzare l'installazione tramite l'interfaccia web.
Apri il tuo browser, digita http://TUO_DOMINIO_O_IP:3000
e apparirà una schermata di configurazione di Gogs come la seguente:
Impostazioni del database:
- Tipo di database: SQLite3
- Percorso: usa un percorso assoluto,
/home/git/gogs/gogs.db
Impostazioni generali dell'applicazione:
- Nome applicazione: immettere il nome dell'organizzazione
- Percorso root repository: lasciare l'impostazione predefinita
/home/git/gogs-repositories
- Run utente:
git
- Dominio: inserisci il tuo indirizzo IP di dominio o server.
- Porta SSH: 22, cambiarla se SSH è in ascolto su un'altra porta
- Porta HTTP:
3000
- URL dell'applicazione: utilizzare http e l'indirizzo IP del dominio o del server.
- Percorso registro: lascia il valore predefinito
/home/git/gogs/log
Successivamente è possibile modificare le impostazioni modificando il file di configurazione di Gogs.
Una volta fatto premi il pulsante Install Gogs. L'installazione è istantanea e una volta completata verrai reindirizzato alla pagina di accesso.
Fai clic sul link Sign up now.
Il primo utente registrato viene automaticamente aggiunto al gruppo Admin.
Questo è tutto. Gogs è stato installato sul tuo computer Ubuntu.
Configurazione di Nginx come proxy di terminazione SSL
Questo passaggio è facoltativo ma è altamente raccomandato. Per utilizzare Nginx come proxy inverso è necessario disporre di un dominio o sottodominio che punti all'IP pubblico del server. In questo tutorial, useremo example.com
.
Innanzitutto, installa Nginx e genera un certificato SSL Let's Encrypt gratuito seguendo le guide seguenti:
Una volta fatto, apri il tuo editor di testo e modifica il file di blocco del server (Server Blocks - Virtual Hosts) di dominio:
sudo nano /etc/nginx/sites-enabled/example.com
server {
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
client_max_body_size 50m;
# Proxy headers
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;
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
}
if ($host = example.com) {
return 301 https://$host$request_uri;
}
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 404; # managed by Certbot
}
Non dimenticare di sostituire example.com con il tuo dominio Gogs e impostare il percorso corretto per i file del certificato SSL. Tutte le richieste HTTP verranno reindirizzate a HTTPS.
Riavvia il servizio Nginx per rendere effettive le modifiche:
sudo systemctl restart nginx
Successivamente, dobbiamo cambiare il dominio Gogs e l'URL di root. Per fare ciò, apri il file di configurazione e modifica le seguenti righe:
sudo nano /home/git/gogs/custom/conf/app.ini
Inserisci il tuo nome dominio:
[server]
DOMAIN = example.com
ROOT_URL = https://example.com/
Riavvia il servizio Gogs digitando:
sudo systemctl restart gogs
A questo punto, Gogs è configurato e puoi accedervi da HTTPS: https://example.com
.
Configurazione delle notifiche e-mail
Affinché Gogs sia in grado di inviare e-mail di notifica, è possibile installare Postfix o utilizzare alcuni servizi di posta transazionale come SendGrid, MailChimp, MailGun o SES.
Per abilitare le notifiche e-mail, aprire il file di configurazione e modificare le seguenti righe:
sudo nano /home/git/gogs/custom/conf/app.ini
[mailer]
ENABLED = true
HOST = SMTP_SERVER:SMTP_PORT
FROM = SENDER_EMAIL
USER = SMTP_USER
PASSWD = YOUR_SMTP_PASSWORD
Assicurati di inserire le informazioni corrette sul server SMTP.
Riavvia il servizio Gogs per rendere effettive le modifiche:
sudo systemctl restart gogs
Gogs ti consente anche di connetterti a Slack creando un webhook web e inviando notifiche ai tuoi canali Slack.
Aggiornare Gogs
Per aggiornare Gogs, sono necessari diversi passaggi manuali.
Primo arresto del servizio Gogs:
sudo systemctl stop gogs
Rinomina la directory di installazione di Gogs.
sudo mv /home/git/gogs{,_old}
Scarica l'ultima versione di Gogs e spostala nella directory /home/git
:
VERSION=<THE_LATEST_GOGS_VERSION>
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
Assicurati di cambiare VERSION
con l'attuale versione di rilascio di Gogs.
Copia custom
, data
, log
alla directory estratta utilizzando il seguente comando rsync:
sudo rsync -a /home/git/gogs_old/{custom,data,log} /home/git/gogs/
Infine, avvia il servizio Gogs:
sudo systemctl restart gogs
Questo è tutto.
Conclusione
Questo tutorial ti ha guidato attraverso l'installazione e la configurazione di Gogs su Ubuntu 18.04. Ora puoi creare il tuo primo progetto e iniziare a utilizzare il tuo nuovo server Gogs.