Gitea ist eine Open-Source-Code-Hosting-Lösung, die auf der Git-Plattform basiert. Es ist in der Go-Sprache geschrieben. Es enthält einen Repository-Dateieditor, Problemverfolgung, Pull-Anforderungen, Benutzerverwaltung, Benachrichtigungen, integriertes Wiki, LFS-Unterstützung, Git-Hooks und vieles mehr.
Es ist eine leichte Anwendung. Daher kann es auf Systemen mit geringer Leistung installiert werden. Wenn Sie nach einer selbst gehosteten Git-Plattform mit einer kleineren Speicherplattform suchen, sollten Sie sich Gitea ansehen.
In diesem Artikel erfahren Sie, wie Sie Gitea auf Fedora 34 installieren und konfigurieren und wie Sie Ihr erstes Git-Repository einrichten. Gitea kann aus der Quelle, Binärdatei, einem Docker-Paket oder einem Paket installiert werden. Für unser Tutorial werden wir es aus der Binärdatei installieren.
Voraussetzungen
- Ein Server mit Fedora 34.
- Ein Nicht-Root-Sudo-Benutzer.
- SELinux deaktiviert.
-
Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo dnf update
Schritt 1 – Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Der Fedora-Server wird mit der Firewalld geliefert Firewall.
Überprüfen Sie, ob die Firewall ausgeführt wird.
$ sudo firewall-cmd --state
Sie sollten die folgende Ausgabe erhalten.
running
Überprüfen Sie die aktuell erlaubten Dienste/Ports.
$ sudo firewall-cmd --permanent --list-services
Es sollte die folgende Ausgabe zeigen.
dhcpv6-client mdns ssh
HTTP- und HTTPS-Ports zulassen.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Überprüfen Sie den Status der Firewall erneut.
$ sudo firewall-cmd --permanent --list-services
Sie sollten eine ähnliche Ausgabe sehen.
dhcpv6-client http https mdns ssh
Laden Sie die Firewall neu.
$ sudo systemctl reload firewalld
Schritt 2 – Git installieren
Der erste Schritt ist die Installation von Git.
$ sudo dnf install git
Überprüfen Sie die Installation, indem Sie die Git-Version überprüfen.
$ git --version
git version 2.31.1
Git konfigurieren
Git kann mit git config
konfiguriert werden Befehl. Legen Sie Ihren Namen und Ihre E-Mail-Adresse für die Arbeit mit Git fest.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Sie können die Konfiguration mit dem folgenden Befehl überprüfen.
$ git config --list
user.name=Your Name
[email protected]
Schritt 3 – PostgreSQL installieren und konfigurieren
Gitea unterstützt SQLite, MySQL/Mariadb, MSSQL und PostgreSQL. Für unser Tutorial verwenden wir PostgreSQL.
PostgreSQL installieren und initialisieren.
$ 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. Sie müssen zu SCRAM-SHA-256
wechseln planen. Und wenn Sie eine Verbindung zu einer entfernten PostgreSQL-Datenbank herstellen möchten, müssen Sie sie so konfigurieren, dass sie auf Ihre IP-Adresse lauscht. Beide können durch Bearbeiten der /var/lib/pgsql/data/postgresql.conf
geändert werden Datei. Zum Bearbeiten öffnen.
$ sudo nano /var/lib/pgsql/data/postgresql.conf
Bearbeiten Sie die folgenden Variablen wie folgt.
listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Starten Sie PostgreSQL neu.
$ sudo systemctl restart postgresql
Melden Sie sich bei der PostgreSQL-Shell an.
$ sudo -u postgres psql
Erstellen Sie einen neuen SQL-Benutzer und eine neue Datenbank für Gitea. Wählen Sie ein starkes Passwort für Ihren 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';
Ersetzen Sie den Benutzernamen, den Datenbanknamen und das Passwort nach Bedarf.
Verlassen Sie die Shell, indem Sie \q
eingeben .
Erlauben Sie dem Datenbankbenutzer den Zugriff auf die oben erstellte Datenbank, indem Sie die folgende Authentifizierungsregel zu /var/lib/pgsql/data/pg_hba.conf
hinzufügen .
Wenn die Datenbank lokal ist, fügen Sie diese Zeile hinzu.
local giteadb gitea scram-sha-256
Verwenden Sie für eine entfernte Datenbank stattdessen den folgenden Code.
host giteadb gitea 192.0.2.10/32 scram-sha-256
Sie müssen auch die folgenden Zeilen bearbeiten, indem Sie ident
ersetzen mit scram-sha-256
.
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Sie sollten wie folgt 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
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Starten Sie PostgreSQL neu.
$ sudo systemctl restart postgresql
Sie müssen auch die folgende Regel in der Firewall hinzufügen, wenn Sie Remote-Verbindungen ermöglichen möchten.
$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload
Schritt 4 – Erstellen Sie einen Git-Benutzer
Erstellen Sie 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 neue Gruppe mit dem Namen git
und setzt das Home-Verzeichnis auf /home/git
.
Schritt 5 – Gitea installieren
Öffnen Sie die Seite Gitea Downloads und überprüfen Sie 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, ändern Sie diese in VERSION
Variable im folgenden Befehl.
Verwenden Sie das wget
Dienstprogramm zum Abrufen der neuesten Gitea-Binärdatei.
$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
Verschieben Sie die heruntergeladene Binärdatei nach /usr/local/bin
Verzeichnis.
$ sudo mv gitea /usr/local/bin
Machen Sie die Binärdatei ausführbar.
$ sudo chmod +x /usr/local/bin/gitea
Führen Sie die folgenden Befehle aus, um Verzeichnisse zu erstellen und die erforderlichen Berechtigungen festzulegen, damit Gitea ordnungsgemäß 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 /etc/gitea
Verzeichnis auf 770 gesetzt, damit der Installationsassistent die Konfigurationsdatei erstellen kann. Sobald die Installation abgeschlossen ist, werden wir restriktivere Berechtigungen festlegen.
Erstellen Sie eine Systemd-Dienstdatei
Wir werden Gitea als systemd-Dienst ausführen. Erstellen Sie dazu eine neue systemd-Eintragsdatei für Gitea.
$ sudo nano /etc/systemd/system/gitea.service
Fügen Sie den folgenden Code 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
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Als Referenz können Sie sich die systemd-Beispieldatei ansehen, die im Gitea-Repository verfügbar ist.
Laden Sie den systemd-Daemon neu, um die gerade erstellte Datei zu aktivieren.
$ sudo systemctl daemon-reload
Aktivieren und starten Sie den Gitea-Dienst.
$ sudo systemctl enable --now gitea
Stellen Sie sicher, dass Gitea ausgeführt wird.
$ 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. Sie können entweder einen anderen Port verwenden oder beim Standardport bleiben. Daher müssen wir auch Port 3000 öffnen.
$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload
Öffnen Sie Ihren Browser und geben Sie https://YOURIPADDRESS:3000
ein und Sie werden mit dem Gitea-Installationsprogramm begrüßt. Verwenden Sie zum Konfigurieren die folgenden Werte.
Datenbankeinstellungen
- Datenbanktyp: Wählen Sie PostgreSQL aus der Dropdown-Liste aus
- Host: 127.0.0.1:5432
- Benutzername: Gitea
- Passwort: Ihr Passwort
- Datenbankname: Gitea
Allgemeine Einstellungen
- Site-Titel: Geben Sie den Namen Ihrer Organisation ein
- Repository-Stammpfad: Belassen Sie den Standardpfad
- Git-LFS-Stammpfad: Belassen Sie den Standardpfad
- Als Benutzername ausführen: git
- SSH-Serverdomäne: Geben Sie Ihre IP-Adresse ein
- HTTP-Überwachungsport: 3000 (Sie können den Port hier ändern, müssen aber über die Firewall darauf zugreifen.)
- Gitea-Basis-URL: http://IHREIPADRESSE:3000
- Protokollpfad: Belassen Sie die Standardeinstellung
Sie können die E-Mail- und Servereinstellungen an dieser Stelle konfigurieren oder später ändern. Sie sollten jedoch die Administratorkontoeinstellungen ausfüllen.
Um die Installation zu starten, klicken Sie auf Gitea installieren* Taste. Sobald Sie fertig sind, werden Sie automatisch angemeldet und zum Konto-Dashboard weitergeleitet.
Die Installation erstellt die Gitea-Konfigurationsdatei. Ändern Sie die Berechtigung in schreibgeschützt.
$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini
Das ist es. Gitea ist jetzt auf Ihrem Server installiert.
Schritt 7 – SSL mit Let's Encrypt installieren
Um ein SSL-Zertifikat mit Let's Encrypt zu installieren, müssen wir das Certbot-Tool mit dem in Ubuntu 20.04 enthaltenen Snapd-Paketinstaller herunterladen.
Führen Sie die folgenden Befehle aus, um Certbot zu installieren.
$ sudo dnf install certbot
Generieren Sie das SSL-Zertifikat.
$ sudo certbot certonly --standalone --preferred-challenges http -d example.com
Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/example.com
herunter Verzeichnis auf Ihrem Server.
Erstellen Sie ein herausforderndes Webroot-Verzeichnis für die automatische Verlängerung von Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Erstellen Sie einen Cron-Job, um das SSL zu erneuern. Es wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zunächst die Datei /etc/cron.daily/certbot-renew
und zum Bearbeiten öffnen.
$ sudo nano /etc/cron.daily/certbot-renew
Fügen Sie den folgenden Code ein.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Ändern Sie die Berechtigungen für die 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
Erstellen Sie die Nginx-Konfigurationsdatei für Gitea.
$ sudo nano /etc/nginx/conf.d/gitea.conf
Fügen Sie den folgenden Code 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;
}
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Überprüfen Sie, ob die Konfigurationsdatei ordnungsgemäß funktioniert.
$ sudo nginx -t
Starten Sie den Nginx-Server neu.
$ sudo systemctl restart nginx
Ändern Sie als Nächstes die Gitea-Domain und die Stamm-URL. Öffnen Sie dazu die Konfigurationsdatei /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Ändern Sie die folgenden Werte.
[server]
SSH_DOMAIN = git.example.com
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Starten Sie den Gitea-Dienst neu.
$ sudo systemctl restart gitea
Schritt 9 – E-Mail-Benachrichtigungen einrichten
Wenn Sie E-Mail-Benachrichtigungen erhalten möchten, können Sie 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, öffnen Sie die Konfigurationsdatei /etc/gitea/app.ini
.
$ sudo nano /etc/gitea/app.ini
Bearbeiten Sie den folgenden Abschnitt in der Datei und fügen Sie den folgenden Code hinzu.
[mailer]
ENABLED = true
FROM = [email protected]
MAILER_TYPE = smtp
HOST = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER = [email protected]
PASSWD = `password`
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Starten Sie den Gitea-Dienst neu.
$ sudo systemctl restart gitea
Schritt 10 – Aktualisieren von Gitea
Das Aktualisieren von Gitea umfasst das Herunterladen und Ersetzen der Gitea-Binärdatei.
Stoppen Sie zuerst den Gitea-Dienst.
$ sudo systemctl stop gitea
Laden Sie die Gitea-Binärdatei herunter und installieren Sie 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
Starten Sie den Gitea-Dienst neu.
$ sudo systemctl start gitea
Schritt 11 – Verwendung von SSH
Um SSH zu verwenden, müssen wir unseren eigenen SSH-Schlüssel zu Gitea hinzufügen. Wenn Sie keine haben, können Sie eine mit dem folgenden Befehl auf Ihrem lokalen System erstellen.
$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"
Dadurch wird ein Schlüssel namens id_ed25519
erstellt im ~/.ssh
Verzeichnis. Um diesen Schlüssel hinzuzufügen, kopieren Sie den Inhalt der Datei ~/.ssh/id_ed25519.pub
zu Ihrer Zwischenablage. Fügen Sie diesen Schlüssel dann zu Ihrer Gitea-Einstellungsseite unter der Registerkarte SSH/GPG-Schlüssel hinzu . Klicken Sie auf Schlüssel hinzufügen Schaltfläche und geben Sie dem Schlüssel einen Namen und fügen Sie ihn in das Feld ein.
Wenn Sie eine Liste erlaubter Benutzer in der sshd-Konfigurationsdatei haben, müssen Sie git
hinzufügen dazu.
Öffnen Sie die SSHD-Konfigurationsdatei.
$ sudo nano /etc/ssh/sshd_config
Suchen Sie nach einer Zeile, die wie folgt aussehen sollte.
AllowUsers myuser myotheruser git
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Starten Sie den SSHD-Dienst neu.
$ sudo systemctl restart ssh
Sie müssen die Passphrase für den von uns erstellten Schlüssel zu ssh-agent
hinzufügen Tool auf Ihrem lokalen System, damit Sie nicht wiederholt danach gefragt werden. Führen Sie dazu die folgenden Befehle aus.
$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519
Sie können Ihr Repository klonen, um die SSH-Verbindung zu testen.
$ 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.
Schlussfolgerung
Damit ist das Tutorial über die Installation und Konfiguration des Gitea-Code-Hosting-Dienstes auf Fedora 34 abgeschlossen. Wenn Sie Fragen haben, posten Sie sie in den Kommentaren unten.