Gitea Self-Hosted Git Server Installation auf Ubuntu | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

Gitea Self Hosted Git Server Installation

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

Gitea Self-Hosted Git Server Installation auf Ubuntu

Was ist Gitea?

Gitea ist ein leichtgewichtiger, selbst gehosteter Git-Service, der eine einfachere und ressourcenschonendere Alternative zu GitHub oder GitLab darstellt. Gitea bietet die Kernfunktionalität zur Verwaltung von Git-Repositories, Benutzerkonten, Zugriffskontrolle und mehr – alles auf Ihrem eigenen Server.

Vorteile von Gitea

  • Sehr leichtgewichtig (kann auf kleinsten Servern laufen)
  • Einfache Installation und Konfiguration
  • Geringer Memory-Footprint (<100MB)
  • Schnelle Performance
  • Vollständige Kontrolle über Ihre Code-Repositories
  • Keine unnötigen Features wie GitLab
  • Web-UI für Repository-Verwaltung
  • API für Automatisierung
💡 Tipp: Gitea ist perfekt für kleine Teams oder private Repositories – deutlich einfacher als GitLab zu betreiben.

Voraussetzungen

  • Ubuntu 20.04 oder neuer
  • Docker und Docker Compose
  • Eine Domain für Zugriff (z.B. git.example.com)
  • Nginx als Reverse Proxy
  • SSH-Server für Git-over-SSH
  • Mindestens 1GB RAM, 20GB Speicher

Installation mit Docker Compose

Schritt 1: Verzeichnis vorbereiten

mkdir -p /opt/gitea
cd /opt/gitea
mkdir -p gitea_data

Schritt 2: docker-compose.yml erstellen

cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: always
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=sqlite3
      - GITEA__database__PATH=/data/gitea/gitea.db
      - GITEA__server__ROOT_URL=https://git.example.com/
      - GITEA__server__DOMAIN=git.example.com
      - GITEA__server__HTTP_PORT=3000
      - GITEA__server__SSH_PORT=2222
      - GITEA__server__START_SSH_SERVER=true
      - GITEA__service__DISABLE_REGISTRATION=false
      - GITEA__security__INSTALL_LOCK=true
      - GITEA__mailer__ENABLED=true
      - GITEA__mailer__SMTP_ADDR=mail.example.com
      - GITEA__mailer__SMTP_PORT=587
      - GITEA__mailer__FROM=gitea@example.com
      - GITEA__mailer__USER=your-smtp-user
      - GITEA__mailer__PASSWD=your-smtp-password
    volumes:
      - ./gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    networks:
      - gitea-net

networks:
  gitea-net:
    driver: bridge
EOF

Schritt 3: Optional – PostgreSQL für größere Installationen

Für einfache Setups ist SQLite ausreichend. Für mehr als 100 Benutzer sollten Sie PostgreSQL verwenden:

cat > docker-compose-postgres.yml << 'EOF'
version: '3.8'

services:
  postgres:
    image: postgres:15-alpine
    container_name: gitea-db
    restart: always
    environment:
      POSTGRES_DB: gitea
      POSTGRES_USER: gitea
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - gitea-net

  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: always
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=postgres:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=${DB_PASSWORD}
      - GITEA__server__ROOT_URL=https://git.example.com/
      - GITEA__server__DOMAIN=git.example.com
      - GITEA__server__HTTP_PORT=3000
      - GITEA__server__SSH_PORT=2222
    volumes:
      - ./gitea_data:/data
    depends_on:
      - postgres
    networks:
      - gitea-net

volumes:
  postgres_data:

networks:
  gitea-net:
    driver: bridge
EOF

Nginx Reverse Proxy Konfiguration

Nginx-Konfiguration erstellen

cat > /etc/nginx/sites-available/gitea << 'EOF'
upstream gitea {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name git.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.example.com;

    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    client_max_body_size 512M;

    location / {
        proxy_pass http://gitea;
        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;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}
EOF

Nginx aktivieren und SSL-Zertifikat

sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
sudo apt-get install certbot python3-certbot-nginx
sudo certbot certonly --nginx -d git.example.com
sudo nginx -t
sudo systemctl restart nginx

Gitea starten

cd /opt/gitea
docker-compose up -d

Überprüfen Sie die Logs:

docker-compose logs -f gitea
✅ Gut zu wissen: Gitea ist normalerweise sofort nach dem Start erreichbar. Öffnen Sie https://git.example.com um die Initialisierung durchzuführen.

Initiales Setup

Schritt 1: Willkommen-Seite aufrufen

Öffnen Sie: https://git.example.com

Sie sehen die Installationsseite, wo Sie folgende Einstellungen vornehmen:

Datenbankeinstellungen

  • Datenbanktyp: SQLite3 (oder PostgreSQL)
  • Pfad: /data/gitea/gitea.db (für SQLite)

Allgemeine Einstellungen

  • Seiten-URL: https://git.example.com
  • SSH-Port: 2222

Admin-Konto erstellen

  • Admin-Benutzername: admin
  • Admin-Passwort: (starkes Passwort)
  • Admin-E-Mail: admin@example.com

Zusätzliche Einstellungen

  • Registrierung aktivieren: Ja (später deaktivierbar)
  • E-Mail-Konfiguration: Optional

Klicken Sie "Install Gitea" um die Initialisierung abzuschließen.

Benutzer und Repositories erstellen

Benutzer registrieren/erstellen

  1. Klicken Sie auf "Register" oben rechts
  2. Benutzername, E-Mail, Passwort eingeben
  3. Register Account klicken

Oder als Admin über: Admin Panel → Benutzerverwaltung → Neuen Benutzer erstellen

Erstes Repository erstellen

  1. Oben rechts "Neues Repository"
  2. Repository-Name: z.B. "mein-projekt"
  3. Beschreibung: Optional
  4. Sichtbarkeit: Public oder Private
  5. "Repository erstellen" klicken

SSH-Access konfigurieren

SSH-Key auf dem Client generieren

ssh-keygen -t ed25519 -C "max@example.com"

Speichern Sie den Key in ~/.ssh/id_ed25519

Public Key in Gitea hinzufügen

  1. Oben rechts auf Profil-Icon klicken
  2. "Settings" → "SSH Keys"
  3. "Add SSH Key" klicken
  4. Inhalt von ~/.ssh/id_ed25519.pub einfügen
  5. Speichern

SSH-Port Forwarding (optional)

Wenn Sie Gitea nicht auf Port 22 laufen lassen, verwenden Sie in .ssh/config:

Host git.example.com
    HostName git.example.com
    User git
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Repository über SSH klonen

git clone ssh://git@git.example.com:2222/username/repository.git

E-Mail-Benachrichtigungen einrichten

SMTP in der Konfiguration

Die SMTP-Einstellungen sind bereits in docker-compose.yml vorhanden. Sie können diese auch im Admin-Panel konfigurieren:

  1. Admin Panel → Konfiguration → E-Mail-Konfiguration
  2. SMTP-Server, Port, Benutzername, Passwort eintragen
  3. Test-E-Mail senden

Backup und Wiederherstellung

Backup erstellen

#!/bin/bash
BACKUP_DIR="/backups/gitea"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)

# Gitea-Daten sichern
tar -czf $BACKUP_DIR/gitea_$DATE.tar.gz /opt/gitea/gitea_data/

# Optional: In das Admin-Panel gehen und Dump erstellen
docker-compose exec gitea bash -c "cd /tmp && gitea dump -c /data/gitea/conf/app.ini"
docker cp gitea:/tmp/gitea-dump-*.zip $BACKUP_DIR/

echo "Backup erstellt: $BACKUP_DIR"

Automatisches Backup mit Cron

0 2 * * * /opt/gitea/backup.sh

Wiederherstellung

docker-compose down
rm -rf /opt/gitea/gitea_data/*
tar -xzf /backups/gitea/gitea_YYYYMMDD_HHMMSS.tar.gz -C /opt/gitea/
docker-compose up -d

Verwaltung und Wartung

Admin-Panel aufrufen

Als Admin-Benutzer: Oben rechts auf Profil → Admin Panel

Benutzer verwalten

  1. Admin Panel → Benutzerverwaltung
  2. Benutzer aktivieren/deaktivieren/löschen
  3. Admin-Rechte vergeben

Repositories sperren/löschen

  1. Admin Panel → Repositories
  2. Repository auswählen → Optionen

Gitea vs. GitHub/GitLab – Vergleich

Merkmal Gitea GitHub GitLab
Self-Hosted Ja, vollständig Enterprise nur Ja, Community und Enterprise
Resource-Nutzung Sehr niedrig (<100MB RAM) N/A (Cloud) Hoch (2-4GB RAM)
Features Core-Git-Features Sehr umfangreich Sehr umfangreich
Setup-Aufwand Sehr niedrig (5-10 Min) N/A Hoch (1+ Stunden)
Kosten Kostenlos (nur Server-Kosten) Kostenlos/Bezahlt Kostenlos/Bezahlt

Häufig gestellte Fragen

Kann ich Repositories von GitHub importieren?

Ja! Beim Erstellen eines Repositories können Sie eine "Mirror" URL angeben und Gitea wird das Repository von GitHub klonen.

Unterstützt Gitea CI/CD?

Gitea selbst hat keine eingebaute CI/CD. Sie können aber externe CI/CD wie Drone, Jenkins oder GitHub Actions über Webhooks integrieren.

Wie kann ich Registrierungen deaktivieren?

Admin Panel → Konfiguration → Service → "Registrierung erlauben" deaktivieren

Updates durchführen

cd /opt/gitea
docker-compose pull
docker-compose down
docker-compose up -d
docker-compose logs -f gitea

Verwandte Artikel

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120