Wie man den Gitea Code Hosting Service auf Fedora 34 installiert
Gitea ist eine Open-Source-Code-Hosting-Lösung, die auf der Git-Plattform basiert. Sie ist in der Sprache Go geschrieben. Es beinhaltet einen Repository File Editor, Issue Tracking, Pull Requests, User Management, Benachrichtigungen, ein eingebautes Wiki, LFS Support, Git Hooks und vieles mehr.
Es ist eine leichtgewichtige Anwendung. Daher kann es auch auf Systemen mit geringer Leistung installiert werden. Wenndu nach einer selbst gehosteten Git Plattform mit geringerem Speicherplatz suchst, solltest du dir Gitea ansehen.
Dieser Artikel beschreibt, wie du Gitea auf Fedora 34 installierst und konfigurierst und wie du dein erstes Git Repository einrichtest. Gitea kann aus dem Quellcode, binär, als Docker-Paket oder als Paket installiert werden. Für unser Tutorial werden wir es von Binary installieren.
Voraussetzungen
- Ein Server auf dem Fedora 34 läuft.
- Ein nicht-root sudo Benutzer.
- SELinux Deaktiviert.
- Stelle sicher, dass alles auf dem neuesten Stand ist.
$ sudo dnf update
Schritt 1 – Firewall konfigurieren
Der erste Schritt ist die Konfiguration der Firewall. Fedora Server kommt mit der FirewalldFirewall.
Prüfe, ob die Firewall läuft.
$ sudo firewall-cmd --state
Du solltest die folgende Ausgabe erhalten.
running
Überprüfe die aktuell erlaubten Dienste/Ports.
$ sudo firewall-cmd --permanent --list-services
Es sollte die folgende Ausgabe angezeigt werden.
dhcpv6-client mdns ssh
Erlaube HTTP und HTTPS Ports.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Überprüfe erneut den Status der Firewall.
$ sudo firewall-cmd --permanent --list-services
Du solltest eine ähnliche Ausgabe sehen.
dhcpv6-client http https mdns ssh
Lade die Firewall neu.
$ sudo systemctl reload firewalld
Schritt 2 – Git installieren
Der erste Schritt ist die Installation von Git.
$ sudo dnf install git
Überprüfe die Installation, indem du die Git Version überprüfst.
$ git --version
git version 2.31.1
Git konfigurieren
Git kann mit dem git config
Befehl konfiguriert werden. Lege deinen Namen und deine Emailadresse für die Arbeit mit Git fest.
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@domain.com"
Du kannst die Konfiguration mit dem folgenden Befehl überprüfen.
$ git config --list
user.name=Your Name
user.email=youremail@domain.com
Schritt 3 – PostgreSQL installieren und konfigurieren
Gitea unterstützt SQLite, MySQL/Mariadb, MSSQL und PostgreSQL. Für unser Tutorial werden wir PostgreSQL verwenden.
Installiere und initialisiere 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 verwendet standardmäßig das md5-Verschlüsselungsschema für die Passwortauthentifizierung, was nicht sicher ist. Du musst auf das SCRAM-SHA-256
Schema wechseln. Und wenn du dich mit einer entfernten PostgreSQL Datenbank verbinden willst, musst du sie so konfigurieren, dass sie auf deine IP-Adresse hört. Beides kann durch Bearbeiten der /var/lib/pgsql/data/postgresql.conf
Datei geändert werden. Öffne sie zum Editieren.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Bearbeite die folgenden Variablen auf die folgende Weise.
listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte PostgreSQL neu.
$ sudo systemctl restart postgresql
Melde dich in der PostgreSQL-Shell an.
$ sudo -u postgres psql
Erstelle einen neuen SQL-Benutzer und eine Datenbank für Gitea. Wähle ein starkes Passwort für deinen Datenbankbenutzer.
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';
Ersetze den Benutzernamen, den Datenbanknamen und das Passwort wie gewünscht.
Beende die Shell, indem du \q
eingibst.
Erlaube dem Datenbankbenutzer den Zugriff auf die oben erstellte Datenbank, indem du die folgende Authentifizierungsregel zu /var/lib/pgsql/data/pg_hba.conf
hinzufügst.
Wenn die Datenbank lokal ist, dann füge diese Zeile hinzu.
local giteadb gitea scram-sha-256
Für eine entfernte Datenbank, verwende stattdessen den folgenden Code.
host giteadb gitea 192.0.2.10/32 scram-sha-256
Du musst auch die folgenden Zeilen bearbeiten, indem du ident
durch scram-sha-256
ersetzst.
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Sie sollten wie die folgenden aussehen.
# 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
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte PostgreSQL neu.
$ sudo systemctl restart postgresql
Du musst auch die folgende Regel in der Firewall hinzufügen, wenn du Remote-Verbindungen ermöglichen willst.
$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload
Schritt 4 – Erstelle einen Git-Benutzer
Erstelle einen neuen Systembenutzer, um die Gitea Anwendung auszuführen.
$ sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
git
Dieser Befehl erstellt einen neuen Benutzer und eine Gruppe mit dem Namen git
und setzt das Homeverzeichnis auf /home/git
.
Schritt 5 – Installiere Gitea
Öffne die Gitea Downloads Seite und überprüfe die Versionsnummer der neuesten verfügbaren Binärdatei. Zum Zeitpunkt der Erstellung dieses Tutorials ist die neueste Version 1.14.3. Wenn es eine neuere Version gibt, ändere sie in der VERSION
Variable im untenstehenden Befehl.
Benutze das wget
Utility, um das neueste Gitea Binary zu laden.
$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
Verschiebe das heruntergeladene Binary in das /usr/local/bin
Verzeichnis.
$ sudo mv gitea /usr/local/bin
Mache das Binary ausführbar.
$ sudo chmod +x /usr/local/bin/gitea
Führe die folgenden Befehle aus, um Verzeichnisse zu erstellen und die erforderlichen Berechtigungen zu setzen, damit Gitea richtig funktioniert.
$ 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
Die Berechtigung für das Verzeichnis /etc/gitea
wird auf 770 gesetzt, damit der Installationsassistent die Konfigurationsdatei erstellen kann. Sobald die Installation abgeschlossen ist, werden wir eine restriktivere Berechtigung setzen.
Erstelle eine Systemd Service Datei
Wir werden Gitea als systemd Dienst laufen lassen. Dafür erstellen wir eine neue systemd Eintragsdatei für Gitea.
$ sudo nano /etc/systemd/system/gitea.service
Füge den folgenden Code darin ein.
[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
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Als Referenz kannst du einen Blick auf die systemd Beispieldatei werfen , die im Gitea Repository verfügbar ist.
Starte den systemd Daemon neu, um die Datei zu aktivieren, die wir gerade erstellt haben.
$ sudo systemctl daemon-reload
Aktiviere und starte den Gitea Dienst.
$ sudo systemctl enable --now gitea
Überprüfe, dass Gitea läuft.
$ 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
...
Schritt 6 – Gitea konfigurieren
Gitea lauscht standardmäßig auf Port 3000. Du kannst entweder einen anderen Port verwenden oder bei dem Standardport bleiben. Daher müssen wir auch den Port 3000 öffnen.
$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload
Öffne deinen Browser und gib https://YOURIPADDRESS:3000
ein und du wirst mit dem Gitea Installer begrüßt. Verwende die folgenden Werte zur Konfiguration.
Datenbank Einstellungen
- Datenbanktyp: Wähle PostgreSQL aus dem Dropdown
- Host: 127.0.0.1:5432
- Benutzername: gitea
- Passwort: yourpassword
- Datenbank Name: gitea
Allgemeine Einstellungen
- Site Titel: Gib den Namen deiner Organisation ein
- Repository Root Path: Belasse den Standardpfad
- Git LFS Root Path: Belasse den Standardpfad
- Ausführen als Benutzername: git
- SSH Server Domain: Gib deine IP-Adresse ein
- HTTP Listen Port: 3000 (Du kannst den Port hier ändern, aber du musst dann über die Firewall darauf zugreifen).
- Gitea Base URL: http://YOURIPADDRESS:3000
- Log Pfad: Belasse den Standard
Du kannst die E-Mail- und Server-Einstellungen an dieser Stelle konfigurieren oder sie später ändern. Du solltest jedoch die Einstellungen des Administratorkontos ausfüllen.
Um die Installation zu starten, klicke auf die Schaltfläche Gitea* installieren. Sobald die Installation abgeschlossen ist, wirst du automatisch eingeloggt und zum Account-Dashboard weitergeleitet.
Die Installation wird die Gitea Konfigurationsdatei erstellen. Ändere die Berechtigung auf schreibgeschützt.
$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini
Das war’s. Gitea ist nun auf deinem Server installiert.
Schritt 7 – Installiere SSL mit Let’s Encrypt
Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Certbot-Tool mit Hilfe des Snapd-Paketinstallers, der in Ubuntu 20.04 enthalten ist, herunterladen.
Führe die folgenden Befehle aus, um Certbot zu installieren.
$ sudo dnf install certbot
Generiere das SSL-Zertifikat.
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
Der obige Befehl wird ein Zertifikat in das /etc/letsencrypt/live/example.com
Verzeichnis auf deinem Server herunterladen.
Erstelle ein Challenge-Webroot-Verzeichnis für die automatische Erneuerung von Let’s Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Erstelle einen Cron Job, um das SSL zu erneuern. Er wird jeden Tag laufen, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstelle dazu zunächst die Datei /etc/cron.daily/certbot-renew
und öffne sie zum Bearbeiten.
$ sudo nano /etc/cron.daily/certbot-renew
Füge den folgenden Code ein.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Ändere die Berechtigungen der Aufgabendatei, um sie ausführbar zu machen.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Schritt 8 – Nginx installieren und konfigurieren
Der nächste Schritt ist die Installation des Nginx Servers.
$ sudo dnf install nginx
Erstelle die Nginx Konfigurationsdatei für Gitea.
$ sudo nano /etc/nginx/conf.d/gitea.conf
Füge den folgenden Code darin ein.
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;
}
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Überprüfe, ob die Konfigurationsdatei richtig funktioniert.
$ sudo nginx -t
Starte den Nginx Server neu.
$ sudo systemctl restart nginx
Ändere als nächstes die Gitea Domain und die Root URL. Öffne dazu die Konfigurationsdatei /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Ändere die folgenden Werte.
[server]
SSH_DOMAIN = git.example.com
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte den Gitea Dienst neu.
$ sudo systemctl restart gitea
Schritt 9 – E-Mail-Benachrichtigungen einrichten
Wenn du E-Mail-Benachrichtigungen erhalten möchtest, kannst du diese entweder über Sendmail oder über einen E-Mail-Transaktionsdienst eines Drittanbieters wie Amazon SES, Postmark, Mailgun oder Sendgrid aktivieren.
Um die Benachrichtigungen zu aktivieren, öffne die Konfigurationsdatei /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Bearbeite den folgenden Abschnitt in der Datei und füge den folgenden Code hinzu.
[mailer]
ENABLED = true
FROM = gitea@mydomain.com
MAILER_TYPE = smtp
HOST = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER = gitea@mydomain.com
PASSWD = `password`
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte den Gitea Dienst neu.
$ sudo systemctl restart gitea
Schritt 10 – Gitea aktualisieren
Das Upgraden von Gitea beinhaltet das Herunterladen und Ersetzen des Gitea Binary.
Stoppe zuerst den Gitea Dienst.
$ sudo systemctl stop gitea
Lade die Gitea Binärdatei herunter und installiere sie.
$ 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
Starte den Gitea Dienst neu.
$ sudo systemctl start gitea
Schritt 11 – Wie man SSH benutzt
Um SSH zu nutzen, müssen wir unseren eigenen SSH Schlüssel zu Gitea hinzufügen. Wenn du keinen hast, kannst du einen mit dem folgenden Befehl auf deinem lokalen System erstellen.
$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"
Dies wird einen Schlüssel namens id_ed25519
im ~/.ssh
Verzeichnis erstellen. Um diesen Schlüssel hinzuzufügen, kopiere den Inhalt der Datei ~/.ssh/id_ed25519.pub
in deine Zwischenablage. Füge diesen Schlüssel dann auf deiner Gitea Einstellungsseite unter dem Reiter SSH/GPG Keys hinzu. Klicke auf die Schaltfläche Schlüssel hinzufügen und gib dem Schlüssel einen Namen und füge ihn in das Feld ein.
Wenn du eine Liste der erlaubten Benutzer in der sshd-Konfigurationsdatei hast, musst du git
zu dieser hinzufügen.
Öffne die SSHD Konfigurationsdatei.
$ sudo nano /etc/ssh/sshd_config
Suche nach einer Zeile, die wie die folgende aussehen sollte.
AllowUsers myuser myotheruser git
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte den SSHD Dienst neu.
$ sudo systemctl restart ssh
Du musst die Passphrase für den Schlüssel, den wir erstellt haben, zu ssh-agent
tool auf deinem lokalen System hinzufügen, damit du nicht wiederholt danach gefragt wirst. Führe die folgenden Befehle aus, um dies zu tun.
$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519
Du kannst dein Repository klonen, um die SSH-Verbindung zu testen.
$ git clone ssh://git@example.com/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.
Fazit
Dies schließt das Tutorial über die Installation und Konfiguration des Gitea Code Hosting Service auf Fedora 34 ab. Wenn du noch Fragen hast, poste sie in den Kommentaren unten.