Gitea je webová aplikace pro hostování kódu napsaná v Go. 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í instalaci Gitea na CentOS 8 s reverzním proxy Nginx HTTPS.
Požadavky
- Systém CentOS 8, na kterém máte oprávnění root.
- Název registrované domény odkazující na váš server.
- Proměnná prostředí $EDITOR by měla být nastavena na váš preferovaný textový 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.
POZNÁMKA: Tato příručka předpokládá, že SELinux je nastaven na vypnutý nebo povolený.
Krok 1:Příprava systému
Začněte instalací všech dostupných aktualizací a restartováním:
aktualizace dnf -yreboot
Pro toto nastavení je vyžadováno několik softwarových komponent:
- Git, závislý na Gitea.
- PostgreSQL, protože Gitea vyžaduje databázi.
- Nginx, který bude použit jako reverzní proxy.
- Sudo, chcete-li spouštět příkazy jako uživatel systému postgres.
- Wget
- Certbot, nástroj pro získávání certifikátů Let's Encrypt SSL. Certbot bude nainstalován samostatně, protože není dostupný v repozitářích softwaru CentOS.
Nainstalujte je následovně:
dnf install -y git postgresql postgresql-server nginx sudo wget
Certbot-auto je skript, který spravuje instalaci certbota. Stáhněte si:
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
Ujistěte se, že jsou nastavena správná oprávnění:
chmod 0755 /usr/local/bin/certbot-auto
Chcete-li nainstalovat certbot, spusťte následující. Správce balíčků vás vyzve k potvrzení instalace závislostí, odpovězte 'y'.
certbot-auto --install-only
Dále vytvořte uživatele pro spuštění Gitea:
useradd --system --shell /bin/bash --create-home --home-dir /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/giteachown -R gitea:gitea /var/run/giteachown -R root:gitea /etc/giteachmod -R 750 /var/lib/giteachmod 770 /etc/giteaOprávnění v /etc/gitea jsou dočasná a budou zpřísněna po spuštění webového instalačního programu.
Trvale povolit provoz na portech 80 a 443:
firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanentfirewall-cmd --reloadPřístup k portu 3000 je vyžadován pouze dočasně pro počáteční nastavení, protože gitea nakonfigurujeme tak, aby místo toho používala Unixový soket.
firewall-cmd --add-port 3000/tcpKrok 2:Nastavení databáze
Inicializujte Postgres:
postgresql-setup --initdb --unit postgresqlUjistěte se, že je povoleno a spuštěno:
systemctl enable --now postgresql.servicePřihlaste se do Postgres:
sudo -u postgres psqlPoté vytvořte uživatelskou roli a databázi, kterou bude Gitea používat:
postgres=# VYTVOŘIT ROLE gitea PŘIHLÁŠENÍ ŠIFROVANÉ HESLO 'your_password';postgres=# VYTVOŘIT DATABÁZI gitea;postgres=# UDĚLEJTE VŠECHNA OPRÁVNĚNÍ V DATABÁZI gitea GITEA;postgres=# \qOtevřete konfigurační soubor ověřování klienta Postgres:
$EDITOR /var/lib/pgsql/data/pg_hba.confPřidejte následující řádek hned za # Místní připojení IPv4:
# místní připojení IPv4:hostitel gitea gitea 127.0.0.1/32 md5Uložte soubor a restartujte Postgres:
systemctl restart postgresql.serviceKrok 3:Instalace Gitea
Stáhněte si binární verzi Gitea pro 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/giteaNastavte správná oprávnění ke staženému binárnímu souboru:
chmod 755 /usr/local/bin/giteaDále vytvořte soubor systemd unit:
$EDITOR /etc/systemd/system/gitea.serviceA zadejte následující:
[Unit]Description=Gitea (Git s šálkem čaje)After=syslog.targetAfter=network.targetRequires=postgresql.service[Service]Type=simpleUser=giteaGroup=giteaWorkingDirectory=/var/lib/gitea/RuntimeDirectory=giteaExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.iniRestart=alwaysEnvironment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea[Install]WantedBy=multi-user. cílUjistěte se, že je zavedena nová jednotka:
systemctl daemon-reloadPoté dejte systemd pokyn, aby spustil Gitea při bootování:
systemctl povolit gitea.serviceKrok 4:Konfigurace Gitea
Pro počáteční konfiguraci použijeme přiložený webový instalátor. Nejprve spusťte Gitea:
systemctl start gitea.servicePoté 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/giteachown root:gitea /etc/gitea/app.inichmod 640 /etc/gitea/app.ini
Otevřete jeho konfigurační soubor:
$EDITOR /etc/gitea/app.ini
Odeberte následující řádek ze sekce serveru:
HTTP_PORT =3000
A přidejte následující řádky do sekce server:
HTTP_ADDR =/run/gitea/gitea.sockPROTOCOL =unixUNIX_SOCKET_PERMISSION =666
Krok 5:Reverzní nastavení proxy
Zastavte Nginx, pokud běží, aby certbot mohl naslouchat na portu 80:
systemctl stop nginx.service
K získání certifikátu pro vaši doménu použijte následující příkaz:
certbot-auto certonly --standalone --agree-tos -m [e-mail 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/conf.d/gitea.conf
A zadejte následující bloky serveru:
server { poslouchat 80; poslouchej [::]:80; název_serveru vaše_doména; 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; poslouchej [::]:443 ssl; název_serveru vaše_doména; ssl zapnuto; ssl_certificate /etc/letsencrypt/live/vaše_doména/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/vaše_doména/privkey.pem; umístění / { 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.
Po uložení výše uvedené konfigurace zkontrolujte případné syntaktické chyby a v případě potřeby konfiguraci upravte:
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. Přistupte k němu na https://vaše_doména
Volitelné kroky
Konfigurace protokolování
Ve výchozím nastavení protokoluje Gitea 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 =fileLEVEL =warningROOT_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 1024, například:
SSH_PORT =2222
Poté restartujte Gitea, abyste použili změny a povolili provoz na zvoleném portu:
firewall-cmd --add-port 2222/tcp --permanentfirewall-cmd --reload