Gitea je webová aplikace pro hostování kódu napsaná v Go a rozvětvená z Gogs. Jak jeho název napovídá, je navržen pro použití s populárním programem pro ovládání zdrojů Git, podobně jako Gitlab a Github. Tato příručka vysvětlí, jak nainstalovat Gitea na Debian 10 za HTTPS reverzní proxy (Nginx).
Požadavky
- Systém Debian 10, na kterém máte oprávnění root.
- Název registrované domény odkazující na váš server.
- Měla by být nastavena proměnná prostředí $EDITOR.
- Přístup k serveru SMTP pro e-mailová upozornění (volitelné).
Ujistěte se, že vaše (sub)doména ukazuje na IPv4 adresu vašeho serveru se záznamem A. Volitelně vytvořte záznam AAAA směřující na adresu IPv6 vašeho serveru.
Krok 1:Příprava systému
Začněte aktualizací indexu balíčků a nainstalujte všechny dostupné aktualizace:
apt update apt upgrade -y reboot
Pro toto nastavení je vyžadováno několik softwarových balíčků:
- Git, závislý na Gitea.
- PostgreSQL, protože Gitea vyžaduje databázi.
- Nginx, který bude použit jako reverzní proxy.
- Certbot, nástroj pro získávání certifikátů Let's Encrypt SSL.
- Sudo, chcete-li spouštět příkazy jako uživatel systému postgres.
Nainstalujte je následovně:
apt install -y git nginx certbot postgresql sudo
Dále vytvořte uživatele pro spuštění Gitea:
adduser --system --disabled-password --group --shell /bin/bash --home /home/gitea gitea
Poté vytvořte adresářovou strukturu pro Gitea:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
A nastavte vlastnictví a oprávnění následovně:
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
Oprávnění v /etc/gitea jsou dočasná a budou zpřísněna po spuštění webového instalačního programu.
Krok 2:Nastavení databáze
Ujistěte se, že je Postgres povolen a spuštěn:
systemctl enable --now [email protected]
Poté vytvořte uživatelskou roli a databázi, kterou bude Gitea používat:
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;
Krok 3:Instalace Gitea
Stáhněte si nejnovější binární soubor linux-amd64 ze stránky pro stahování Gitea. Například:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea chmod 755 /usr/local/bin/gitea
Dále vytvořte soubor systemd unit pro Gitea:
$EDITOR /etc/systemd/system/gitea.service
A zadejte následující:
[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
Ujistěte se, že je zavedena nová jednotka:
systemctl daemon-reload
Poté požádejte systemd, aby spustil Gitea při startu systému:
systemctl enable gitea.service
Krok 4:Konfigurace Gitea
Pro počáteční konfiguraci použijeme přiložený webový instalační skript. Nejprve spusťte Gitea:
systemctl start gitea.service
Poté přejděte na http://vaše_doména:3000/install a vyplňte požadované parametry takto:
- Typ databáze:PostgreSQL
- Hostitel:127.0.0.1:5432
- Uživatelské jméno:gitea
- Heslo:Zadejte heslo, které jste zvolili při vytváření role Postgres.
- Název databáze:gitea
- SSL:Zakázat
- Název webu:Název dle vašeho výběru.
- Kořenová cesta úložiště:/var/lib/gitea/data/repositories
- Kořenová cesta Git LFS:/var/lib/gitea/data/lfs
- Spustit jako uživatelské jméno:gitea
- Doména serveru SSH:vaše_doména
- Port serveru SSH:22
- Gitea HTTP Listen Post:3000
- Základní adresa URL Gitea:https://vaše_doména/
- Cesta protokolu:/var/lib/gitea/log
Nakonfigurujte e-mail a zbývající nastavení, jak uznáte za vhodné, a poté klikněte na „Instalovat Gitea“. Budete přesměrováni na chybnou adresu URL. To je normální, protože jsme ještě nenakonfigurovali Nginx ani HTTPS. Z důvodů výkonu nyní nakonfigurujeme Gitea tak, aby naslouchala na unixovém soketu namísto výchozího TCP portu.
Než budete pokračovat, zastavte Gitea:
systemctl stop gitea.service
Utáhněte oprávnění v /etc/gitea, jak je uvedeno níže. To zabrání komukoli, kdo není ve skupině gitea, číst soubor app.ini, který obsahuje citlivé informace, včetně přihlašovacích údajů k databázi.
chmod 750 /etc/gitea chown root:gitea /etc/gitea/app.ini chmod 640 /etc/gitea/app.ini
Otevřete jeho konfigurační soubor:
$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
Krok 5:Nastavení zpětného proxy
Stop Nginx if it is running, as certbot will need to bind to port 80:
systemctl stop nginx.service
K získání certifikátu pro vaši doménu použijte následující příkaz:
certbot certonly --standalone --agree-tos -m [email protected] -d your_domain
Let's Encrypt ověří vlastnictví domény před vydáním certifikátu. Váš certifikát, řetězec a soukromý klíč budou uloženy v /etc/letsencrypt/live/vaše_doména/.
Nyní můžeme nakonfigurovat Nginx. Vytvořte nový konfigurační soubor:
$EDITOR /etc/nginx/sites-available/gitea
A zadejte následující konfiguraci:
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; }
První blok serveru jednoduše slouží k přesměrování všech HTTP požadavků na HTTPS. Druhý blok naslouchá připojení HTTPS a posílá je proxy do unixového soketu, na kterém jsme nakonfigurovali Gitea tak, aby naslouchal.
Jakmile uložíte výše uvedenou konfiguraci, povolte ji spuštěním následujícího:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
Zkontrolujte případné syntaktické chyby pomocí a podle toho upravte konfiguraci:
nginx -t
Nakonec spusťte Nginx a Gitea:
systemctl start nginx.service gitea.service
Vaše instance Gitea by nyní měla úspěšně fungovat. Pokud jste nevytvořili účet správce pomocí počátečního webového instalačního programu, bude prvnímu uživateli, který se zaregistruje, přidělena role správce.
Volitelné kroky
Konfigurace protokolování
Ve výchozím nastavení Gitea protokoluje zprávy na úrovni závažnosti Info a vyšší. Pravděpodobně to budete chtít změnit na Varovat nebo Chyba. Chcete-li tak učinit, otevřete /etc/gitea/app.ini a změňte parametr LEVEL v sekci [log] na jeden z:trace, debug, info, warning, error, kritický, fatální, none. Chcete-li například protokolovat zprávy se závažností Varování a vyšší, použijte:
[log] MODE = file LEVEL = warn ROOT_PATH = /var/lib/gitea/log
Restartujte Gitea, aby se změny projevily:
systemctl restart gitea.service
Samostatný server SSH
Gitea může alternativně používat svůj vlastní SSH server. Chcete-li to povolit, přidejte do sekce konfigurace [server] následující řádek:
START_SSH_SERVER = true
A změňte port SSH na libovolné číslo nad 1000, například:
SSH_PORT = 2222
Poté restartujte Gitea, aby se změny projevily.