Zum Inhalt

Installation#

Diese Anleitung führt dich von Null bis zur laufenden Gamemaster Suite (Gamemaster-Tool + Personal-Börse). Plane 20–30 Minuten ein.

Zwei Wege — beide auf einem eigenen Server

Die Gamemaster Suite besteht aus einem Python-Backend, einem dauerhaft laufenden Discord-Bot und der Personal-Börse. Du brauchst deshalb einen VPS oder Root-Server (mit Shell-Zugang). Es gibt zwei Wege:

  • Weg A — Docker (empfohlen): ein Befehl, alles läuft.
  • Weg B — ohne Docker (Python direkt): für Server ohne Docker.

Kein klassisches Webspace / Shared-Hosting

Anders als ein reines PHP-Produkt lässt sich die Gamemaster Suite nicht per ZIP-Upload auf klassischem Webspace (cPanel/Plesk, nur FTP) betreiben. Der Discord-Bot braucht eine permanente Verbindung und laufende Prozesse — das erlaubt Shared-Hosting nicht. Du brauchst einen eigenen (v)Server.


Voraussetzungen#

Anforderung Details
VPS / Root-Server Kleiner Linux-Server (z. B. Hetzner CX22, Netcup, IONOS VPS). 1 vCPU / 2 GB RAM reichen. Root- bzw. sudo-Zugang.
Zwei Subdomains z. B. admin.deinserver.de (Spielleiter-Oberfläche) und boerse.deinserver.de (Personal-Börse). DNS-A-Records auf die Server-IP.
Offene Ports 80 + 443 Für die Weboberflächen und automatisches HTTPS.
Discord-Bot Kostenlos im Discord Developer Portal. → Schritt 1
KI-Schlüssel Mindestens einer: Anthropic (empfohlen) oder OpenAI.

Schritt 1 — Discord vorbereiten#

Im Discord Developer Portal:

  1. New Application anlegen → Tab Bot:
    • Token kopieren (brauchst du gleich als DISCORD_BOT_TOKEN).
    • Bei Privileged Gateway Intents den Message Content Intent aktivieren.
    • Bot auf deinen Server einladen (Rechte: Nachrichten senden, Reaktionen hinzufügen, Nachrichtenverlauf lesen).
  2. Tab OAuth2 (für die Börse):
    • Client ID + Client Secret kopieren.
    • Unter Redirects eintragen: https://<BÖRSEN-DOMAIN>/auth/callback
  3. Server-ID (Discord → Servereinstellungen, bei aktiviertem Entwicklermodus Rechtsklick auf den Server → „ID kopieren").
  4. Rollen-ID der Rolle, die deine Spieler zum Eintragen brauchen (Rechtsklick auf die Rolle → „ID kopieren").

Schritt 2 — Dateien auf den Server#

# Auf dem Server (Docker + Compose vorausgesetzt)
git clone <dein-repo-oder-zip> gamemaster-suite
cd gamemaster-suite
cp .env.example .env
nano .env          # Werte eintragen (siehe Schritt 3)

Docker noch nicht installiert?

curl -fsSL https://get.docker.com | sh
# Auf dem Server (Python 3.13 vorausgesetzt)
unzip gamemaster-suite.zip -d gamemaster-suite && cd gamemaster-suite
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
pip install -r jobs/requirements.txt
cp .env.example .env
nano .env          # Werte eintragen (siehe Schritt 3)

Schritt 3 — Konfiguration (.env)#

Öffne .env und trage deine Werte ein. Das Wichtigste:

CRIME_DOMAIN=admin.deinserver.de
JOBS_DOMAIN=boerse.deinserver.de
ACME_EMAIL=du@deinserver.de

DISCORD_BOT_TOKEN=...        # aus Schritt 1
DISCORD_GUILD_ID=...         # deine Server-ID

ANTHROPIC_API_KEY=...        # oder OPENAI_API_KEY

ADMIN_USERNAME=admin
ADMIN_PASSWORD=...           # Login der Spielleiter-Oberfläche
JOBS_API_KEY=...             # frei wählbar, lang — z. B.: openssl rand -hex 32

JOBS_DISCORD_CLIENT_ID=...
JOBS_DISCORD_CLIENT_SECRET=...
JOBS_REQUIRED_ROLE_ID=...    # Rolle zum Eintragen

# Branding der Börse — frei wählbar:
BRAND_NAME=Deine Questgeber Börse
COMMUNITY_NAME=Dein Servername

Die vollständige Liste aller Optionen steht unter Konfiguration.

Sicheren Zufallswert erzeugen

Für JOBS_API_KEY und optional JOBS_SESSION_SECRET:

openssl rand -hex 32


Schritt 4 — Starten#

docker compose up -d --build

Beim ersten Start baut Docker die Images und Caddy holt automatisch HTTPS-Zertifikate (1–2 Minuten). Danach sind erreichbar:

  • Spielleiter-Oberfläche: https://<CRIME_DOMAIN>/
  • Personal-Börse: https://<JOBS_DOMAIN>/

Drei Prozesse müssen dauerhaft laufen (am besten per systemd):

# /etc/systemd/system/rp-backend.service
[Service]
WorkingDirectory=/pfad/gamemaster-suite
EnvironmentFile=/pfad/gamemaster-suite/.env
ExecStart=/pfad/gamemaster-suite/.venv/bin/uvicorn backend.main:app --host 127.0.0.1 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target

Analog rp-bot.service (ExecStart=.../python -m backend.bot) und rp-jobs.service (ExecStart=.../uvicorn src.main:app --port 8080 mit WorkingDirectory=/pfad/gamemaster-suite/jobs). Danach:

sudo systemctl enable --now rp-backend rp-bot rp-jobs

HTTPS + Domains richtest du mit einem Reverse-Proxy (nginx oder Caddy) ein, der CRIME_DOMAIN → :8000 und JOBS_DOMAIN → :8080 weiterleitet.


Schritt 5 — Ersteinrichtung (Setup-Wizard)#

  1. Öffne die Spielleiter-Oberfläche https://<CRIME_DOMAIN>/ und melde dich mit ADMIN_USERNAME / ADMIN_PASSWORD an.
  2. Der Setup-Wizard führt dich durch die Grundeinstellungen: Branding (Name, Logo, Farben), KI-Anbieter/Modell und die Districts/Welt deines Servers.
  3. Lege unter Gangs deine Crews an (oder nutze das mitgelieferte Beispiel-Universum als Vorlage und passe es an).
  4. Unter Missionen einen Auftrag generieren, prüfen und senden — der Bot postet ihn in den Discord-Channel der Gang.
  5. Sobald ein Auftrag Personal-Bedarf hat, erscheint er in der Personal-Börse; Spieler mit der freigeschalteten Rolle tragen sich ein.

Wartung#

# Logs ansehen (Docker)
docker compose logs -f crime-backend
docker compose logs -f crime-bot
docker compose logs -f jobs-dashboard

# Neu starten / stoppen
docker compose restart <service>
docker compose down          # Daten bleiben in den Volumes erhalten

Backups und Updates: siehe Update & Backup. Probleme? → Fehlerbehebung.