So installierst du Gitea mit Docker auf Ubuntu 22.04

Gitea ist ein freier und quelloffener, selbstgehosteter Git-Dienst wie GitHub, BitBuacket und GitLab. Es ist ein Community-Fork von Gogs Git-Dienst, geschrieben in Go mit einer MIT-Lizenz. Gitea bietet Funktionen für die kollaborative Entwicklung und für Teams wie Bug-Tracking, Wikis und Code-Reviews. Gita ist eine plattformübergreifende Anwendung, die auf verschiedenen Betriebssystemen wie Linux, macOS, Windows und ARM installiert werden kann.

Das Hauptziel von Gitea ist es, die einfachste, schnellste und einfachste Möglichkeit zu bieten, einen Git-Dienst auf deinem Server zu erstellen und einzusetzen. Außerdem unterstützt Gitea mehrere Authentifizierungsmethoden wie LDAP, PAM, SMTP und FreeIPA. Was die Webhook-Ereignisse für das Repository angeht, unterstützt Gitea mehrere Webhooks wie Slack, Discord, Microsoft Team, Telegram usw.

In diesem Tutorial lernst du, wie du den selbst gehosteten Git-Server namens Gitea mit Docker auf dem aktuellen Ubuntu 22.04 Server installierst und konfigurierst. Außerdem geht es um die Installation und Konfiguration des Nginx Webservers als Reverse Proxy für den Gitea Containerdienst.

Voraussetzungen

  • Ein Ubuntu-Server – in diesem Tutorial wird der neueste Ubuntu 22.04-Server verwendet.
  • Ein Nicht-Root-Benutzer mit Root-Rechten – oder du kannst auch den Root-Benutzer verwenden.

Installieren und Konfigurieren von Docker

Der erste Schritt besteht darin, Docker auf deinem Ubuntu-Rechner zu installieren und zu konfigurieren. Für diesen Lehrgang installierst du Docker aus dem offiziellen Docker-Repository, also musst du den Docker-GPG-Schlüssel und das Repository zu deinem System hinzufügen.

Bevor du loslegst, führe den folgenden apt-Befehl aus, um die grundlegenden Paketabhängigkeiten wie gnupg2 und curl zu installieren.

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Nach der Installation lädst du mit dem folgenden Befehl den GPG-Schlüssel herunter und fügst ihn dem Docker-Repository hinzu. Der GPG-Schlüssel wird in dem Verzeichnis /etc/apt/keyrings gespeichert.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Als Nächstes fügst du das Docker-Repository mit dem folgenden Befehl hinzu.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Danach aktualisierst du deine Ubuntu-Repositories mit dem unten stehenden Befehl.

sudo apt update

Im folgenden Screenshot siehst du, dass das Docker-Repository für Ubuntu 22.04 hinzugefügt wurde.

Docker-Repository einrichten

Zum Schluss kannst du die Docker-Engine mit dem folgenden Befehl auf deinem Ubuntu-System installieren. Das Paket docker-compose plugin ist der Ersatz für Docker Compose, das nun als Plugin für Docker verwendet werden kann.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Gib Y ein, um die Installation zu bestätigen und drücke ENTER, um fortzufahren. Die Docker-Installation wird nun gestartet.

Docker und Docker Compose installieren

Führe nun den unten stehenden Docker-Befehl aus, um deine Docker-Installation zu überprüfen.

sudo docker run hello-world

Wenn deine Docker-Installation erfolgreich war, siehst du die Hello World-Meldung von Docker.

docker run hello-world

Einrichten der Gitea Bereitstellungsumgebung

Nachdem du Docker erfolgreich installiert hast, musst du nun die Gitea Installationsumgebung einrichten. In diesem Beispiel wird der Gitea-Containerdienst als Nicht-Root-Benutzer ausgeführt. Daher musst du einen neuen Benutzer auf deinem System anlegen und ihn der Gruppe „Docker“ hinzufügen, damit er die Docker-Container ausführen kann.

Führe den folgenden Befehl aus, um einen neuen Benutzer namens gitea hinzuzufügen. Die Option -m wird hier verwendet, um automatisch ein neues Heimatverzeichnis für den Benutzer„gitea“ zu erstellen und die Standardshell für den neuen Benutzer ist /bin/bash.

useradd -m -s /bin/bash gitea

Als Nächstes fügst du den Benutzer„gitea“ mit dem folgenden Befehl zur Gruppe„docker“ hinzu. Jetzt kann der Benutzer„gitea“ Docker-Container ausführen.

usermod -aG docker gitea

Um das zu überprüfen, melde dich mit folgendem Befehl als Benutzer „gitea“ an.

su - gitea

Führe nun den folgenden Docker-Befehl aus, um einen neuen Container mit dem Bild„hello-world“ zu starten.

docker run hello-world

Du solltest die Hello-world-Meldung von Docker sehen, was bedeutet, dass du mit der Konfiguration eines neuen Projekts für die Installation von Gitea beginnen kannst.

Docker für Nicht-Root-Benutzer einrichten

Gitea Containerdienste aufbauen

Nachdem du einen neuen Benutzer für die Ausführung des Gitea Containerdienstes hinzugefügt hast, richtest du nun die Installation des Gitea Projekts ein. Alle Befehle in diesem Abschnitt werden unter dem neuen Benutzer„gitea“ ausgeführt.

Erstelle zunächst ein neues Projektverzeichnis mit dem Namen„myapp“ und ändere das Arbeitsverzeichnis in dieses Verzeichnis.

mkdir -p myapp; cd myapp/

Erstelle eine neue Datei docker-compose.yml mit dem Editor nano.

nano docker-compose.yml

Füge die folgende Konfiguration in die Datei docker-compose.yml ein.

version: "2"
volumes:
gitea-data:
driver: local
gitea-config:
driver: local

services:
server:
image: gitea/gitea:1.16.8-rootless
environment:
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
volumes:
- ./data:/var/lib/gitea
- gitea-data:/var/lib/gitea
- ./config:/etc/gitea
- gitea-config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
depends_on:
- db

db:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data

Speichere und schließe die Datei, wenn du fertig bist.

Mit diesen Konfigurationen erstellst du die folgenden Ressourcen:

  • Zwei Docker-Volumes gitea-dataund gitea-config zum Speichern von Gitea-Benutzerdaten und Konfigurationsdateien.
  • Zwei Dienste mit den Namen„server“ und„db„.
  • Der Gitea-Containerdienst läuft unter dem Namen„server„, basiert auf dem Docker-Image „gitea/gitea:1.16.8-rootless“ und exportiert die TCP-Ports 3000 und 2222.
  • Der Gitea-Containerdienst wird mit dem PostgreSQL-Datenbankdienst namens„db“ ausgeführt.
  • Der„db„-Dienst wird als Datenbank für den Gitea-Dienst mit dem Standard-Docker-Image PostgreSQL„postgres:14“ ausgeführt. Alle Daten des„db„-Dienstes werden lokal im Verzeichnis„postgres“ gespeichert.

Als Nächstes führst du den unten stehenden Docker-Befehl aus, um die Gitea Containerdienste zu erstellen und zu starten.

docker compose up -d

Unten siehst du den Download-Prozess der Docker-Images, die für Gitea benötigt werden.

Gitea-Einsatz starten

Wenn der Prozess abgeschlossen ist, siehst du eine Ausgabe wie im folgenden Screenshot.

Gitea-Einführung abgeschlossen

Führe nun den folgenden Docker-Befehl aus, um die Gitea-Containerdienste zu überprüfen.

docker compose ps

Im folgenden Screenshot siehst du, dass die Dienste„server“ und„db“ laufen, was bedeutet, dass die Bereitstellung der Gitea-Containerdienste abgeschlossen und erfolgreich ist.

Der Gitea-Dienst läuft auf dem localhost mit Port 3000. Und Port 2222 kann für SSH-Verbindungen genutzt werden.

Gitea Containerdienste prüfen

Wenn bei der Installation ein Fehler auftritt, überprüfst du die Logs der Containerdienste mit den unten stehenden Befehlen.

Überprüfe die Logs von allen Containerdiensten.

docker compose logs

Überprüfe die Logs der einzelnen Containerdienste db und server.

docker compose logs db
docker compose logs server

Nginx als Reverse Proxy für Gitea einrichten

Nachdem du die Installation der Gitea Containerdienste abgeschlossen hast, wirst du nun den Nginx Webserver als Reverse Proxy für den Gitea Containerdienst installieren und konfigurieren, der auf dem Standardport 3000 läuft.

In diesem Beispiel wird der Gitea-Containerdienst mit dem Domainnamen git.hwdomain.io und aktiviertem SSL Letsencrypt laufen. Bevor du also den Nginx Reverse Proxy einrichtest, musst du sicherstellen, dass du den Domainnamen und die SSL Letsencrypted für deinen Domainnamen generiert hast.

Installiere nun das Nginx-Paket mit dem unten stehenden apt-Befehl.

sudo apt install nginx

Gib Y ein, um die Installation zu bestätigen und drücke ENTER, um fortzufahren.

nginx installieren

Als nächstes erstellst du mit dem Editor nano eine neue SSL-Konfiguration /etc/nginx/snippets/ssl.conf.

sudo nano /etc/nginx/snippets/ssl.conf

Füge die folgende Konfiguration in die Datei ein. Außerdem musst du den Pfad für das SSL-Zertifikat ändern.

ssl_certificate /etc/letsencrypt/live/git.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.hwdomain.io/privkey.pem;
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
#ssl_stapling on;
#ssl_stapling_verify on;
#resolver 8.8.8.8 8.8.4.4 valid=300s;
#resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes erstellst du mit dem nano-Editor eine neue Nginx-Serverblock-Konfiguration für den Gitea-Reverse-Proxy /etc/nginx/sites-available/gitea.conf.

sudo nano /etc/nginx/sites-available/gitea.conf

Füge die folgende Konfiguration in die Datei ein und stelle sicher, dass du den Domainnamen git.hwdomain.io durch deine Domain ersetzt.

server {
    server_name git.hwdomain.io;
    listen 443 ssl http2;
    include snippets/ssl.conf;
# Log files
access_log /var/log/nginx/gitea.access.log;
error_log /var/log/nginx/gitea.error.log;

location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Speichere und schließe die Datei, wenn du fertig bist.

Führe nun den folgenden Befehl aus, um die Konfiguration der Serverblöcke gitea.conf zu aktivieren und die Nginx-Konfigurationen zu überprüfen.

sudo ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/
sudo nginx -t

Wenn deine Konfiguration korrekt ist, siehst du eine Meldung wie„syntax is ok – test is successful„.

Starte abschließend den nginx-Dienst neu, um die neue Nginx-Serverblock-Konfiguration gitea.conf und die SSL-Konfiguration ssl.conf anzuwenden.

sudo systemctl restart nginx

Jetzt hast du die Nginx-Konfiguration als Reverse-Proxy für den Gitea-Containerdienst abgeschlossen, der jetzt auf dem Domainnamen https://git.hwdomain.io läuft und auf dem SSL aktiviert ist.

Start der Konfiguration der Gitea-Installation

Um die Gitea-Installation und -Konfiguration zu starten, öffnest du deinen Webbrowser und rufst den Gitea-Domainnamen für deine Installation auf (z. B. https://git.hwdomain.io). Nun siehst du die Gitea-Installationsseite.

Im Abschnitt „Erstkonfiguration“ belässt du es bei den Standardeinstellungen, da diese automatisch mit den Anmeldedaten der PostgreSQL-Datenbank aus der Datei docker-compose.yml ausgefüllt werden.

gitea-Erstkonfiguration

Ändere nun die Gitea„Server Domain“ und„Gitea base URL“ mit deiner Domain-Installation. In diesem Beispiel lautet der Domainname https://git.hwdomain.io.

Domänenname gitea einrichten

Im Abschnitt „Optionale Einstellungen“ klickst du auf den Pfeil bei„Administrator-Kontoeinstellungen„. Gib nun den neuen Admin-Benutzernamen, das Passwort und die E-Mail-Adresse für deinen Gitea-Server ein und klicke auf die Schaltfläche„Gitea installieren„.

Admin-Benutzer anlegen

Sobald der Installationsprozess abgeschlossen ist, wirst du zur Gitea-Homepage weitergeleitet und bist als der neue Benutzer angemeldet, den du gerade erstellt hast.

gitea benutzer dashboard

Die Installation und Konfiguration von Gitea mit Docker auf dem neuesten Ubuntu 22.04 ist abgeschlossen und erfolgreich.

Fazit

Herzlichen Glückwunsch! Du hast nun die Installation eines selbst gehosteten Git-Servers namens Gitea mit Docker auf dem aktuellen Ubuntu 22.04 Server abgeschlossen. Außerdem hast du die grundlegende Konfiguration von docker-compose.yml für die Erstellung von Containerdiensten gelernt. Außerdem hast du gelernt, wie du Nginx als Reverse Proxy für eine Container-Anwendung einrichtest, in diesem Beispiel für den Gitea Container-Dienst.

Das könnte dich auch interessieren …