Infrastructure as Code — docker-compose Stacks, Configs, Architektur-Docs und ADRs für die Electric Horses / Richter & Zech Hetzner-Cloud-Infrastruktur.
Find a file
Benjamin Weinlich 6570e81850 docs(runbooks,guides): mirror runbooks and Authentik OIDC guide
Two Forgejo runbooks plus the Authentik OAuth2 provider guide,
mirrored from the iCloud folder into the versioned repo.

Runbooks:
- forgejo-admin-recovery.md — fallback login when Authentik is down
  using the local admin-local user (prohibit_login reset via SQL).
- forgejo-backup-restore.md — backup format, restore scenarios
  (full / DB-only / single file), disaster recovery on new host.

Guides:
- authentik-oauth2-provider.md — reusable template for adding native
  OIDC integrations in Authentik. First applied for Forgejo, ready
  to reuse for OpenProject, Nextcloud, Grafana. Includes the
  important launch-URL gotcha from ADR-0006.

Each category folder has a README.md with format conventions and
an index of the current documents.

Refs OP#1118
2026-04-11 22:26:24 +02:00
docs docs(runbooks,guides): mirror runbooks and Authentik OIDC guide 2026-04-11 22:26:24 +02:00
stacks feat(stacks/eh-search): add site-search FastAPI service 2026-04-11 22:19:39 +02:00
.gitignore chore(repo): initialize infrastructure-as-code repository 2026-04-11 22:19:10 +02:00
Agent.md chore(repo): initialize infrastructure-as-code repository 2026-04-11 22:19:10 +02:00
README.md chore(repo): initialize infrastructure-as-code repository 2026-04-11 22:19:10 +02:00

electric-horses-infra

Infrastructure as Code für Electric Horses / Richter & Zech.

Dieses Repository enthält die versionierten Docker-Compose-Stacks, Reverse-Proxy-Configs, Architektur-Dokumentation und Architecture Decision Records (ADRs) für unsere Hetzner-Cloud-Infrastruktur.

Was lebt hier?

electric-horses-infra/
├── Agent.md                   # AI-Briefing für jede Session
├── README.md                  # diese Datei
├── .gitignore                 # was NICHT commitet wird
│
├── stacks/                    # Docker-Compose Stacks (1:1 was auf den Servern läuft)
│   ├── forgejo/               # code.sdda.eu — dieses Git-Hosting
│   └── eh-search/             # electric-horses.de Site-Search
│
└── docs/                      # Dokumentation
    └── architecture/          # Topologie-Snapshots, Stack-Inventories

Konvention: Jeder Stack-Ordner spiegelt den Stack auf dem tatsächlichen Server — aber ohne Secrets. Die .env mit echten Werten lebt auf dem Server (mode 600), hier ist nur die .env.example als Template.

Was gehört hier REIN

  • docker-compose.yml Dateien
  • Dockerfiles
  • Nginx-Configs
  • Python / Shell Scripts die Teil der Infra sind
  • SQL-Migrationen / Schema-Dumps (nicht Datenbank-Inhalte!)
  • .env.example mit Platzhaltern
  • Markdown-Dokumentation, Diagramme (Mermaid), ADRs, Runbooks

Was gehört hier NICHT REIN

  • Niemals echte .env Dateien, Passwörter, API-Keys, Zertifikate
  • Runtime-Daten (Datenbank-Inhalte, Git-Repos im Git-Repo, uploaded files)
  • Build-Artefakte (node_modules/, dist/, __pycache__/)
  • Logs
  • Backup-Dumps mit Nutzerdaten (DSGVO)

Wenn du unsicher bist: Lass es lieber raus. Es ist einfacher eine fehlende Datei nachzureichen als ein Secret aus der Git-History zu entfernen.

Mitarbeit

Du als Human: Du schreibst Wünsche und Feedback in Claude-Code / OpenProject, reviewst Commits im Web-UI (code.sdda.eu).

Die AI: Liest Agent.md am Sessionstart, macht Änderungen in bestehenden Stacks, committet mit Referenzen auf OpenProject-Work-Packages (Refs OP#1234).

OpenProject Referenz