- Update Gitea configuration (remove DEFAULT_ACTIONS_URL) - Fix deployment documentation - Update Ansible playbooks - Clean up deprecated files - Add new deployment scripts and templates
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:
- Als Admin:
Site Administration → Actions → Secrets - 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:
-
Ist Gitea Actions aktiviert?
- Gehe zu: Site Administration → Actions → Settings
- Stelle sicher, dass Actions aktiviert ist
-
Hast du die richtigen Berechtigungen?
- Du musst Repository Owner oder Admin sein
- Prüfe: Repository → Settings → Collaborators
-
Welche Gitea-Version wird verwendet?
- Neuere Versionen haben Secrets unter Repository → Settings → Secrets
- Ältere Versionen könnten andere Pfade haben
-
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:
- Gehe zu:
https://git.michaelschiemer.de/user/settings/applications - Scrolle zu "Generate New Token"
- Name: z.B. "CI/CD Secrets Setup"
- Scopes:
write:repository(mindestens) - Klicke "Generate Token"
- 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
- Gehe zu:
https://git.michaelschiemer.de/user/settings/applications - Scrolle zu "Generate New Token"
- Name:
CI/CD Secrets Management - Scopes: Wähle:
- ✅
read:repository - ✅
write:repository - ✅
read:organization(falls Org-Repo)
- ✅
- Klicke "Generate Token"
- 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=adminREGISTRY_PASSWORD= Wert von$REGISTRY_PASSWORDSSH_PRIVATE_KEY= aus~/.ssh/production
Schritt 4: Verifizierung
Nach dem Ausführen des Scripts:
-
Prüfe ob Secrets gesetzt wurden:
# Teste mit einem Workflow # Gehe zu: Repository → Actions → Test Registry Credentials → Run workflow -
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
📚 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:
- Gitea Actions ist nicht aktiviert
- Du hast nicht die nötigen Berechtigungen (Repository Owner/Admin)
- Deine Gitea-Version hat Secrets an einem anderen Ort
- 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.sherneut 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.