🚀 Hydra-Installation und Inbetriebnahme¶
Diese Anleitung beschreibt, wie Sie Hydra mit Docker und Traefik (für HTTPS/SSL) auf einem Server betreiben können.
Es sind keine tiefen Docker-Kenntnisse notwendig — Sie brauchen nur:
✅ Einen Linux-Server (z.B. Ubuntu oder Debian)
✅ Einen Domainnamen (z.B. hydranten.feuerwehr-musterstadt.de)
✅ Zugriff per SSH auf den Server
✅ Docker und Docker Compose installiert
📝 Überblick¶
Hydra besteht aus:
- hydra-server → Ihre Webanwendung (läuft auf Port 3000 im Container)
- MariaDB → die Datenbank
- Traefik → Reverse Proxy und automatisches SSL mit Let’s Encrypt
Die Kommunikation erfolgt ausschließlich über Traefik → Ihre User erreichen Hydra dann sicher per HTTPS.
⚙️ Vorbereitung¶
1. Domain einrichten¶
- Legen Sie eine Subdomain an (z.B.
hydranten.feuerwehr-musterstadt.de) - Diese muss auf die öffentliche IP Ihres Servers zeigen (A-Record)
2. Docker und Docker Compose installieren¶
Falls noch nicht installiert:
# Docker installieren (Ubuntu Beispiel)
sudo apt update
sudo apt install docker.io docker-compose-plugin -y
# Docker aktivieren
sudo systemctl enable docker
sudo systemctl start docker
Prüfen:
docker --version
docker compose version
📦 Hydra herunterladen¶
3. Git-Repository klonen¶
git clone https://<dein-git-repo>/hydra.git
cd hydra
4. .env Datei anlegen¶
Erstelle eine .env Datei mit den Umgebungsvariablen:
nano .env
Beispiel-Inhalt:
APP_INSTANCE_NAME="Hydrantenkarte Musterstadt"
APP_ADMIN_NAME="Max Mustermann"
APP_ADMIN_CONTACT="admin@example.com"
APP_SMTP_HOST="smtp.example.com"
APP_SMTP_PORT="587"
APP_SMTP_USERNAME="smtp-user"
APP_SMTP_PASSWORD="smtp-passwort"
AUTH_SECRET="DEIN_GEHEIMNIS" # zufälliger String
Hinweis:
- Diese Variablen werden beim ersten Start in die
config/config.jsonübernommen
5. Traefik installieren (für SSL)¶
Wir empfehlen, Traefik als Reverse Proxy zu verwenden — dieser sorgt automatisch für gültige SSL-Zertifikate (Let’s Encrypt).
Traefik docker-compose.yml:
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: always
ports:
- "80:80"
- "443:443"
command:
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.le.acme.tlschallenge=true"
- "--certificatesresolvers.le.acme.email=admin@example.com"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/letsencrypt"
networks:
- traefik
networks:
traefik:
name: traefik
driver: bridge
Speichern als: traefik-compose.yml
6. Hydra docker-compose.yml¶
services:
hydra-server:
build: .
container_name: hydra-server
env_file:
- .env
environment:
DATABASE_HOST: hydradb
DATABASE_PORT: 3306
DATABASE_USER: hydra
DATABASE_PASSWORD: geheim
DATABASE_NAME: hydra-local
depends_on:
- database
networks:
- default
- traefik
labels:
- "traefik.enable=true"
- "traefik.http.routers.hydra.rule=Host(`hydranten.feuerwehr-musterstadt.de`)"
- "traefik.http.routers.hydra.entrypoints=websecure"
- "traefik.http.routers.hydra.tls.certresolver=le"
- "traefik.http.services.hydra.loadbalancer.server.port=3000"
database:
image: mariadb:latest
container_name: hydradb
environment:
MARIADB_ROOT_PASSWORD: root-passwort
MARIADB_DATABASE: hydra-local
MARIADB_USER: hydra
MARIADB_PASSWORD: geheim
volumes:
- mariadb_data:/var/lib/mysql
networks:
- default
networks:
default:
driver: bridge
traefik:
external: true
volumes:
mariadb_data:
Speichern als: docker-compose.yml
🚀 Start der Anwendung¶
7. Traefik starten (nur 1x nötig)¶
docker compose -f traefik-compose.yml up -d
→ Prüfen: Traefik läuft auf Port 80/443
8. Hydra starten¶
docker compose up -d --build
→ Der erste Start dauert etwas (abhängig von Internetgeschwindigkeit)
🌍 Zugriff auf Hydra¶
Nach wenigen Minuten sollte die App erreichbar sein unter:
https://hydranten.feuerwehr-musterstadt.de
⚙️ Konfiguration speichern¶
-
Nach dem ersten Start:
-
Öffnen Sie die Einstellungen im Webinterface
- Passen Sie die Konfig an (SMTP, Name, Kontakt …)
- Speichern →
config/config.jsonwird erstellt
🛠️ Hinweise¶
| Thema | Verhalten |
|---|---|
| config.json | Wird beim ersten Start aus .env erzeugt (falls nicht vorhanden) |
| Mit Volume | config.json bleibt permanent |
| Ohne Volume | config.json wird bei jedem Start neu erstellt |
| Datenbank | MariaDB, Daten bleiben im Volume mariadb_data erhalten |
| SSL / HTTPS | automatisch über Traefik + Let’s Encrypt |
🔁 Update¶
Wenn neue Version:
git pull
docker compose build
docker compose up -d