larpaso-website/DEPLOYMENT_CLAUDE.md
2026-11-02 22:12:01 +00:00

4.8 KiB
Raw Blame History

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 Netz web, 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).
  • /shared ist 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] → y
  • Enable 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."

Gemeinsamer Ordner auf dem Host (/srv/shared)

Das Volume claude_shared (in den Containern /shared) ist auf dem Host unter /srv/shared eingehängt, damit Pascal und Lara per scp ohne sudo Dateien hochladen und holen können (Anleitung: ONBOARDING_LARA.md, Abschnitt 9). Ordner darin sind gruppen-schreibbar mit gesetztem Gruppen-Bit (Gruppe gid 1000 = Container-Nutzer node).

Einmalig einrichten:

sudo mkdir -p /srv/shared
echo '/var/lib/docker/volumes/claude_shared/_data /srv/shared none bind 0 0' | sudo tee -a /etc/fstab
sudo mount /srv/shared
G=$(getent group 1000 | cut -d: -f1)
sudo usermod -aG "$G" <laras-user>     # ebenso für deinen eigenen Nutzer, falls nicht schon gid 1000

Die Gruppenmitgliedschaft gilt ab der nächsten Anmeldung.

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.