5.1 KiB
HexaHost — Docker-Setup (Traefik)
Dashboard: https://bot.hexahost.de
Bot-API: nur intern (http://bot:8000) — nicht öffentlich.
Voraussetzungen
- Docker + Docker Compose auf dem Server
- Traefik läuft bereits und ist am Netzwerk
traefik-networkangeschlossen - DNS:
bot.hexahost.dezeigt auf die IP deines Traefik-Servers (A/AAAA) - Discord-Anwendung (Bot + OAuth) im Discord Developer Portal
Traefik erwartet typischerweise:
| Einstellung | Wert (Standard hier) |
|---|---|
| Externes Netzwerk | traefik-network |
| HTTP-Entrypoint | web (Port 80) |
| HTTPS-Entrypoint | websecure (Port 443) |
| Cert-Resolver | letsencrypt |
Falls dein Cert-Resolver anders heißt → später TRAEFIK_CERT_RESOLVER in .env setzen.
1. Projekt auf den Server holen
git clone <dein-repo-url> HexaHost
cd HexaHost
Oder Dateien per SCP/SFTP hochladen und in den Projektordner wechseln.
2. Traefik-Netzwerk prüfen
docker network ls | grep traefik-network
Falls es fehlt (nur wenn Traefik es nicht schon angelegt hat):
docker network create traefik-network
Wichtig: Traefik selbst muss an traefik-network hängen. Sonst erreicht Traefik das Dashboard nicht.
3. Secrets / .env anlegen
cp .env.docker.example .env
nano .env # oder vim / code
Pflichtfelder ausfüllen
| Variable | Bedeutung |
|---|---|
TOKEN |
Bot-Token (Discord → Bot → Reset Token) |
OWNER_IDS |
Deine Discord-User-ID (Komma bei mehreren) |
DASHBOARD_ADMIN_IDS |
IDs für Bot-Admin-API (meist = Owner) |
DASHBOARD_API_KEY |
Langes zufälliges Geheimnis (Bot ↔ Dashboard) |
NEXTAUTH_SECRET |
Anderes langes zufälliges Geheimnis |
DISCORD_CLIENT_ID |
Application ID der Discord-App |
DISCORD_CLIENT_SECRET |
OAuth2 → Client Secret |
ADMIN_IDS |
Dashboard-Admins (Discord-User-IDs) |
NEXT_PUBLIC_ADMIN_IDS |
Gleich wie ADMIN_IDS |
Secrets erzeugen (Beispiel):
openssl rand -hex 32 # für DASHBOARD_API_KEY
openssl rand -hex 32 # für NEXTAUTH_SECRET
Discord-User-ID: Discord → Einstellungen → Erweitert → Entwicklermodus → Rechtsklick auf dich → „ID kopieren“.
4. Discord Developer Portal
Bot
- Application öffnen → Bot → Token kopieren → in
.envalsTOKEN - Privileged Gateway Intents aktivieren, die der Bot braucht (z. B. Server Members, Message Content — je nach Features)
- Bot auf den Server einladen (OAuth2 → URL Generator →
bot+ benötigte Permissions)
OAuth fürs Dashboard
- OAuth2 → General
- Redirects hinzufügen:
https://bot.hexahost.de/api/auth/callback/discord
- Client ID und Client Secret in
.enveintragen (DISCORD_CLIENT_ID/DISCORD_CLIENT_SECRET)
5. Container starten
Im Projektroot (dort wo docker-compose.yml liegt):
docker compose up -d --build
Erster Build kann einige Minuten dauern (Python-Deps + Next.js-Build).
Status prüfen:
docker compose ps
docker compose logs -f bot
docker compose logs -f dashboard
Erwartung:
hexahost-bot— online, Discord-Login, API auf Port 8000hexahost-dashboard— läuft, Traefik routetbot.hexahost.de
6. Testen
- Browser: https://bot.hexahost.de
- Mit Discord anmelden
- Guilds sollten erscheinen (Bot muss auf dem Server sein + du brauchst Manage Server / Admin)
Alltag: Updates & Wartung
# Neueste Version holen und neu bauen
git pull
docker compose up -d --build
# Nur Neustart
docker compose restart
# Stoppen
docker compose down
# Logs
docker compose logs -f --tail=100
Daten liegen in Docker-Volumes (bot-db, bot-jsondb, bot-logs) und bleiben bei docker compose down erhalten.
Volumes löschen (Daten weg): docker compose down -v — nur bewusst nutzen.
Troubleshooting
| Problem | Check |
|---|---|
| 502 / Gateway Timeout | docker compose ps — läuft hexahost-dashboard? Traefik am richtigen Netzwerk? |
| Kein HTTPS-Zertifikat | DNS auf Server? Cert-Resolver-Name (TRAEFIK_CERT_RESOLVER)? Entrypoints web/websecure? |
| Login schlägt fehl | Redirect-URL exakt wie oben? NEXTAUTH_URL = https://bot.hexahost.de/? |
| Dashboard leer / API-Fehler | Gleiches DASHBOARD_API_KEY? Bot-Logs: API_ENABLED / Startfehler? |
| Bot offline | TOKEN gültig? Intents? docker compose logs bot |
| Traefik sieht Container nicht | Beide an traefik-network? Label traefik.enable=true? |
Netzwerk-Check:
docker network inspect traefik-network
Dort sollten u. a. Traefik, hexahost-bot und hexahost-dashboard erscheinen.
Architektur (kurz)
Internet
│
▼
Traefik (traefik-network)
│ Host: bot.hexahost.de
▼
hexahost-dashboard :3000
│ DASHBOARD_API_URL=http://bot:8000/api/v1
▼
hexahost-bot :8000 (nur Docker-intern)
│
└── Discord Gateway (ausgehend)
Die Bot-API wird nicht über Traefik veröffentlicht; das Dashboard spricht sie nur im internen Netzwerk an.