# Plan: moltbot Arbeitsumgebung einrichten ## Ziel moltbot (@egomol_bot) soll genauso arbeiten wie die CLI-Sessions: Infrastructure-Doku pflegen, Server verwalten, Repos committen/pushen. Dafür braucht er CLAUDE.md, SSH-Zugriff auf alle Server, und Gitea-Zugang. ## Ausgangslage (srvclawdbot01) - Clawdbot läuft, Telegram-Channel OK, Pairing abgeschlossen - SSH-Key existiert: `/root/.ssh/id_rsa` (root@srvclawdbot01) - Gitea (gitea.egonetix.de:222) ist in known_hosts - **Fehlt:** CLAUDE.md, SSH-Zugriff auf Infra-Server, Repos geklont, Gitea-Key, Verzeichnisstruktur ## Schritte ### 1. CLAUDE.md deployen **Datei:** `/root/.claude/CLAUDE.md` auf srvclawdbot01 ```bash scp /home/rwiegand/dotfiles/claude_settings/CLAUDE.md root@10.0.0.61:/root/.claude/CLAUDE.md ``` Claude Code CLI liest diese Datei automatisch als globale Instruktionen. 1:1 Kopie. ### 2. Verzeichnisstruktur anlegen Gleiche Struktur wie auf dem Laptop, damit CLAUDE.md-Pfade funktionieren: ```bash ssh root@10.0.0.61 "mkdir -p /root/Nextcloud/egonetix" ``` ### 3. SSH-Key auf alle Server verteilen Den existierenden Key `/root/.ssh/id_rsa.pub` auf alle Server kopieren: | Server | IP | User | |--------|----|------| | srvhost04 | 95.216.112.133 | root | | srvdc01 | 10.0.0.21 | root | | srvdocker02 | 10.0.0.29 | root | | srvmail01 | 10.0.0.23 | root | | srvmailgw03 | 10.0.0.37 | root | | srvrevproxy02 | 10.0.0.29 | root | | srvfs01 | ? | root | | gwnue01 | 10.0.0.1 | root | | gw-st01 | 172.20.20.1 | root | **Methode:** Vom Laptop aus den Public Key lesen und per SSH auf jeden Server verteilen: ```bash PUBKEY=$(ssh root@10.0.0.61 "cat /root/.ssh/id_rsa.pub") for host in srvhost04 srvdc01 srvdocker02 srvmail01 srvmailgw03 srvrevproxy02 srvfs01 gwnue01; do ssh root@$host "echo '$PUBKEY' >> /root/.ssh/authorized_keys && sort -u -o /root/.ssh/authorized_keys /root/.ssh/authorized_keys" done ``` ### 4. Known Hosts populieren Vom Server aus alle Hosts einmal kontaktieren, damit SSH nicht nach Fingerprints fragt: ```bash ssh root@10.0.0.61 "for h in 10.0.0.21 10.0.0.23 10.0.0.29 10.0.0.37 95.216.112.133 10.0.0.1 172.20.20.1; do ssh-keyscan -H \$h >> /root/.ssh/known_hosts 2>/dev/null done sort -u -o /root/.ssh/known_hosts /root/.ssh/known_hosts" ``` ### 5. Gitea SSH-Key hinterlegen Public Key als Deploy-Key oder User-Key in Gitea registrieren: ```bash PUBKEY=$(ssh root@10.0.0.61 "cat /root/.ssh/id_rsa.pub") curl -X POST -H "Authorization: token $(cat ~/.config/gitea/token)" \ -H "Content-Type: application/json" \ -d "{\"title\":\"moltbot (srvclawdbot01)\",\"key\":\"$PUBKEY\"}" \ https://gitea.egonetix.de/api/v1/user/keys ``` ### 6. Repos klonen Infrastructure-Repo und relevante Repos auf srvclawdbot01 klonen: ```bash ssh root@10.0.0.61 " cd /root/Nextcloud/egonetix git clone ssh://git@gitea.egonetix.de:222/Egonetix/infrastructure.git " ``` Optional weitere Repos (zabbix, claude-remote-agent) je nach Bedarf. ### 7. dotfiles/claude_settings klonen Damit moltbot die Settings-Sync Pflicht erfüllen kann: ```bash ssh root@10.0.0.61 " mkdir -p /root/dotfiles cd /root/dotfiles git clone ssh://git@gitea.egonetix.de:222/root/claude_settings.git " ``` ### 8. Gitea Token auf Server hinterlegen ```bash ssh root@10.0.0.61 "mkdir -p /root/.config/gitea" scp /home/rwiegand/.config/gitea/token root@10.0.0.61:/root/.config/gitea/token ``` ### 9. tea CLI installieren (optional) Falls `~/bin/tea` auf dem Server gewünscht ist für Gitea-Interaktion. ### 10. Git-Config auf Server setzen ```bash ssh root@10.0.0.61 " git config --global user.name 'moltbot' git config --global user.email 'moltbot@egonetix.de' " ``` ## Verifikation 1. `ssh root@10.0.0.61 "cat /root/.claude/CLAUDE.md | head -5"` — CLAUDE.md vorhanden 2. `ssh root@10.0.0.61 "ssh root@10.0.0.21 hostname"` — SSH zu srvdc01 funktioniert 3. `ssh root@10.0.0.61 "cd /root/Nextcloud/egonetix/infrastructure && git pull"` — Repo-Zugriff OK 4. `ssh root@10.0.0.61 "cd /root/dotfiles/claude_settings && git pull"` — Settings-Repo OK 5. moltbot in Telegram bitten: "Lies die README von infrastructure und sag mir was drin steht" 6. moltbot bitten: "Prüfe den Status von srvdocker02 per SSH" ## Offene Punkte - IPs von srvfs01 und srvrevproxy02 verifizieren (aus Host-Dateien) - gw-st01 (172.20.20.1) ist nur über VPN erreichbar — prüfen ob srvclawdbot01 VPN-Routing hat - Entscheidung: Soll moltbot eine eigene Git-Identity bekommen (moltbot@egonetix.de) oder die gleiche wie der User?