Wie man die Gitea-Code-Hosting-Plattform mit HTTPS auf Debian 10 installiert
Gitea ist ein Code, der eine in Go geschriebene Webanwendung hostet und von Gogs abgezweigt wurde. Wie der Name schon sagt, ist sie zur Verwendung mit dem beliebten Quellcode-Kontrollprogramm Git vorgesehen, ähnlich wie Gitlab und Github. Dieser Leitfaden wird erklären, wie Gitea unter Debian 10 hinter einem HTTPS-Reverse-Proxy (Nginx) installiert wird.
Anforderungen
- Ein Debian-10-System, auf dem Sie Root-Privilegien haben.
- Ein registrierter Domainname, der auf Ihren Server zeigt.
- Die Umgebungsvariable $EDITOR sollte gesetzt werden.
- Zugang zu einem SMTP-Server für E-Mail-Benachrichtigungen (optional).
Stellen Sie sicher, dass Ihre (Sub-)Domain auf die IPv4-Adresse Ihres Servers mit einem A-Eintrag zeigt. Optional können Sie einen AAAA-Eintrag erstellen, der auf die IPv6-Adresse Ihres Servers zeigt.
Schritt 1: Vorbereitung des Systems
Beginnen Sie mit der Aktualisierung Ihres Paketindexes und installieren Sie alle verfügbaren Aktualisierungen:
apt update apt upgrade -y reboot
Für diese Einrichtung sind mehrere Softwarepakete erforderlich:
- Git, eine Abhängigkeit von Gitea.
- PostgreSQL, da Gitea eine Datenbank benötigt.
- Nginx, die als Reverse-Proxy verwendet wird.
- Certbot, ein Dienstprogramm zum Erhalten von Let’s Encrypt SSL-Zertifikaten.
- Sudo, um als Benutzer des Postgres-Systems Befehle auszuführen.
Installieren Sie sie wie folgt:
apt install -y git nginx certbot postgresql sudo
Als nächstes erstellen Sie einen Benutzer, der Gitea ausführen soll:
adduser --system --disabled-password --group --shell /bin/bash --home /home/gitea gitea
Erstellen Sie dann die Verzeichnisstruktur für Gitea:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
Und legen Sie die Eigentümer und Berechtigungen wie folgt fest:
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
Die Berechtigungen auf /etc/gitea sind temporär und werden nach Ausführung des Web-Installationsprogramms verschärft.
Schritt 2: Einrichtung der Datenbank: Gitea: Gitea, eine Abhängigkeit von Gitea.
Stellen Sie sicher, dass Postgres aktiviert ist und läuft:
systemctl enable --now postgresql@11-main.service
Erstellen Sie dann eine Benutzerrolle und eine Datenbank, die von Gitea verwendet werden soll:
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;
Schritt 3: Installieren von Gitea
Laden Sie die neueste linux-amd64-Binärdatei von der Gitea-Download-Seite herunter. Zum Beispiel:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea chmod 755 /usr/local/bin/gitea
Als nächstes erstellen Sie eine Systemgerätdatei für Gitea:
$EDITOR /etc/systemd/system/gitea.service
Und geben Sie Folgendes ein:
[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
Stellen Sie sicher, dass die neue Einheit geladen ist:
systemctl daemon-reload
Dann weisen Sie systemd an, Gitea beim Systemstart zu starten:
systemctl enable gitea.service
Schritt 4: Konfigurieren von Gitea
Für die Erstkonfiguration verwenden wir das mitgelieferte Web-Installations-Skript. Zuerst starten Sie Gitea:
systemctl start gitea.service
Navigieren Sie dann zu http://your_domain:3000/install und geben Sie die erforderlichen Parameter wie folgt ein:
- Datenbank-Typ: PostgreSQL
- Host: 127.0.0.1:5432
- Benutzername: gitea
- Passwort: Geben Sie das Passwort ein, das Sie bei der Erstellung der Postgres-Rolle gewählt haben.
- Name der Datenbank: gitea
- SSL: Deaktivieren
- Titel der Website: Titel Ihrer Wahl.
- Repository-Wurzelpfad: /var/lib/gitea/data/repositories
- Git LFS-Wurzelpfad: /var/lib/gitea/data/lfs
- Als Benutzername ausführen: gitea
- SSH-Server-Domäne: Ihre_Domäne
- SSH-Server-Port: 22
- Gitea HTTP Listen Post: 3000
- Gitea Basis-URL: https://your_domain/
- Log-Pfad: /var/lib/gitea/log
Konfigurieren Sie die E-Mail und die übrigen Einstellungen so, wie sie für geeignet gehalten werden, und klicken Sie dann auf „Gitea installieren“. Sie werden zu einer fehlerhaften URL weitergeleitet. Dies ist normal, da wir Nginx oder HTTPS noch nicht konfiguriert haben. Aus Leistungsgründen werden wir Gitea jetzt so konfigurieren, dass es auf einem Unix-Socket statt auf dem Standard-TCP-Port lauscht.
Beenden Sie Gitea, bevor Sie fortfahren:
systemctl stop gitea.service
Verschärfen Sie die Berechtigungen auf /etc/gitea wie unten gezeigt. Dies verhindert, dass jemand, der nicht in der Gruppe gitea ist, app.ini liest, die sensible Informationen enthält, einschließlich der Datenbank-Anmeldeinformationen.
chmod 750 /etc/gitea chown root:gitea /etc/gitea/app.ini chmod 640 /etc/gitea/app.ini
Öffnen Sie seine Konfigurationsdatei:
$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
Schritt 5: Einrichten des Reverse-Proxy
Stop Nginx if it is running, as certbot will need to bind to port 80:
systemctl stop nginx.service
Verwenden Sie den folgenden Befehl, um ein Zertifikat für Ihre Domain zu erhalten:
certbot certonly --standalone --agree-tos -m your_email@example.com -d your_domain
Let’s Encrypt wird den Besitz der Domain vor der Ausstellung des Zertifikats überprüfen. Ihr Zertifikat, Ihre Kette und Ihr privater Schlüssel werden in /etc/letsencrypt/live/your_domain/ gespeichert.
Wir können jetzt Nginx konfigurieren. Erstellen Sie eine neue Konfigurationsdatei:
$EDITOR /etc/nginx/sites-available/gitea
Und geben Sie die folgende Konfiguration ein:
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; }
Der erste Serverblock dient lediglich dazu, alle HTTP-Anforderungen an HTTPS umzuleiten. Der zweite Block lauscht auf HTTPS-Verbindungen und proxiert sie an den Unix-Socket, auf dem wir Gitea zum Abhören konfiguriert haben.
Sobald Sie die obige Konfiguration gespeichert haben, führen Sie Folgendes aus, um sie zu aktivieren:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
Prüfen Sie Ihre Konfiguration auf Syntaxfehler und bearbeiten Sie sie entsprechend:
nginx -t
Beginnen Sie schließlich mit Nginx und Gitea:
systemctl start nginx.service gitea.service
Ihre Gitea-Instanz sollte nun erfolgreich laufen. Wenn Sie kein Administratorkonto mit dem anfänglichen Web-Installationsprogramm erstellt haben, erhält der erste Benutzer, der sich anmeldet, die Administratorrolle.
Optionale Schritte
Konfiguration der Protokollierung
Standardmäßig protokolliert Gitea Meldungen der Schweregradstufe Info und höher. Sie werden dies höchstwahrscheinlich in Warnung oder Fehler ändern wollen. Öffnen Sie dazu die Datei /etc/gitea/app.ini und ändern Sie den Parameter LEVEL im Abschnitt [log] in einen der folgenden Parameter: trace, debug, info, warn, error, critical, fatal, none. Verwenden Sie zum Beispiel zum Protokollieren von Meldungen mit dem Schweregrad Warn und höher:
[log] MODE = file LEVEL = warn ROOT_PATH = /var/lib/gitea/log
Starten Sie Gitea neu, damit die Änderungen in Kraft treten können:
systemctl restart gitea.service
Separater SSH-Server
Gitea kann alternativ einen eigenen SSH-Server verwenden. Um ihn zu aktivieren, fügen Sie die folgende Zeile in den Konfigurationsabschnitt [Server] ein:
START_SSH_SERVER = true
Und ändern Sie beispielsweise den SSH-Port auf eine beliebige Zahl über 1000:
SSH_PORT = 2222
Starten Sie dann Gitea neu, damit die Änderungen wirksam werden.