Gogs è un server git open source self-hosted scritto in Go. Include un editor di file di repository, il monitoraggio dei problemi del progetto e un wiki integrato.
Gog è 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 tutti i campanelli e i fischietti offerti da Gitlab, dovresti assolutamente provare Gogs.
Questo tutorial illustra i passaggi per installare e configurare Gogs su Ubuntu 18.04. Le stesse istruzioni si applicano per Ubuntu 16.04 e qualsiasi altra distribuzione basata su Ubuntu.
Prima di iniziare #
I gogs possono utilizzare SQLite, PostgreSQL o MySQL/MariaDBdatabase 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 configurare un firewall di base. Puoi seguire i passaggi nella nostra guida Come configurare un firewall con UFW su Ubuntu 18.04.
Installazione di Gogs #
Installeremo Gogs dal binario. L'installazione è un processo piuttosto semplice.
Installa Git #
Il primo passo è installare Giton 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
git version 2.17.1
Crea 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 directory home 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' ...
Scarica Gogs binario #
Visita la pagina di download di Gogs e scarica l'ultimo binario per la tua architettura. Al momento in cui scrivo l'ultima versione è la 0.11.86, se è disponibile una nuova versione cambia la VERSION
variabile nel comando seguente.
Scarica l'archivio Gogs nel /tmp
directory utilizzando il seguente comando wget:
VERSION=0.11.86
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
Una volta completato il download, estrai il file Gogs tar.gz e spostalo nel /home/git
directory:
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
Esegui il comando seguente per modificare la proprietà della directory di installazione di Gogs nell'utente e nel gruppo git:
sudo chown -R git: /home/git/gogs
Crea un file di unità systemd #
Gogs viene fornito con un file di unità Systemd che è già configurato per corrispondere alla nostra configurazione.
Copia il file in /etc/systemd/system/
directory digitando:
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
Al termine, avvia e abilita il servizio Gogs:
sudo systemctl start gogs
sudo systemctl enable gogs
Verifica che il servizio sia stato avviato correttamente:
* gogs.service - Gogs
Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-04-25 04:13:44 PDT; 9s ago
Main PID: 14376 (gogs)
Tasks: 8 (limit: 2319)
CGroup: /system.slice/gogs.service
`-14376 /home/git/gogs/gogs web
Installa Gogs utilizzando il programma di installazione web #
Ora che Gogs è stato scaricato ed è in esecuzione, è il momento di finalizzare l'installazione tramite l'interfaccia web.
Apri il browser, digita http://YOUR_DOMAIN_IR_IP:3000
e apparirà una schermata simile alla seguente:
Impostazioni database:
- Tipo di database:SQLite3
- Percorso:utilizza un percorso assoluto,
/home/git/gogs/gogs.db
Impostazioni generali dell'applicazione
- Nome applicazione:inserisci il nome della tua organizzazione
- Percorso radice del repository:lascia il
/home/git/gogs-repositories
predefinito - Esegui utente:git
- Dominio:inserisci il tuo dominio o indirizzo IP del server.
- Porta SSH:22, cambiala se SSH è in ascolto su un'altra porta
- Porta HTTP:3000
- URL dell'applicazione:utilizza http e l'indirizzo IP del tuo dominio o server.
- Percorso registro:lascia il
/home/git/gogs/log
predefinito
Una volta terminato, premi il pulsante "Installa Gogs". L'installazione è istantanea e una volta completata verrai reindirizzato alla pagina di accesso.
Fai clic sul link "Registrati ora".
Il primo utente registrato viene automaticamente aggiunto al gruppo Admin.
Questo è tutto. Gogs è stato installato sulla tua macchina Ubuntu.
Configurazione di Nginx come proxy di terminazione SSL #
Questo passaggio è facoltativo ma è altamente raccomandato. Per utilizzare Nginx come proxy inverso, devi avere un dominio o un sottodominio che punta all'IP pubblico del tuo server. In questo tutorial utilizzeremo gogs.example.com
.
Innanzitutto, installa Nginx e genera un certificato SSL Let's Encrypt gratuito seguendo le guide seguenti:
- Come installare Nginx su Ubuntu 18.04
- Proteggi Nginx con Let's Encrypt su Ubuntu 18.04
Una volta terminato, apri il tuo editor di testo e modifica il file di blocco del server di dominio:
sudo nano /etc/nginx/sites-enabled/gogs.example.com
/etc/nginx/sites-enabled/gogs.example.comserver {
listen 80;
server_name gogs.example.com;
include snippets/letsencrypt.conf;
return 301 https://gogs.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name gogs.example.com;
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;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/gogs.example.com/chain.pem;
include snippets/letsencrypt.conf;
include snippets/ssl.conf;
# log files
access_log /var/log/nginx/gogs.example.com.access.log;
error_log /var/log/nginx/gogs.example.com.error.log;
# Handle / requests
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
}
Non dimenticare di sostituire gogs.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 modificare il dominio Gogs e l'URL di root. Per farlo, apri il file di configurazione e modifica le seguenti righe:
sudo nano /home/git/gogs/custom/conf/app.ini
/home/git/gogs/custom/conf/app.ini[server]
DOMAIN = gogs.example.com
ROOT_URL = https://gogs.example.com/
Riavvia il servizio Gogs digitando:
sudo systemctl restart gogs
A questo punto, Gogs è configurato e puoi accedervi da:https://gogs.example.com
Configurazione delle notifiche e-mail #
Affinché Gogs possa inviare e-mail di notifica, puoi installare Postfix o utilizzare alcuni servizi di posta transazionale come SendGrid, MailChimp, MailGun o SES.
Per abilitare le notifiche e-mail, apri il file di configurazione e modifica le seguenti righe:
sudo nano /home/git/gogs/custom/conf/app.ini
/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 webhook web e inviando notifiche ai tuoi canali Slack.
Aggiornamento Gogs #
Per aggiornare Gogs, sono necessari diversi passaggi manuali.
-
Per prima cosa interrompi il servizio Gogs:
sudo systemctl stop gogs
-
Rinominare la directory di installazione di Gogs.
sudo mv /home/git/gogs{,_old}
-
Scarica l'ultima versione di Gogs e spostala in
/home/git
directory: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
directory nella directory estratta utilizzando il seguente comando rsync:sudo rsync -a /home/git/gogs_old/{custom,data,log,gogs.db} /home/git/gogs/
-
Infine, avvia il servizio Gogs:
sudo systemctl restart gogs
Questo è tutto.