Files
PyContainer-Handbuch/gitea-registry-guide.md
2025-12-04 11:54:41 +01:00

7.1 KiB

Anleitung: Gitea als Container Registry bereitstellen und konfigurieren

Diese Anleitung beschreibt, wie Sie eine Gitea-Instanz bereitstellen und so konfigurieren, dass sie auch als private Docker Container Registry funktioniert. Dies ist besonders nützlich für Teams oder Projekte, die eine integrierte Lösung für Code- und Image-Verwaltung suchen.

1. Einleitung

Gitea ist ein leichtgewichtiger, selbst gehosteter Git-Dienst, der auch Funktionen wie Issue Tracking, Code-Review und seit Version 1.12 eine integrierte Container Registry bietet. Die Verwendung einer Gitea-Registry ermöglicht es Ihnen, Ihre Docker-Images direkt neben Ihrem Quellcode zu hosten und zu verwalten.

2. Voraussetzungen

  • Docker und Docker Compose: Für die einfache Bereitstellung von Gitea.
  • Domainname oder IP-Adresse: Die unter der Gitea erreichbar sein soll.
  • Offener Port 3000 (HTTP) und optional 22 (SSH) und 443 (HTTPS) auf dem Host-System.

3. Gitea mit Docker Compose bereitstellen

Wir verwenden Docker Compose, um Gitea zusammen mit einer PostgreSQL-Datenbank bereitzustellen. Erstellen Sie eine docker-compose.yml in einem neuen Verzeichnis (z.B. gitea-setup):

version: "3"

services:
  gitea:
    image: gitea/gitea:1.21.11 # Aktuelle stabile Version verwenden
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASS=gitea_password # Starkes Passwort wählen!
      - GITEA__server__ROOT_URL=http://your_gitea_domain_or_ip:3000/ # Wichtig: Anpassen!
      - GITEA__server__SSH_DOMAIN=your_gitea_domain_or_ip # Optional, wenn SSH genutzt wird
      - GITEA__server__DISABLE_SSH=false # Optional, wenn SSH genutzt wird
      - GITEA__container_registry__ENABLED=true # Container Registry aktivieren
      - GITEA__container_registry__MAX_TAGS_PER_REPOSITORY=10 # Optional: Anzahl Tags pro Repo begrenzen
    restart: always
    ports:
      - "3000:3000" # Gitea HTTP Port
      - "2222:22"   # Gitea SSH Port (intern 22, extern 2222)
    volumes:
      - ./gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - db
    networks:
      - gitea_network

  db:
    image: postgres:15
    container_name: gitea_db
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea_password # Muss mit GITEA__database__PASS übereinstimmen
      - POSTGRES_DB=gitea
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    networks:
      - gitea_network

networks:
  gitea_network:
    driver: bridge

Erste Schritte nach dem Start:

  1. Speichern Sie die Konfiguration als docker-compose.yml.
  2. Starten Sie die Dienste im Verzeichnis der Datei: docker-compose up -d.
  3. Öffnen Sie einen Browser und navigieren Sie zu http://your_gitea_domain_or_ip:3000/.
  4. Folgen Sie dem Initialisierungsassistenten. Achten Sie darauf, dass die Datenbankeinstellungen korrekt sind (sollten aus den Umgebungsvariablen übernommen werden).
  5. Erstellen Sie den ersten Administrator-Benutzer.

4. Container Registry Konfiguration (nachträglich)

Obwohl wir GITEA__container_registry__ENABLED=true in der docker-compose.yml gesetzt haben, kann es sein, dass die Registry nachträglich aktiviert oder angepasst werden muss, oder Sie Gitea ohne diese Einstellung bereitgestellt haben.

  1. Gitea-Konfigurationsdatei finden: Die Konfigurationsdatei von Gitea ist app.ini. Sie befindet sich normalerweise im gitea_data-Volume, das wir gemountet haben, unter /data/gitea/conf/app.ini innerhalb des Gitea-Containers.

    Um die Datei zu bearbeiten, können Sie entweder:

    • Den Gitea-Container stoppen, die Datei im gemounteten Volume (z.B. ./gitea_data/gitea/conf/app.ini) auf Ihrem Host bearbeiten und Gitea neu starten.
    • Über docker exec in den Container gehen und die Datei mit einem Editor wie vi oder nano (falls installiert) bearbeiten. Dies ist oft komplizierter.
  2. app.ini bearbeiten: Suchen Sie in der app.ini den Abschnitt [container_registry]. Falls er nicht existiert, fügen Sie ihn hinzu. Stellen Sie sicher, dass ENABLED = true gesetzt ist:

    [container_registry]
    ENABLED = true
    # MAX_TAGS_PER_REPOSITORY = 10  # Optional: Begrenzt die Anzahl der Tags pro Repository
    

    Weitere Optionen können hier konfiguriert werden, z.B. Speicherlimits oder Zugriffsrechte.

  3. Gitea neu starten: Nach Änderungen an der app.ini müssen Sie den Gitea-Container neu starten, damit die Änderungen wirksam werden:

    docker-compose restart gitea
    

5. Nutzung der Gitea Container Registry

Sobald die Registry aktiviert ist, können Sie sie wie jede andere Docker Registry verwenden.

Authentifizierung:

Bevor Sie Images pushen oder pullen können, müssen Sie sich bei Ihrer Gitea Registry anmelden. Verwenden Sie dafür Ihre Gitea-Benutzerdaten:

docker login your_gitea_domain_or_ip:3000

Ersetzen Sie your_gitea_domain_or_ip:3000 durch die tatsächliche Adresse und Port Ihrer Gitea-Instanz.

Image Tagging:

Images müssen nach folgendem Muster getaggt werden: your_gitea_domain_or_ip:3000/benutzername/repository-name:tag

  • your_gitea_domain_or_ip:3000: Die Adresse Ihrer Gitea-Instanz.
  • benutzername: Der Gitea-Benutzer oder die Organisation, unter der das Repository liegt.
  • repository-name: Der Name des Gitea-Repositories, das mit dem Image verknüpft werden soll. Gitea erstellt automatisch ein Container-Image-Repository, wenn Sie das erste Image pushen.
  • tag: Ein beliebiges Tag (z.B. latest, v1.0.0, ein Commit-Hash).

Beispiel:

Angenommen, Ihre Gitea ist unter mygitea.com:3000 erreichbar, Ihr Benutzername ist devuser, und Sie haben ein Git-Repository namens my-python-app.

  1. Image bauen (wie in unserem Haupt-Leitfaden beschrieben):

    make build # Baut my-python-app:latest
    
  2. Image taggen für Gitea:

    docker tag my-python-app:latest mygitea.com:3000/devuser/my-python-app:latest
    

    Oder über den make-Befehl aus unserem Haupt-Leitfaden:

    make tag REGISTRY=mygitea.com:3000/devuser
    
  3. Image pushen:

    docker push mygitea.com:3000/devuser/my-python-app:latest
    

    Oder über den make-Befehl aus unserem Haupt-Leitfaden:

    make push REGISTRY=mygitea.com:3000/devuser
    
  4. Image pullen:

    docker pull mygitea.com:3000/devuser/my-python-app:latest
    

6. Sicherheitsaspekte

  • HTTPS: Für eine produktive Gitea-Instanz im Netzwerk wird dringend empfohlen, HTTPS zu konfigurieren. Dies schützt Ihre Anmeldeinformationen und Image-Daten während der Übertragung. Traefik kann hierfür auch verwendet werden, um HTTPS für Gitea zu terminieren.
  • Zugriffsrechte: Verwalten Sie die Berechtigungen für Container-Image-Repositories in Gitea wie für Git-Repositories.

Dieser Leitfaden sollte Ihnen helfen, Gitea erfolgreich als Ihre private Container Registry zu nutzen.