4.1 KiB
DEPLOYMENT_CLAUDE.md – Claude-Remote-Server auf dem VPS
Auf dem VPS laufen für Pascal und Lara je ein Claude-Code-Container im Remote-Control-Server-Modus. Sitzungen startet ihr über claude.ai/code oder die Claude-App (auch vom Tablet). Die Sitzungen von Pascal und Lara reden über ein gemeinsames MCP-Postfach miteinander.
Quellcode: Ordner claude-remote/ in diesem Repo. Auf dem Server liegt eine
Kopie unter ~/claude-stack (Compose-Projekt claude).
Aufbau
| Container | Aufgabe |
|---|---|
claude-pascal |
Claude Code mit Pascals Login, je ein Remote-Control-Server für larpaso und youtube |
claude-lara |
dasselbe mit Laras Login |
claude-postfach-1 |
MCP-Postfach (Nachrichten zwischen den beiden) |
- Eigenes Docker-Netz
claude_claude. Kein Zugang zum Netzweb, keine Host-Ports, kein Caddy-Eintrag, kein Docker-Socket. Remote Control baut nur ausgehende Verbindungen zu Anthropic auf. - Projekte im Container:
~/projekte/larpaso,~/projekte/youtube. Neue Sitzungen bekommen je einen eigenen Git-Worktree (--spawn worktree). /sharedist ein gemeinsamer Ordner beider Container für große Dateien (Videos, Audio).- Limits: je Claude-Container 1,5 CPU / 2,5 GB RAM, Postfach 128 MB.
- Deployment der Website bleibt bei Pascal per SSH. Die Claude-Container können nichts deployen.
Einmalige Einrichtung (noch offen)
1. Repo youtube in Forgejo anlegen (Pascal)
Forgejo → Neues Repository → Besitzer pascal, Name youtube, leer
(keine README, keine .gitignore). Lara bei Bedarf als Mitarbeiterin
eintragen.
Danach die vorbereitete Grundstruktur pushen (Claude erledigt das auf Zuruf).
2. SSH-Keys der Container in Forgejo eintragen
Die Keys stehen im Log der Container:
docker logs claude-pascal 2>&1 | grep -A1 "Forgejo-SSH-Key"
docker logs claude-lara 2>&1 | grep -A1 "Forgejo-SSH-Key"
- Pascals Key → in Pascals Forgejo-Profil (Einstellungen → SSH-Schlüssel).
- Laras Key → in Laras Forgejo-Profil.
Der Container klont die Repos danach von selbst (Versuch jede Minute).
3. Claude-Login und Freigaben (jede Person für ihren Container)
Per SSH auf den Server, dann:
docker exec -it claude-pascal claude
(Lara: claude-lara.) Dort /login ausführen, den angezeigten Link im
Browser öffnen, mit dem eigenen Claude-Account anmelden, Code
zurückkopieren. Mit /exit beenden.
Danach einmalig die Rückfragen von Remote Control beantworten:
docker exec -it claude-pascal tmux attach -t larpaso
Trust …? [y/N]→yEnable Remote Control? (y/n)→y- ggf. Spawn-Modus →
2(worktree)
Mit Strg+b, dann d lösen (nicht Strg+C, das beendet den Server). Dasselbe
für -t youtube.
Lara hat keinen SSH-Zugang – den Login-Schritt für sie macht Pascal per
docker exec und schickt Lara den Login-Link. Sie meldet sich an und gibt
ihm den Code zurück.
4. Testen
claude.ai/code bzw. Claude-App öffnen → die Umgebungen larpaso und
youtube auf claude-pascal erscheinen → neue Sitzung starten.
Postfach
MCP-Server postfach mit den Tools send_message, read_messages und
list_messages. Ungelesene Nachrichten meldet ein Hook automatisch beim
Start einer Sitzung und bei jedem Prompt. Die Nachrichten liegen im Volume
claude_postfach-data (messages.json).
Ihr könnt Claude auch direkt bitten, z. B.: „Schreib Lara ins Postfach, dass die Startseite überarbeitet ist."
Betrieb
cd ~/claude-stack
docker compose -p claude ps # Status
docker compose -p claude logs -f claude-pascal # Logs
docker compose -p claude restart claude-lara # Neustart
docker compose -p claude build --pull && docker compose -p claude up -d # Claude Code aktualisieren
Nach Änderungen an claude-remote/ im Repo den Ordner nach ~/claude-stack
kopieren und neu bauen. Logins, SSH-Keys und Projekte bleiben erhalten (sie
liegen in den Volumes claude_home-pascal / claude_home-lara).
Nicht docker compose -p claude down -v – das löscht die Volumes mit
Logins, Keys, nicht gepushter Arbeit und dem Postfach.