# 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: ```bash # 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: ```bash # 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`:** ```yaml 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 ```bash 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:** ```bash # Teste mit einem Workflow # Gehe zu: Repository → Actions → Test Registry Credentials → Run workflow ``` 2. **Oder prüfe via API:** ```bash 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 ```bash cd deployment/gitea-runner cp .env.example .env ``` ### Schritt 2: Secrets zur .env hinzufügen ```bash nano .env ``` Füge hinzu: ```bash 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 ```yaml 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: ```yaml - 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 ```bash # Gehe zu: Repository → Actions → Test Registry Credentials → Run workflow ``` ### Test 2: Debug-Output im Workflow Füge temporär Debug-Output hinzu: ```yaml - 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 ```bash export REGISTRY_USER="admin" export REGISTRY_PASSWORD="registry-secure-password-2025" ./scripts/test-registry-credentials.sh ``` ## 📚 Nützliche Links - **Gitea Actions Docs:** https://docs.gitea.io/en-us/actions/ - **Secrets API:** https://docs.gitea.io/en-us/api-usage/#repository-secrets - **Setup Script:** `scripts/setup-gitea-secrets.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):** ```bash 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.