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#
- 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).
- Token kopieren (brauchst du gleich als
- Tab OAuth2 (für die Börse):
- Client ID + Client Secret kopieren.
- Unter Redirects eintragen:
https://<BÖRSEN-DOMAIN>/auth/callback
- Server-ID (Discord → Servereinstellungen, bei aktiviertem Entwicklermodus Rechtsklick auf den Server → „ID kopieren").
- 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?
# 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:
Schritt 4 — Starten#
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:
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)#
- Öffne die Spielleiter-Oberfläche
https://<CRIME_DOMAIN>/und melde dich mitADMIN_USERNAME/ADMIN_PASSWORDan. - Der Setup-Wizard führt dich durch die Grundeinstellungen: Branding (Name, Logo, Farben), KI-Anbieter/Modell und die Districts/Welt deines Servers.
- Lege unter Gangs deine Crews an (oder nutze das mitgelieferte Beispiel-Universum als Vorlage und passe es an).
- Unter Missionen einen Auftrag generieren, prüfen und senden — der Bot postet ihn in den Discord-Channel der Gang.
- 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.