Files
Mace-AIO-Discord-Bot---With…/DOCKER.md

5.1 KiB
Raw Blame History

HexaHost — Docker-Setup (Traefik)

Dashboard: https://bot.hexahost.de
Bot-API: nur intern (http://bot:8000) — nicht öffentlich.


Voraussetzungen

  1. Docker + Docker Compose auf dem Server
  2. Traefik läuft bereits und ist am Netzwerk traefik-network angeschlossen
  3. DNS: bot.hexahost.de zeigt auf die IP deines Traefik-Servers (A/AAAA)
  4. 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

  1. Application öffnen → Bot → Token kopieren → in .env als TOKEN
  2. Privileged Gateway Intents aktivieren, die der Bot braucht (z.B. Server Members, Message Content — je nach Features)
  3. Bot auf den Server einladen (OAuth2 → URL Generator → bot + benötigte Permissions)

OAuth fürs Dashboard

  1. OAuth2 → General
  2. Redirects hinzufügen:
https://bot.hexahost.de/api/auth/callback/discord
  1. Client ID und Client Secret in .env eintragen (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 8000
  • hexahost-dashboard — läuft, Traefik routet bot.hexahost.de

6. Testen

  1. Browser: https://bot.hexahost.de
  2. Mit Discord anmelden
  3. 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.