Gitea je open-source řešení pro hostování kódu založené na platformě Git. Je napsán v jazyce Go. Zahrnuje editor souborů úložiště, sledování problémů, žádosti o stažení, správu uživatelů, upozornění, vestavěnou wiki, podporu LFS, háky Git a mnoho dalšího.
Jedná se o lehkou aplikaci. Proto může být instalován na systémech s nízkým výkonem. Pokud hledáte platformu Git s vlastním hostitelem s menší paměťovou platformou, měli byste se podívat na Gitea.
Tento článek se bude zabývat tím, jak nainstalovat a nakonfigurovat Gitea na Fedoře 34 a jak nastavit své první úložiště Git. Gitea lze nainstalovat ze zdrojového, binárního, dockerového balíčku nebo balíčku. Pro náš tutoriál jej nainstalujeme z binárního kódu.
Předpoklady
- Server se systémem Fedora 34.
- Uživatel sudo bez oprávnění root.
- SELinux zakázán.
-
Ujistěte se, že je vše aktualizováno.
$ sudo dnf update
Krok 1 – Konfigurace brány firewall
Prvním krokem je konfigurace firewallu. Server Fedora je dodáván s Firewallem firewall.
Zkontrolujte, zda je spuštěna brána firewall.
$ sudo firewall-cmd --state
Měli byste získat následující výstup.
running
Zkontrolujte aktuální povolené služby/porty.
$ sudo firewall-cmd --permanent --list-services
Měl by ukazovat následující výstup.
dhcpv6-client mdns ssh
Povolit porty HTTP a HTTPS.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Znovu zkontrolujte stav brány firewall.
$ sudo firewall-cmd --permanent --list-services
Měli byste vidět podobný výstup.
dhcpv6-client http https mdns ssh
Znovu načtěte bránu firewall.
$ sudo systemctl reload firewalld
Krok 2 – Instalace Git
Prvním krokem je instalace Git.
$ sudo dnf install git
Ověřte instalaci kontrolou verze Git.
$ git --version
git version 2.31.1
Konfigurovat Git
Git lze nakonfigurovat pomocí git config
příkaz. Nastavte své jméno a e-mailovou adresu pro práci s Git.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Konfiguraci můžete zkontrolovat pomocí následujícího příkazu.
$ git config --list
user.name=Your Name
[email protected]
Krok 3 – Instalace a konfigurace PostgreSQL
Gitea podporuje SQLite, MySQL/Mariadb, MSSQL a PostgreSQL. Pro náš tutoriál použijeme PostgreSQL.
Nainstalujte a inicializujte PostgreSQL.
$ sudo dnf module enable postgresql:13
$ sudo dnf install postgresql-server postgresql-contrib
$ sudo postgresql-setup --initdb --unit postgresql
$ sudo systemctl enable --now postgresql
PostgreSQL standardně používá šifrovací schéma md5 pro ověřování hesla, což není bezpečné. Musíte přejít na SCRAM-SHA-256
systém. A pokud se chystáte připojit ke vzdálené databázi PostgreSQL, musíte ji nakonfigurovat tak, aby naslouchala vaší IP adrese. Obojí lze změnit úpravou /var/lib/pgsql/data/postgresql.conf
soubor. Otevřete jej pro úpravy.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Následující proměnné upravte následujícím způsobem.
listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte PostgreSQL.
$ sudo systemctl restart postgresql
Přihlaste se do prostředí PostgreSQL.
$ sudo -u postgres psql
Vytvořte nového uživatele SQL a databázi pro Gitea. Zvolte silné heslo pro uživatele vaší databáze.
postgres-# CREATE ROLE gitea WITH LOGIN PASSWORD 'yourpassword';
postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
Podle potřeby nahraďte uživatelské jméno, název databáze a heslo.
Opusťte shell zadáním \q
.
Umožněte uživateli databáze přístup k databázi vytvořené výše přidáním následujícího ověřovacího pravidla do /var/lib/pgsql/data/pg_hba.conf
.
Pokud je databáze lokální, přidejte tento řádek.
local giteadb gitea scram-sha-256
Pro vzdálenou databázi použijte místo toho následující kód.
host giteadb gitea 192.0.2.10/32 scram-sha-256
Budete také muset upravit následující řádky přidáním nahrazení ident
s scram-sha-256
.
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Měly by vypadat následovně.
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte PostgreSQL.
$ sudo systemctl restart postgresql
Pokud chcete povolit vzdálená připojení, budete také muset přidat následující pravidlo do brány firewall.
$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload
Krok 4 – Vytvoření uživatele Git
Vytvořte nového uživatele systému pro spuštění aplikace Gitea.
$ sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
git
Tento příkaz vytvoří nového uživatele a skupinu s názvem git
a nastaví domovský adresář na /home/git
.
Krok 5 – Instalace Gitea
Otevřete stránku Gitea Downloads a zkontrolujte číslo verze nejnovější dostupné binární verze. V době psaní tohoto návodu je nejnovější verze 1.14.3. Pokud existuje novější verze, změňte ji v VERSION
proměnnou v příkazu níže.
Použijte wget
nástroj pro získání nejnovější binárky Gitea.
$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
Přesuňte stažený binární soubor do /usr/local/bin
adresář.
$ sudo mv gitea /usr/local/bin
Vytvořte binární spustitelný soubor.
$ sudo chmod +x /usr/local/bin/gitea
Spuštěním následujících příkazů vytvořte adresáře a nastavte požadovaná oprávnění, aby Gitea správně fungovala.
$ sudo mkdir -p /var/lib/gitea/{custom,data,log}
$ sudo chown -R git:git /var/lib/gitea/
$ sudo chmod -R 750 /var/lib/gitea/
$ sudo mkdir /etc/gitea
$ sudo chown root:git /etc/gitea
$ sudo chmod 770 /etc/gitea
Oprávnění pro /etc/gitea
adresář je nastaven na 770, aby průvodce instalací vytvořil konfigurační soubor. Po dokončení instalace nastavíme přísnější oprávnění.
Vytvoření souboru služby Systemd
Gitea budeme provozovat jako systémovou službu. Za tímto účelem vytvořte nový vstupní soubor systemd pro Gitea.
$ sudo nano /etc/systemd/system/gitea.service
Vložte do něj následující kód.
[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=postgresql.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Pro referenci se můžete podívat na ukázkový soubor systemd dostupný z úložiště Gitea.
Znovu načtěte démona systemd, abyste povolili soubor, který jsme právě vytvořili.
$ sudo systemctl daemon-reload
Povolte a spusťte službu Gitea.
$ sudo systemctl enable --now gitea
Ověřte, že Gitea běží.
$ sudo systemctl status gitea
gitea.service - Gitea
Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-07-04 20:33:38 EDT; 1 day 8h ago
Main PID: 46404 (gitea)
Tasks: 7 (limit: 2328)
Memory: 115.5M
CPU: 9min 12.061s
CGroup: /system.slice/gitea.service
---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini
...
Krok 6 – Konfigurace Gitea
Gitea standardně naslouchá na portu 3000. Můžete použít buď jiný port, nebo se držet výchozího portu. Proto musíme také otevřít port 3000.
$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload
Otevřete prohlížeč a zadejte https://YOURIPADDRESS:3000
a budete uvítáni instalačním programem Gitea. Ke konfiguraci použijte následující hodnoty.
Nastavení databáze
- Typ databáze: Z rozevírací nabídky vyberte PostgreSQL
- Hostitel: 127.0.0.1:5432
- Uživatelské jméno: gitea
- Heslo: vaše heslo
- Název databáze: gitea
Obecná nastavení
- Název webu: Zadejte název vaší organizace
- Kořenová cesta úložiště: Ponechte výchozí cestu
- Git kořenová cesta LFS: Ponechte výchozí cestu
- Spustit jako uživatelské jméno: git
- Doména serveru SSH: Zadejte svou IP adresu
- Port pro poslech HTTP: 3000 (Zde můžete změnit port, ale budete k němu muset přistupovat přes bránu firewall.)
- Základní adresa URL Gitea: http://VAŠEIPADRESA:3000
- Cesta protokolu: Ponechte výchozí
V tomto okamžiku můžete nakonfigurovat nastavení e-mailu a serveru nebo je můžete změnit později. Měli byste však vyplnit nastavení účtu správce.
Chcete-li zahájit instalaci, klikněte na tlačítko Instalovat Gitea* knoflík. Po dokončení budete automaticky přihlášeni a přesměrováni na hlavní panel účtu.
Instalace vytvoří konfigurační soubor Gitea. Změňte jeho oprávnění na pouze pro čtení.
$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini
A je to. Gitea je nyní nainstalována na vašem serveru.
Krok 7 – Instalace SSL pomocí Let's Encrypt
Chcete-li nainstalovat certifikát SSL pomocí Let's Encrypt, musíme si stáhnout nástroj Certbot pomocí instalačního programu balíčku Snapd, který je součástí Ubuntu 20.04.
Spuštěním následujících příkazů nainstalujte Certbot.
$ sudo dnf install certbot
Vygenerujte certifikát SSL.
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/example.com
adresář na vašem serveru.
Vytvořte adresář webroot s výzvou pro automatické obnovení Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Vytvořte úlohu Cron pro obnovení SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew
a otevřete jej pro úpravy.
$ sudo nano /etc/cron.daily/certbot-renew
Vložte následující kód.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Změňte oprávnění k souboru úlohy, aby byl spustitelný.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Krok 8 – Instalace a konfigurace Nginx
Dalším krokem je instalace serveru Nginx.
$ sudo dnf install nginx
Vytvořte konfigurační soubor Nginx pro Gitea.
$ sudo nano /etc/nginx/conf.d/gitea.conf
Vložte do něj následující kód.
server {
listen 80;
location ~ /\.well-known/acme-challenge {
root /var/lib/letsencrypt/;
}
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your_domain;
client_max_body_size 50m;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20- POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers off;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
access_log /var/log/nginx/gitea.access.log;
error_log /var/log/nginx/gitea.error.log;
}
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Ověřte, zda konfigurační soubor funguje správně.
$ sudo nginx -t
Restartujte server Nginx.
$ sudo systemctl restart nginx
Dále změňte doménu Gitea a kořenovou adresu URL. Chcete-li to provést, otevřete konfigurační soubor /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Změňte následující hodnoty.
[server]
SSH_DOMAIN = git.example.com
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte službu Gitea.
$ sudo systemctl restart gitea
Krok 9 – Nastavení e-mailových upozornění
Pokud chcete dostávat e-mailová upozornění, můžete je povolit buď prostřednictvím Sendmailu, nebo prostřednictvím e-mailové transakční služby třetí strany, jako je Amazon SES, Postmark, Mailgun nebo Sendgrid.
Chcete-li povolit upozornění, otevřete konfigurační soubor /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Upravte následující oddíl v souboru a přidejte následující kód.
[mailer]
ENABLED = true
FROM = [email protected]
MAILER_TYPE = smtp
HOST = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER = [email protected]
PASSWD = `password`
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte službu Gitea.
$ sudo systemctl restart gitea
Krok 10 – Aktualizace Gitea
Upgrade Gitea zahrnuje stažení a nahrazení binárky Gitea.
Nejprve zastavte službu Gitea.
$ sudo systemctl stop gitea
Stáhněte a nainstalujte binární Gitea.
$ GITEAVERSION=LATESTVERSION
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
$ sudo mv gitea /usr/local/bin
$ sudo chmod +x /usr/local/bin/gitea
Restartujte službu Gitea.
$ sudo systemctl start gitea
Krok 11 – Jak používat SSH
Abychom mohli používat SSH, musíme do Gitea přidat vlastní klíč SSH. Pokud jej nemáte, můžete si jej vytvořit pomocí následujícího příkazu ve vašem místním systému.
$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"
Tím se vytvoří klíč s názvem id_ed25519
v ~/.ssh
adresář. Chcete-li přidat tento klíč, zkopírujte obsah souboru ~/.ssh/id_ed25519.pub
do vaší schránky. Poté přidejte tento klíč na stránku nastavení Gitea na kartě Klíče SSH/GPG . Klikněte na Přidat klíč a zadejte název klíče a vložte jej do pole.
Pokud máte v konfiguračním souboru sshd seznam povolených uživatelů, musíte přidat git
k tomu.
Otevřete konfigurační soubor SSHD.
$ sudo nano /etc/ssh/sshd_config
Hledejte řádek, který by měl vypadat takto.
AllowUsers myuser myotheruser git
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte službu SSHD.
$ sudo systemctl restart ssh
Do ssh-agent
musíte přidat přístupovou frázi pro klíč, který jsme vytvořili nástroj ve vašem místním systému, abyste o něj nebyli opakovaně požádáni. Chcete-li to provést, spusťte následující příkazy.
$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519
Můžete klonovat své úložiště a otestovat připojení SSH.
$ git clone ssh://[email protected]/username/repo.git
Cloning into 'repo'...
The authenticity of host 'example.com (201.110.80.160)' can't be established.
ECDSA key fingerprint is SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'example.com,201.110.80.160' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), 4.77 KiB | 977.00 KiB/s, done.
Závěr
Tímto končí výukový program o instalaci a konfiguraci služby hostování kódu Gitea na Fedoře 34. Pokud máte nějaké dotazy, napište je do komentářů níže.