Gitea Installation auf Debian 11

Gitea ist ein kostenloser, quelloffener, selbstgehosteter und bekannter Git-Server, der in der Programmiersprache Go geschrieben wurde. Es ist eine Versionskontrollplattform ähnlich wie Github. Sie ist robust, skalierbar und bietet viele Funktionen, wie z. B. die Nachverfolgung von Problemen und Zeiten, das Verzweigen von Repositorys, das Sperren von Dateien, das Markieren und Zusammenführen von Dateien und vieles mehr. Wenn du auf der Suche nach einem selbst gehosteten Git-Dienst bist, ist Gitea wahrscheinlich die beste Option, die du nutzen kannst.

In dieser Anleitung zeige ich dir, wie du Gitea auf Debian 11 installierst.

Voraussetzungen

  • Ein Server, auf dem Debian 11 läuft.
  • Ein Root-Passwort ist auf dem Server eingerichtet.

MariaDB-Datenbank installieren und konfigurieren

Gitea verwendet MariaDB/MySQL als Datenbank-Backend. Der Datenbankserver muss also auf deinem Server installiert sein. Wenn er nicht installiert ist, kannst du ihn mit dem folgenden Befehl installieren:

apt-get install mariadb-server -y

Sobald die MariaDB installiert ist, musst du ein MariaDB-Passwort festlegen und die Installation sichern. Das kannst du tun, indem du das Skript mysql_secure_installation ausführst:

mysql_secure_installation

Beantworte alle Fragen wie unten gezeigt:

Enter current password for root (enter for none): 
OK, successfully used password, moving on...
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Als Nächstes verbindest du dich mit folgendem Befehl mit der MariaDB-Schnittstelle:

mysql -u root -p

Sobald du verbunden bist, erstelle eine Datenbank und einen Benutzer für Gitea mit dem folgenden Befehl:

MariaDB [(none)]> CREATE DATABASE gitea;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password';

Als Nächstes löschst du die Berechtigungen und verlässt MariaDB mit dem folgenden Befehl:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;

Gitea installieren

Zuerst musst du einen eigenen Benutzer für Gitea erstellen. Du kannst ihn mit dem folgenden Befehl erstellen:

adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /opt/git git

Du solltest die folgende Ausgabe sehen:

Adding system user `git' (UID 109) ...
Adding new group `git' (GID 115) ...
Adding new user `git' (UID 109) with group `git' ...
Creating home directory `/opt/git' ...

Als Nächstes lädst du die neueste Version von Gitea mit dem folgenden Befehl herunter:

curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d '"' -f 4 | grep '\linux-amd64$' | wget -i -

Verschiebe das Gitea-Binary mit folgendem Befehl in den Systempfad:

mv gitea-*-linux-amd64 /usr/local/bin/gitea

Lege als Nächstes die Ausführungsberechtigung für die Gitea-Binärdatei fest:

chmod +x /usr/local/bin/gitea

Als Nächstes überprüfst du die Gitea-Version mit folgendem Befehl:

gitea --version

Du solltest die folgende Ausgabe sehen:

Gitea version 1.15.3 built with GNU Make 4.1, go1.16.8 : bindata, sqlite, sqlite_unlock_notify

Als Nächstes musst du eine Verzeichnisstruktur für Gitea erstellen. Du kannst sie mit dem folgenden Befehl erstellen:

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}

Als Nächstes legst du mit folgendem Befehl die richtigen Rechte und Eigentümer fest:

chown git:git /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chown root:git /etc/gitea
chmod 770 /etc/gitea

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Eine Systemd-Dienstdatei für Gitea erstellen

Als Nächstes musst du eine systemd-Dienstdatei für Gitea erstellen. Du kannst sie mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/gitea.service

Füge die folgenden Zeilen ein:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysql.service

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
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=/opt/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Speichere und schließe die Datei und lade den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starte und aktiviere dann den Gitea-Dienst mit folgendem Befehl:

systemctl start gitea
systemctl enable gitea

Um den Gitea-Dienst zu überprüfen, führe den folgenden Befehl aus:

systemctl status gitea

Du solltest die folgende Ausgabe sehen:

? gitea.service - Gitea (Git with a cup of tea)
     Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-02 12:59:27 UTC; 9s ago
   Main PID: 19179 (gitea)
      Tasks: 8 (limit: 4679)
     Memory: 128.3M
        CPU: 1.415s
     CGroup: /system.slice/gitea.service
             ??19179 /usr/local/bin/gitea web -c /etc/gitea/app.ini

Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 cmd/web.go:102:runWeb() [I] Starting Gitea on PID: 19179
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/setting/setting.go:569:NewContext() [W] Custom config '/etc/gitea/app.ini' not>
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/custom
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:25:PreloadSettings() [I] Preparing to run install page
Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:28:PreloadSettings() [I] SQLite3 Supported
Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 cmd/web.go:196:listen() [I] Listen: http://0.0.0.0:3000
Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 ...s/graceful/server.go:62:NewServer() [I] Starting new Web server: tcp:0.0.0.0:300>

Zu diesem Zeitpunkt ist Gitea gestartet und lauscht auf Port 3000. Du kannst es mit dem folgenden Befehl überprüfen:

ss -antpl | grep 3000

Du solltest die folgende Ausgabe sehen:

LISTEN 0      4096               *:3000             *:*    users:(("gitea",pid=19179,fd=6))

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Nginx für Gitea konfigurieren

Als Nächstes musst du Nginx als Reverse Proxy für Gitea installieren und konfigurieren. Installiere zunächst Nginx mit dem folgenden Befehl:

apt-get install nginx -y

Als Nächstes erstellst du eine Nginx-Konfigurationsdatei für virtuelle Hosts mit dem folgenden Befehl:

nano /etc/nginx/conf.d/gitea.conf

Füge die folgenden Zeilen hinzu:

server {
    listen 80;
    server_name gitea.example.com;
    access_log /var/log/nginx/gitea_access.log;
    error_log /var/log/nginx/gitea_error.log;


    location / {
        proxy_pass http://localhost:3000;
    }
}

Speichere und schließe die Datei und überprüfe den Nginx auf Syntaxfehler:

nginx -t

Du solltest die folgende Ausgabe sehen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte als Nächstes den Nginx-Dienst mit folgendem Befehl neu:

systemctl restart nginx

Um den Nginx-Status zu überprüfen, führe den folgenden Befehl aus:

systemctl status nginx

Du solltest die folgende Ausgabe sehen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-02 13:00:33 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 19209 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 19211 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 19212 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 3.2M
        CPU: 50ms
     CGroup: /system.slice/nginx.service
             ??19212 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??19213 nginx: worker process
             ??19214 nginx: worker process

Oct 02 13:00:33 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 02 13:00:33 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Als Nächstes musst du die Datei Gitea app.ini bearbeiten und deine Domäneninformationen festlegen:

nano /etc/gitea/app.ini

Ändere die folgenden Zeilen:

DOMAIN           = gitea.example.com
ROOT_URL         = http://gitea.example.com/

Speichere und schließe die Datei und starte den Gitea-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart gitea

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Zugriff auf das Gitea-Webinterface

Öffne nun deinen Webbrowser und rufe die Gitea-Weboberfläche über die URL http://gitea.example.com auf. Du wirst auf die folgende Seite weitergeleitet:

Details zur Gitea-Datenbank

Gitea Einstellungen

Benutzernamen und Passwort festlegen

Gib deine Gitea-Datenbankinformationen, URL, Admin-Benutzername, Passwort und Port ein und klicke auf die Schaltfläche Gitea installieren. Auf der folgenden Seite solltest du das Gitea Dashboard sehen:

Gitea Dashboard

Fazit

Herzlichen Glückwunsch! Du hast Gitea mit Nginx als Reverse Proxy unter Debian 11 erfolgreich installiert. Du kannst Gitea in deiner Entwicklungsumgebung einsetzen, um dein Projekt zu verfolgen und zu verwalten.

Das könnte dich auch interessieren …