Schritt-fuer-Schritt-Anleitung (ANLEITUNG.md) fuer Einrichtung und Nutzung
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NaZBZofC1on2gkSMb5UWZy
This commit is contained in:
parent
9604e26351
commit
694ae03b49
1 changed files with 258 additions and 0 deletions
258
ANLEITUNG.md
Normal file
258
ANLEITUNG.md
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
# Anleitung: StarCraft-Kampagnen-MCP-Server einrichten & benutzen
|
||||
|
||||
Diese Anleitung ist für **null Programmierkenntnisse** gedacht. Du tippst nur die
|
||||
fettgedruckten Befehle ab. Wenn etwas von *deinem* Setup abhängt, steht ausdrücklich
|
||||
dabei „**das musst du anpassen**".
|
||||
|
||||
---
|
||||
|
||||
## 0. Was du brauchst (Checkliste)
|
||||
|
||||
- [ ] **Zugang zu deinem Hetzner-VPS** (per SSH – also das schwarze Terminal-Fenster,
|
||||
mit dem du dich auf den Server einloggst).
|
||||
- [ ] Auf dem VPS sind **Docker** und **Caddy** installiert und laufen bereits
|
||||
(hast du). Caddy ist dein „Türsteher", der die Webadresse + das Sicherheitsschloss
|
||||
(TLS/https) bereitstellt.
|
||||
- [ ] Eine **Subdomain**, z.B. `sc-mcp.pixel-by-design.de`, deren DNS-Eintrag auf die
|
||||
IP-Adresse deines VPS zeigt. (Einstellung beim Anbieter, wo deine Domain liegt.)
|
||||
- [ ] Ein **Claude-Bezahl-Account** (Pro, Max, Team oder Enterprise). Nur diese können
|
||||
eigene „Custom Connectors" hinzufügen – im Gratis-Account fehlt die Funktion.
|
||||
- [ ] **Basis-Karten** (`.scx`/`.scm`) und optionale **WAV-Sounddateien**, aus denen
|
||||
Claude Missionen bauen soll. Eine Beispiel-Karte liegt schon dabei.
|
||||
|
||||
> **Begriffe in einem Satz:**
|
||||
> *MCP-Server* = das Programm, das Karten lesen/schreiben kann.
|
||||
> *Connector* = die Verbindung, über die Claude dieses Programm benutzt.
|
||||
> *Docker* = verpackt das Programm so, dass es überall gleich startet.
|
||||
> *Caddy* = stellt die https-Webadresse bereit.
|
||||
|
||||
---
|
||||
|
||||
## Teil A — Einmalig einrichten (ca. 15 Minuten)
|
||||
|
||||
### A1. Auf den Server einloggen
|
||||
|
||||
Öffne ein Terminal auf deinem Computer und logge dich auf dem VPS ein (Adresse/Benutzer
|
||||
hast du von Hetzner):
|
||||
|
||||
```bash
|
||||
ssh dein-benutzer@deine-server-ip
|
||||
```
|
||||
|
||||
Alle weiteren Befehle tippst du **auf dem Server** (im eingeloggten Fenster).
|
||||
|
||||
### A2. Das Projekt auf den Server holen
|
||||
|
||||
```bash
|
||||
git clone https://github.com/Kenearos/Star-Edit.git
|
||||
cd Star-Edit
|
||||
```
|
||||
|
||||
Falls du das Projekt schon mal geholt hast, hol nur die neueste Version:
|
||||
|
||||
```bash
|
||||
cd Star-Edit
|
||||
git pull origin main
|
||||
```
|
||||
|
||||
### A3. Das Docker-Netzwerk von Caddy herausfinden — **das musst du anpassen**
|
||||
|
||||
Damit Caddy mit unserem Server reden kann, müssen beide im selben Docker-Netzwerk sein.
|
||||
Zeig dir die vorhandenen Netzwerke an:
|
||||
|
||||
```bash
|
||||
docker network ls
|
||||
```
|
||||
|
||||
Suche den Namen, den **dein Caddy** benutzt (oft `caddy`, manchmal `web`, `proxy` o.ä.).
|
||||
Trage diesen Namen in die Datei `docker-compose.yml` ein – ganz unten steht:
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
name: caddy # <-- hier den echten Netzwerknamen eintragen
|
||||
```
|
||||
|
||||
Bearbeiten kannst du die Datei z.B. mit dem Editor `nano`:
|
||||
|
||||
```bash
|
||||
nano docker-compose.yml
|
||||
```
|
||||
|
||||
(Ändern, dann mit `Strg+O`, `Enter` speichern und `Strg+X` schließen.)
|
||||
|
||||
> Wenn du dir unsicher bist, welches Netzwerk Caddy nutzt:
|
||||
> `docker inspect <caddy-container-name> | grep -i network` zeigt es an.
|
||||
|
||||
### A4. Subdomain auf den Server zeigen lassen (DNS) — **das musst du anpassen**
|
||||
|
||||
Beim Anbieter deiner Domain legst du einen **A-Record** an:
|
||||
|
||||
| Typ | Name (Host) | Wert (Ziel) |
|
||||
|-----|-------------|-------------|
|
||||
| A | `sc-mcp` | *die IP-Adresse deines VPS* |
|
||||
|
||||
Damit wird `sc-mcp.pixel-by-design.de` auf deinen Server gezeigt. (Kann ein paar Minuten
|
||||
bis Stunden dauern, bis es überall aktiv ist.)
|
||||
|
||||
### A5. Caddy für die Subdomain konfigurieren
|
||||
|
||||
Öffne deine bestehende Caddy-Konfiguration (deine `Caddyfile`) und füge diesen Block
|
||||
hinzu – er steht auch in der mitgelieferten Datei [`Caddyfile`](./Caddyfile):
|
||||
|
||||
```caddy
|
||||
sc-mcp.pixel-by-design.de {
|
||||
reverse_proxy sc-mcp:8000
|
||||
}
|
||||
```
|
||||
|
||||
Das heißt: „Alles, was an `sc-mcp.pixel-by-design.de` ankommt, leite an unseren Server
|
||||
weiter." Caddy holt das https-Zertifikat automatisch.
|
||||
|
||||
Danach Caddy neu laden (je nach deinem Setup einer dieser Befehle):
|
||||
|
||||
```bash
|
||||
docker exec -w /etc/caddy <caddy-container-name> caddy reload
|
||||
# oder, falls Caddy nicht in Docker läuft:
|
||||
sudo systemctl reload caddy
|
||||
```
|
||||
|
||||
> Falls du die Subdomain im selben Reverse-Proxy noch nicht hattest: `<caddy-container-name>`
|
||||
> findest du mit `docker ps` (Spalte NAMES).
|
||||
|
||||
### A6. Den Server starten (der eine Befehl)
|
||||
|
||||
```bash
|
||||
./run.sh
|
||||
```
|
||||
|
||||
Das baut beim ersten Mal das Programm (dauert 1–2 Minuten) und startet es. Fertig sieht
|
||||
so aus, dass kein Fehler erscheint und der Server läuft.
|
||||
|
||||
Prüfen, ob er läuft:
|
||||
|
||||
```bash
|
||||
./run.sh logs
|
||||
```
|
||||
|
||||
(Mit `Strg+C` schließt du die Log-Ansicht wieder – der Server läuft weiter.)
|
||||
|
||||
**Schnelltest, ob alles greift** (baut testweise eine Mini-Mission):
|
||||
|
||||
```bash
|
||||
./run.sh selftest
|
||||
```
|
||||
|
||||
Wenn am Ende **„SELBSTTEST BESTANDEN"** steht, ist das Fundament in Ordnung.
|
||||
|
||||
### A7. In Claude als Connector eintragen
|
||||
|
||||
1. Claude öffnen (Web oder App) → **Einstellungen** → **Connectors** (bzw.
|
||||
„Connectors verwalten").
|
||||
2. **Custom Connector hinzufügen** wählen.
|
||||
3. Als Adresse/URL eintragen:
|
||||
|
||||
```
|
||||
https://sc-mcp.pixel-by-design.de/mcp
|
||||
```
|
||||
|
||||
(Wichtig: das `/mcp` am Ende gehört dazu.)
|
||||
4. Speichern. Ab jetzt darf Claude im Chat die `sc_`-Werkzeuge benutzen.
|
||||
|
||||
---
|
||||
|
||||
## Teil B — Eine Mission bauen (so läuft es im Alltag)
|
||||
|
||||
### B1. Karten & Sounds bereitstellen
|
||||
|
||||
Lege deine Dateien auf dem Server in den Ordner `Star-Edit/data/maps/`:
|
||||
|
||||
- Basis-Karten: `.scx` oder `.scm`
|
||||
- Sounds/Voiceover: `.wav`
|
||||
|
||||
Hochladen z.B. vom eigenen Rechner aus (in einem **neuen** Terminal, *nicht* eingeloggt
|
||||
auf dem Server):
|
||||
|
||||
```bash
|
||||
scp meine-karte.scx funk1.wav dein-benutzer@deine-server-ip:~/Star-Edit/data/maps/
|
||||
```
|
||||
|
||||
Eine Beispiel-Karte (`base-map.scx`) liegt bereits drin – du kannst sofort loslegen.
|
||||
|
||||
### B2. Mit Claude im Chat arbeiten
|
||||
|
||||
Schreib Claude einfach, was du willst – auf Deutsch. Claude ruft dann selbst die
|
||||
Werkzeuge auf. Beispiele:
|
||||
|
||||
> „Zeig mir die vorhandenen Karten."
|
||||
> → Claude nutzt `sc_list_maps`.
|
||||
|
||||
> „Beschreib mir die Karte `base-map.scx`."
|
||||
> → Claude nutzt `sc_describe_map` (Größe, Spieler, Locations, Trigger).
|
||||
|
||||
> „Erstelle auf `base-map.scx` bei Spielstart eine Texteinblendung ‚Mission 1 – Start'
|
||||
> und spawne 4 Marines für Spieler 1 an einer neuen Location ‚Basis' in der Kartenmitte.
|
||||
> Speichere das Ergebnis als `mission1.scx`."
|
||||
> → Claude legt die Location an (`sc_create_location`), baut den Trigger
|
||||
> (`sc_add_trigger`) und speichert (`sc_save_map`).
|
||||
|
||||
Für **Voiceover/Funksprüche**:
|
||||
|
||||
> „Bette `funk1.wav` ein und spiel es bei Sekunde 30 zusammen mit dem Text
|
||||
> ‚Achtung, Feindkontakt!' ab."
|
||||
> → Claude nutzt `sc_embed_wav` + `sc_add_trigger` (play_wav + display_text).
|
||||
|
||||
### B3. Ergebnis abholen
|
||||
|
||||
Die fertige Mission liegt danach in `Star-Edit/data/maps/` (z.B. `mission1.scx`). Auf den
|
||||
eigenen Rechner herunterladen:
|
||||
|
||||
```bash
|
||||
scp dein-benutzer@deine-server-ip:~/Star-Edit/data/maps/mission1.scx .
|
||||
```
|
||||
|
||||
Diese Datei kannst du in StarCraft laden und spielen.
|
||||
|
||||
---
|
||||
|
||||
## Teil C — Befehls-Spickzettel (auf dem Server, im Ordner `Star-Edit`)
|
||||
|
||||
| Was du willst | Befehl |
|
||||
|---------------|--------|
|
||||
| Server starten / neu starten | `./run.sh` |
|
||||
| Logs ansehen (beenden mit Strg+C) | `./run.sh logs` |
|
||||
| Selbsttest laufen lassen | `./run.sh selftest` |
|
||||
| Server stoppen | `./run.sh stop` |
|
||||
| Neueste Programmversion holen | `git pull origin main` danach `./run.sh` |
|
||||
|
||||
---
|
||||
|
||||
## Teil D — Wenn etwas klemmt
|
||||
|
||||
- **Claude sagt, der Connector ist nicht erreichbar.**
|
||||
1. Läuft der Server? `./run.sh logs` ansehen.
|
||||
2. Zeigt die Subdomain schon auf den Server? Im Browser `https://sc-mcp.pixel-by-design.de/mcp`
|
||||
öffnen – kommt *irgendeine* Antwort (kein „Server nicht gefunden"), passt das Grundsätzliche.
|
||||
3. Sind Caddy und der `sc-mcp`-Container im **selben** Docker-Netzwerk (Schritt A3)?
|
||||
|
||||
- **„network caddy not found" o.ä. beim Start.**
|
||||
Der Netzwerkname in `docker-compose.yml` stimmt nicht mit deinem Caddy-Netzwerk
|
||||
überein → Schritt A3 wiederholen (`docker network ls`).
|
||||
|
||||
- **Claude findet eine Location/Einheit nicht.**
|
||||
Die Fehlermeldung listet die verfügbaren Namen auf – einfach einen davon nehmen oder
|
||||
die Location vorher anlegen lassen.
|
||||
|
||||
- **Ich will den Server ohne Caddy nur kurz lokal testen.**
|
||||
In `docker-compose.yml` die zwei `ports:`-Zeilen einkommentieren (`# ports:` und
|
||||
`# - "8000:8000"`), dann `./run.sh`. Endpunkt: `http://deine-server-ip:8000/mcp`.
|
||||
|
||||
---
|
||||
|
||||
## Sicherheitshinweis
|
||||
|
||||
Der Server hat **kein Passwort**: Wer die URL `https://sc-mcp.pixel-by-design.de/mcp`
|
||||
kennt, kann ihn benutzen. Für ein privates Werkzeug ist das meist okay – halte die URL
|
||||
aber für dich. Wenn du später einen Zugriffsschutz möchtest, sag Bescheid, dann bauen wir
|
||||
einen (z.B. ein Token in Caddy) ein.
|
||||
Loading…
Add table
Add a link
Reference in a new issue