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.

Das könnte dich auch interessieren …