Files
michaelschiemer/docs/deployment/gitea-secrets-setup.md
Michael Schiemer 16d586ecdf chore: Update deployment configuration and documentation
- Update Gitea configuration (remove DEFAULT_ACTIONS_URL)
- Fix deployment documentation
- Update Ansible playbooks
- Clean up deprecated files
- Add new deployment scripts and templates
2025-10-31 21:11:11 +01:00

8.3 KiB

Gitea Secrets Setup - Vollständige Anleitung

Problem: "Secrets" fehlt in Repository Settings

Wenn du unter Repository → Settings keine "Secrets" Option siehst, kann das verschiedene Gründe haben. Diese Anleitung zeigt alle Möglichkeiten, wie Secrets in Gitea konfiguriert werden können.

📍 Wo finde ich Secrets in Gitea?

Option 1: Repository Secrets (Standard)

Pfad: Repository → Settings → Secrets

⚠️ Falls diese Option fehlt:

  • Gitea Actions muss für das Repository aktiviert sein
  • Benötigt Berechtigung: Repository Owner oder Admin
  • Manche Gitea-Versionen haben Secrets an anderen Orten

Option 2: Über Actions/Tabs

Manche Gitea-Versionen haben Secrets unter:

  • Repository → Settings → Actions → Secrets
  • Repository → Actions → Secrets

Option 3: Organization/Admin Level

Falls Repository-Secrets nicht verfügbar sind, können Secrets auf Organisations-Level gesetzt werden:

  1. Als Admin: Site Administration → Actions → Secrets
  2. Als Org-Owner: Organization Settings → Actions → Secrets

Option 4: Via Gitea API (Programmatisch)

Falls die UI-Option fehlt, können Secrets via API gesetzt werden:

# Siehe: scripts/setup-gitea-secrets.sh

🔍 Diagnose: Warum sehe ich keine Secrets-Option?

Checkliste:

  1. Ist Gitea Actions aktiviert?

    • Gehe zu: Site Administration → Actions → Settings
    • Stelle sicher, dass Actions aktiviert ist
  2. Hast du die richtigen Berechtigungen?

    • Du musst Repository Owner oder Admin sein
    • Prüfe: Repository → Settings → Collaborators
  3. Welche Gitea-Version wird verwendet?

    • Neuere Versionen haben Secrets unter Repository → Settings → Secrets
    • Ältere Versionen könnten andere Pfade haben
  4. Sind Actions für das Repository aktiviert?

    • Prüfe ob Workflows unter Repository → Actions sichtbar sind
    • Falls nicht, müssen Actions für das Repository aktiviert werden

🛠️ Lösung: Secrets manuell setzen

Methode 1: Via Gitea API (Empfohlen)

Wenn die UI-Option fehlt, verwende das Setup-Script:

# Script vorbereiten
cd /home/michael/dev/michaelschiemer

# Setze deine Gitea-Credentials
export GITEA_URL="https://git.michaelschiemer.de"
export GITEA_TOKEN="dein-gitea-token"  # Siehe unten wie man einen Token erstellt
export REPO_OWNER="dein-username"      # Oder Organization-Name
export REPO_NAME="michaelschiemer"

# Setze die Secrets
./scripts/setup-gitea-secrets.sh

Gitea Token erstellen:

  1. Gehe zu: https://git.michaelschiemer.de/user/settings/applications
  2. Scrolle zu "Generate New Token"
  3. Name: z.B. "CI/CD Secrets Setup"
  4. Scopes: write:repository (mindestens)
  5. Klicke "Generate Token"
  6. Kopiere den Token (wird nur einmal angezeigt!)

Methode 2: Environment-Variablen im Runner (Alternative)

Falls Repository Secrets wirklich nicht verfügbar sind, können Secrets auch als Environment-Variablen im Runner konfiguriert werden:

In deployment/gitea-runner/docker-compose.yml:

services:
  gitea-runner:
    environment:
      - REGISTRY_USER=admin
      - REGISTRY_PASSWORD=registry-secure-password-2025
      # Weitere Secrets...

⚠️ Nicht empfohlen: Weniger sicher, da Secrets im docker-compose.yml gespeichert werden.

Methode 3: Secrets im Workflow hardcoden (NICHT EMPFOHLEN!)

⚠️ NIEMALS PASSWÖRTER IM CODE SPEICHERN!

Diese Methode sollte nur für Tests verwendet werden und ist für Produktion unsicher.

📝 Schritt-für-Schritt: Secrets via API setzen

Schritt 1: Gitea Token erstellen

  1. Gehe zu: https://git.michaelschiemer.de/user/settings/applications
  2. Scrolle zu "Generate New Token"
  3. Name: CI/CD Secrets Management
  4. Scopes: Wähle:
    • read:repository
    • write:repository
    • read:organization (falls Org-Repo)
  5. Klicke "Generate Token"
  6. Kopiere den Token sofort (wird nur einmal angezeigt!)

Schritt 2: Repository-Informationen finden

Repository Owner:

  • Gehe zu deinem Repository: https://git.michaelschiemer.de/[username]/michaelschiemer
  • Der erste Teil nach / ist der Owner (Username oder Org-Name)

Repository Name:

  • Der zweite Teil ist der Repository-Name (meist michaelschiemer)

Schritt 3: Setup-Script ausführen

cd /home/michael/dev/michaelschiemer

# Konfiguriere die Variablen
export GITEA_URL="https://git.michaelschiemer.de"
export GITEA_TOKEN="dein-token-hier"
export REPO_OWNER="dein-username"
export REPO_NAME="michaelschiemer"
export REGISTRY_PASSWORD="registry-secure-password-2025"

# Führe das Script aus
bash scripts/setup-gitea-secrets.sh

Das Script setzt automatisch:

  • REGISTRY_USER = admin
  • REGISTRY_PASSWORD = Wert von $REGISTRY_PASSWORD
  • SSH_PRIVATE_KEY = aus ~/.ssh/production

Schritt 4: Verifizierung

Nach dem Ausführen des Scripts:

  1. Prüfe ob Secrets gesetzt wurden:

    # Teste mit einem Workflow
    # Gehe zu: Repository → Actions → Test Registry Credentials → Run workflow
    
  2. Oder prüfe via API:

    curl -H "Authorization: token ${GITEA_TOKEN}" \
         "${GITEA_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/actions/secrets"
    

🔐 Alternative: Secrets in Runner Environment

Falls Repository Secrets gar nicht funktionieren, können Secrets auch als Environment-Variablen im Runner konfiguriert werden:

Schritt 1: .env Datei erstellen

cd deployment/gitea-runner
cp .env.example .env

Schritt 2: Secrets zur .env hinzufügen

nano .env

Füge hinzu:

REGISTRY_USER=admin
REGISTRY_PASSWORD=registry-secure-password-2025
# SSH_PRIVATE_KEY würde hier nicht gesetzt werden (zu lang)

Schritt 3: docker-compose.yml anpassen

services:
  gitea-runner:
    environment:
      - REGISTRY_USER=${REGISTRY_USER:-admin}
      - REGISTRY_PASSWORD=${REGISTRY_PASSWORD}
    # ... rest of config

Schritt 4: Workflow anpassen

Im Workflow müssen Secrets dann anders geladen werden:

- name: Login to Registry
  env:
    REGISTRY_USER: ${REGISTRY_USER}
    REGISTRY_PASSWORD: ${REGISTRY_PASSWORD}
  run: |
    # Secrets werden jetzt aus Runner Environment geladen

⚠️ Nachteil: Secrets sind dann im Runner-Environment und nicht repository-spezifisch.

🧪 Test ob Secrets funktionieren

Test 1: Workflow ausführen

# Gehe zu: Repository → Actions → Test Registry Credentials → Run workflow

Test 2: Debug-Output im Workflow

Füge temporär Debug-Output hinzu:

- name: Debug Secrets
  run: |
    echo "REGISTRY_USER length: ${#REGISTRY_USER}"
    echo "REGISTRY_PASSWORD length: ${#REGISTRY_PASSWORD}"
    # Zeigt die Länge, nicht den Inhalt (für Sicherheit)

Wenn beide > 0 sind, funktionieren die Secrets.

Test 3: Lokales Test-Script

export REGISTRY_USER="admin"
export REGISTRY_PASSWORD="registry-secure-password-2025"
./scripts/test-registry-credentials.sh

Häufige Fragen

Q: Warum sehe ich keine "Secrets" Option?

A: Mögliche Gründe:

  1. Gitea Actions ist nicht aktiviert
  2. Du hast nicht die nötigen Berechtigungen (Repository Owner/Admin)
  3. Deine Gitea-Version hat Secrets an einem anderen Ort
  4. Secrets müssen via API gesetzt werden

Q: Kann ich Secrets für mehrere Repositories setzen?

A: Ja, über:

  • Organization Secrets: Für alle Repos in der Organisation
  • API: Script mehrmals ausführen mit verschiedenen REPO_NAME

Q: Sind Secrets verschlüsselt?

A: Ja, Gitea verschlüsselt Secrets vor der Speicherung.

Q: Wie ändere ich ein Secret?

A:

  • Via UI: Bearbeiten (falls verfügbar)
  • Via API: Script erneut ausführen (überschreibt das Secret)
  • Via Script: setup-gitea-secrets.sh erneut ausführen

🚀 Quick Start

Schnellste Methode (wenn API verfügbar):

export GITEA_URL="https://git.michaelschiemer.de"
export GITEA_TOKEN="dein-token"
export REPO_OWNER="dein-username"
export REPO_NAME="michaelschiemer"
export REGISTRY_PASSWORD="registry-secure-password-2025"

bash scripts/setup-gitea-secrets.sh

Das war's! Secrets sollten jetzt funktionieren.