Gogs je samostatně hostovaný git server s otevřeným zdrojovým kódem napsaný v Go. Zahrnuje editor souborů úložiště, sledování problémů projektu a vestavěnou wiki.
Gogsis je lehká aplikace a lze ji nainstalovat na systémy s nízkou spotřebou. Pokud hledáte alternativu ke Gitlabu s mnohem menším paměťovým prostorem a nepotřebujete všechny zvonky a píšťalky, které Gitlabo nabízí, měli byste určitě vyzkoušet Gogs.
Tento tutoriál popisuje kroky k instalaci a konfiguraci Gogs na Ubuntu 18.04. Stejné pokyny platí pro Ubuntu 16.04 a jakoukoli jinou distribuci založenou na Ubuntu.
Než začnete #
Gogs může k ukládání všech svých dat používat SQLite, PostgreSQL nebo MySQL/MariaDBdatabase.
V tomto tutoriálu použijeme jako databázi SQLite. Pokud SQLite není na vašem systému nainstalován, můžete jej nainstalovat zadáním:
sudo apt install sqlite3
Pro další vrstvu zabezpečení se doporučuje nastavit základní firewall. Můžete postupovat podle kroků v naší příručce Jak nastavit bránu firewall s UFW na Ubuntu 18.04.
Instalace Gogs #
Nainstalujeme Gogs z binárního kódu. Instalace je docela přímočarý proces.
Instalovat Git #
Prvním krokem je instalace Giton na váš server. Chcete-li tak učinit, obnovte místní index balíčku a nainstalujte balíček git spuštěním následujících příkazů jako uživatel sudo:
sudo apt update
sudo apt install git
Ověřte instalaci zobrazením verze Git:
git --version
git version 2.17.1
Vytvořit uživatele Git #
Vytvořte nového systémového uživatele pro spuštění služby Gogs zadáním:
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
Příkaz vytvoří uživatele a nastaví domovský adresář na /home/git
. Výstup bude vypadat nějak takto:
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' ...
Stáhnout Gogs binární #
Navštivte stránku Gogs Download a stáhněte si nejnovější binární soubor pro vaši architekturu. V době psaní tohoto článku je nejnovější verze 0.11.86, pokud je k dispozici nová verze, změňte VERSION
proměnnou v příkazu níže.
Stáhněte si archiv Gogs v /tmp
adresář pomocí následujícího příkazu wget:
VERSION=0.11.86
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
Po dokončení stahování rozbalte soubor Gogs tar.gz a přesuňte jej do /home/git
adresář:
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
Chcete-li změnit vlastnictví instalačního adresáře Gogs na git uživatele a skupiny, spusťte následující příkaz:
sudo chown -R git: /home/git/gogs
Vytvořte soubor systemd Unit #
Gogs se dodává se souborem jednotky Systemd, který je již nakonfigurován tak, aby odpovídal našemu nastavení.
Zkopírujte soubor do /etc/systemd/system/
adresář zadáním:
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
Po dokončení spusťte a povolte službu Gogs:
sudo systemctl start gogs
sudo systemctl enable gogs
Ověřte, zda je služba úspěšně spuštěna:
* 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
Nainstalujte Gogs pomocí webového instalačního programu #
Nyní, když je Gogs stažen a spuštěn, je čas dokončit instalaci prostřednictvím webového rozhraní.
Otevřete prohlížeč, zadejte http://YOUR_DOMAIN_IR_IP:3000
a objeví se obrazovka podobná následující:
Nastavení databáze:
- Typ databáze:SQLite3
- Cesta:Použijte absolutní cestu,
/home/git/gogs/gogs.db
Obecná nastavení aplikace
- Název aplikace:Zadejte název vaší organizace
- Kořenová cesta úložiště:Ponechte výchozí
/home/git/gogs-repositories
- Spustit uživatele:git
- Doména:Zadejte svou doménu nebo IP adresu serveru.
- Port SSH:22, změňte jej, pokud SSH naslouchá na jiném portu
- Port HTTP:3000
- Adresa URL aplikace:Použijte http a adresu IP vaší domény nebo serveru.
- Cesta protokolu:Ponechte výchozí
/home/git/gogs/log
Po dokončení stiskněte tlačítko „Instalovat Gogs“. Instalace je okamžitá a po dokončení budete přesměrováni na přihlašovací stránku.
Klikněte na odkaz „Zaregistrovat se nyní“.
První registrovaný uživatel je automaticky přidán do skupiny Admin.
A je to. Gogs byl nainstalován na vašem počítači Ubuntu.
Konfigurace Nginx jako proxy pro ukončení SSL #
Tento krok je volitelný, ale důrazně se doporučuje. Chcete-li použít Nginx jako reverzní proxy, musíte mít doménu nebo subdoménu směřující na veřejnou IP vašeho serveru. V tomto tutoriálu budeme používat gogs.example.com
.
Nejprve nainstalujte Nginx a vygenerujte bezplatný certifikát Let’s Encrypt SSL podle následujících pokynů:
- Jak nainstalovat Nginx na Ubuntu 18.04
- Zabezpečte Nginx pomocí Let’s Encrypt na Ubuntu 18.04
Po dokončení otevřete textový editor a upravte blockfile doménového serveru:
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;
}
}
Nezapomeňte nahradit gogs.example.com svou doménou Gogs a nastavit správnou cestu k souborům certifikátu SSL. Všechny požadavky HTTP budou přesměrovány na HTTPS Restartujte službu Nginx, aby se změny projevily:
sudo systemctl restart nginx
Dále musíme změnit doménu Gogs a kořenovou adresu URL. Chcete-li tak učinit, otevřete konfigurační soubor a upravte následující řádky:
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/
Restartujte službu Gogs zadáním:
sudo systemctl restart gogs
V tomto okamžiku je Gogs nakonfigurován a můžete k němu přistupovat na adrese:https://gogs.example.com
Konfigurace e-mailových upozornění #
Aby mohl Gogs posílat e-maily s upozorněním, můžete si nainstalovat Postfix nebo použít nějakou transakční poštovní službu, jako je SendGrid, MailChimp, MailGun nebo SES.
Chcete-li povolit e-mailová upozornění, otevřete konfigurační soubor a upravte následující řádky:
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
Ujistěte se, že jste zadali správné informace o serveru SMTP.
Restartujte službu Gogs, aby se změny projevily:
sudo systemctl restart gogs
Gogs vám také umožňuje připojit se ke Slacku vytvořením webového webhooku a zasíláním upozornění na vaše kanály Slack.
Upgrade Gogs #
Upgrade Gogs vyžaduje několik ručních kroků.
-
Nejprve zastavte službu Gogs:
sudo systemctl stop gogs
-
Přejmenujte instalační adresář Gogs.
sudo mv /home/git/gogs{,_old}
-
Stáhněte si nejnovější verzi Gogs a přesuňte ji do
/home/git
adresář: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
Ujistěte se, že jste změnili
VERSION
se skutečnou verzí vydání Gogs. -
Zkopírujte
custom
,data
,log
adresářů do extrahovaného adresáře pomocí následujícího příkazu rsync:sudo rsync -a /home/git/gogs_old/{custom,data,log,gogs.db} /home/git/gogs/
-
Nakonec spusťte službu Gogs:
sudo systemctl restart gogs
To je ono.