Joachims Repo
- Shell 70.6%
- HTML 29.4%
| .forgejo/workflows | ||
| docs | ||
| kunden | ||
| scripts | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
Docker Actions Hetzner Server Provisioning via Forgejo Actions
Automatisiertes Provisioning von Hetzner Cloud Servern mit Docker, Zoraxy Reverse Proxy und Apache Webserver – gesteuert über Forgejo Actions.
Was macht dieses Repo?
Per Knopfdruck (Workflow Dispatch) wird ein komplett eingerichteter Server bei Hetzner Cloud erstellt:
- Hetzner Cloud Server erstellen (cx23, Ubuntu 24.04, Nürnberg)
- Firewall-Regeln zuweisen (SSH + Web-Ports)
- Docker installieren
- Stack deployen: Zoraxy (Reverse Proxy) + Apache Webserver
- Fertige Ausgabe mit Server-IP und Zoraxy-Admin-URL
Repo-Struktur
docker-actions/
├── .forgejo/
│ └── workflows/
│ ├── test.yml # Einfacher Test-Workflow
│ └── hetzner-setup.yml # Server-Provisioning
└── stack/
├── docker-compose.yml # Zoraxy + Apache Stack
└── apache/
└── html/
└── index.html # Landing Page
Voraussetzungen
Forgejo Actions
- Forgejo-Instanz mit aktivierten Actions (
app.ini):
[actions]
ENABLED = true
DEFAULT_ACTIONS_URL = https://github.com
- Registrierter Forgejo Runner mit Docker-Zugriff
Secrets (im Repo unter Einstellungen → Actions → Geheimnisse)
| Secret | Beschreibung |
|---|---|
HETZNER_TOKEN |
Hetzner Cloud API Token |
SSH_PRIVATE_KEY |
Privater SSH-Schlüssel (ed25519) |
Hetzner Cloud
- API Token erstellt unter console.hetzner.cloud
- SSH Public Key hinterlegt (Sicherheit → SSH-Schlüssel)
- Firewall-Regeln angelegt:
firewall-ssh-login-dev(ID: 1145271) – SSH Zugrifffirewall-forgejo-dev-80-443-8000(ID: 10559384) – HTTP, HTTPS, Zoraxy Admin
Workflow ausführen
- Im Repo auf Actions klicken
- Workflow Hetzner Server Setup auswählen
- Run Workflow klicken
- Warten bis der Job durchläuft (~2–3 Minuten)
- In den Logs stehen am Ende Server-IP und Zoraxy-Admin-URL
Nach dem Deploy
- Zoraxy Admin öffnen:
http://<SERVER_IP>:8000 - Admin-Benutzer anlegen
- Neue Proxy-Route erstellen:
- Upstream:
apache:80 - Scheme:
http
- Upstream:
- Optional: Domain per DNS A-Record auf die Server-IP zeigen und Let's Encrypt in Zoraxy aktivieren
Stack
Der Stack wird aus dem stack/-Verzeichnis auf den Server kopiert und per docker compose gestartet:
- Zoraxy – Reverse Proxy mit Web-UI, automatischem TLS und HTTP/HTTPS Routing
- Ports: 80, 443, 8000 (Admin)
- Apache – Webserver mit statischer Landing Page
- Nur intern erreichbar über das
proxy-Netzwerk
- Nur intern erreichbar über das
Beide Container laufen im gemeinsamen Docker-Netzwerk proxy und kommunizieren über den Container-Namen (apache:80).
Anpassen
- Anderen Server-Typ: In
hetzner-setup.ymldenserver_typeändern (z.B.cx33,cpx21,cax21) - Anderer Standort:
locationändern (nbg1,fsn1,hel1) - Weitere Container: In
stack/docker-compose.ymlergänzen und insproxy-Netzwerk hängen - Andere Webseite:
stack/apache/html/index.htmlbearbeiten
Wichtig
⚠️ Kosten: Jeder Workflow-Run erstellt einen neuen Hetzner-Server. Nicht vergessen, Testserver in der Hetzner Console wieder zu löschen!
Technologie
- Forgejo – Self-hosted Git mit Actions
- Hetzner Cloud API – Server-Provisioning
- Zoraxy – Reverse Proxy
- Apache HTTPD – Webserver
- Docker – Container Runtime