Zum Inhalt

🚀 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.json wird 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