Files
ROMFASTSQL/proxmox/lxc110-moltbot/README.md
Claude Agent 1df533edba docs(lxc110): incident DNS/OOM 2026-07-31 + zram pe pve1 + limite TTS
LXC 110 (moltbot) a picat dupa un OOM local containerului urmat de reboot:
tailscaled a ramas delogat, iar containerul mostenea resolv.conf-ul Tailscale
de la host-ul pve1 (doar MagicDNS 100.100.100.100) -> rezolutie DNS zero desi
L3 era functional -> echo-core in crash-loop pe telegram.error.TimedOut.

Fixuri aplicate:
- pct set 110 --nameserver '10.0.20.1 1.1.1.1' (elimina dependenta de Tailscale)
- zram-tools pe pve1 (8G zstd, prio 100) - `swap: 4096` din config era fictiv,
  host-ul nu avea niciun swap; root pe ZFS deci zram, nu swapfile
- MemoryHigh/MemoryMax pe pocket-tts + supertonic-tts - toate serviciile user
  rulau cu limite `infinity`, de unde OOM-uri recurente (Apr 25, May 28 x4)
  cu victime aleatorii alese dupa oom_score_adj

Documentatie:
- nou post-mortem in cluster/incidents/, adaugat in indexuri
- README lxc110: host corectat pveelite -> pve1 (+ RAM/CPU/storage reale),
  comenzile pct redirectionate spre nodul corect
- README lxc171: tabel cu starea swap pe cele 3 noduri (pveelite are zvol,
  nu zram - nu necesita acelasi fix)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 10:14:54 +00:00

420 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LXC 110 - MoltBot (AI Chatbot)
**Director:** `proxmox/lxc110-moltbot/`
**VMID:** 110
**IP:** 10.0.20.173 (intern) | 100.120.119.70 (Tailscale)
**Host Proxmox:** pve1 (10.0.20.200)
**Rol:** Bot AI pentru Telegram și WhatsApp cu Claude Opus 4.5
---
## Informații Container
| Parametru | Valoare |
|-----------|---------|
| VMID | 110 |
| Hostname | moltbot |
| IP intern | 10.0.20.173 |
| IP Tailscale | 100.120.119.70 |
| Host Proxmox | pve1 (10.0.20.200) |
| User serviciu | `moltbot` |
| Parola user | `Moltbot2026!` |
| Storage | local-zfs (50GB) |
| RAM | 8GB (+ 4GB swap) |
| CPU | 6 cores |
| DNS | `10.0.20.1 1.1.1.1` (explicit, vezi mai jos) |
| OS | Ubuntu 24.04 LTS |
## Componente Instalate
- Ubuntu 24.04 LTS
- OpenClaw v2026.2.9 (upgraded from MoltBot/clawdbot)
- Node.js v22.22.0 (user-space)
- Bun v1.3.7
- Tailscale (pentru SSH, fără funnel)
- UFW Firewall
- Fail2ban
## Canale Configurate
| Canal | Status | Detalii |
|-------|--------|---------|
| **Telegram** | ✅ ON | Bot token configurat |
| **WhatsApp** | ✅ ON | Linked la +40723197939 |
## Model AI
- **Provider:** Anthropic
- **Model:** claude-opus-4-5
- **Context:** 200k tokens
## Securitate
| Măsură | Status |
|--------|--------|
| User dedicat (non-root) | `moltbot` |
| SSH key-only auth | Activat |
| UFW Firewall | Activat |
| Fail2ban SSH | Activat |
| Tailscale SSH | Activat |
| Sudo limitat | Doar `systemctl` |
| Linger enabled | Da (serviciu persistent) |
### Reguli Firewall UFW
```
22/tcp ALLOW IN Anywhere
18789 ALLOW IN 10.0.20.0/24 (MoltBot Dashboard)
Anywhere ALLOW IN 10.0.20.0/24 (rețea locală)
Anywhere ALLOW IN 100.64.0.0/10 (Tailscale)
```
### Configurare Sudo
User `moltbot` are sudo passwordless doar pentru:
- `systemctl status *`
- `systemctl start *`
- `systemctl stop *`
- `systemctl restart *`
## Conectare
### SSH (rețea internă)
```bash
ssh moltbot@10.0.20.173
```
### SSH (Tailscale - de oriunde)
```bash
ssh moltbot@100.120.119.70
```
### Acces root (pentru administrare)
```bash
ssh root@10.0.20.173
```
## MoltBot - Comenzi
### Terminal UI (TUI)
```bash
# Conectare și TUI într-o singură comandă
ssh -t moltbot@10.0.20.173 "clawdbot tui"
# Sau conectare separată
ssh moltbot@10.0.20.173
clawdbot tui
```
### Web Dashboard (via SSH Tunnel)
```bash
# Pe calculatorul local, deschide tunnel
ssh -L 18789:127.0.0.1:18789 -N moltbot@10.0.20.173 &
# Apoi accesează în browser
# http://localhost:18789
```
### Comenzi utile
```bash
# Status complet
clawdbot status
# Status detaliat
clawdbot status --deep
# Verificare versiune
clawdbot --version
# Restart gateway
clawdbot gateway restart
# Vezi loguri live
clawdbot logs --follow
# Verificare canale
clawdbot status --deep
# Gestionare dispozitive (pairing)
clawdbot devices list
clawdbot devices approve <request-id>
```
## Configurare Gateway
| Parametru | Valoare |
|-----------|---------|
| Port | 18789 |
| Bind | loopback (doar local) |
| Auth | token + password |
| Tailscale mode | off |
### Fișiere configurare
| Fișier | Descriere |
|--------|-----------|
| `~/.clawdbot/clawdbot.json` | Configurare principală |
| `~/.clawdbot/logs/gateway.log` | Loguri gateway |
| `~/.clawdbot/agents/main/sessions/` | Sesiuni agent |
| `~/.clawdbot/credentials/` | Credențiale (chmod 700) |
## Structura Directoare
```
/home/moltbot/
├── .ssh/
│ └── authorized_keys # Chei SSH pentru acces
├── .bun/ # Bun runtime
├── .local/
│ └── share/moltbot/
│ └── node/ # Node.js user-space
├── .clawdbot/
│ ├── clawdbot.json # Config MoltBot
│ ├── credentials/ # Credențiale (chmod 700)
│ ├── agents/
│ │ └── main/
│ │ └── sessions/ # Sesiuni chat
│ └── logs/
│ └── gateway.log # Loguri
├── clawd/ # Workspace pentru agent
└── .bashrc # PATH pentru node/bun
```
## Servicii Systemd
### Gateway Service
```bash
# Status
systemctl --user status clawdbot-gateway
# Restart
systemctl --user restart clawdbot-gateway
# Logs
journalctl --user -u clawdbot-gateway -f
```
## Administrare via Proxmox
### De pe pve1 (sau alt nod cluster)
```bash
# Status container
ssh root@10.0.20.200 "pct status 110"
# Exec comandă
ssh root@10.0.20.200 "pct exec 110 -- <comandă>"
# Stop/Start
ssh root@10.0.20.200 "pct stop 110"
ssh root@10.0.20.200 "pct start 110"
# Console
ssh root@10.0.20.200 "pct enter 110"
```
## DNS & Swap (incident 2026-07-31)
### DNS — nu depinde de Tailscale
Containerul **nu** avea `nameserver` în `pct config`, deci moștenea `/etc/resolv.conf` de
la host-ul pve1 — unde fișierul e scris de Tailscale și conținea doar MagicDNS
(`100.100.100.100`). Când `tailscaled` din container s-a delogat, DNS-ul a murit complet
(deși L3 era OK: `ping 8.8.8.8` funcționa) → `echo-core` în crash-loop pe
`telegram.error.TimedOut`.
Fix aplicat — nameserver explicit:
```bash
ssh root@10.0.20.200 "pct set 110 --nameserver '10.0.20.1 1.1.1.1'"
```
> **Regula de diagnostic:** la „nu mai ajunge la internet", verifică întâi
> `getent hosts api.telegram.org` și `cat /etc/resolv.conf`, **nu** ping-ul.
> Ping-ul poate merge perfect cu DNS-ul complet mort.
### Swap — necesită zram pe host
`swap: 4096` din `pct config` e doar o limită cgroup (`memory.swap.max`), nu un backing
store. Cât timp pve1 nu avea swap deloc, în container `free -h` arăta `Swap: 0B`.
Rezolvat prin zram pe pve1 (root-ul e pe ZFS → swapfile exclus):
```bash
# pe pve1 (host)
apt install -y zram-tools
cat > /etc/default/zramswap <<'EOF'
ALGO=zstd
SIZE=8192
PRIORITY=100
EOF
systemctl restart zramswap.service
swapon --show # /dev/zram0 8G prio 100
```
Verificare în container: `free -h``Swap: 4.0Gi`.
### Limite de memorie pe TTS
Serviciile user systemd rulau toate cu `MemoryMax=infinity` / `MemoryHigh=infinity`, deci
oricare putea consuma singur cei 8 GB → OOM-uri recurente (Apr 25, May 28 ×4, Jul 31), cu
victime aparent aleatorii (`dbus-daemon`, `sd-pam`) alese după `oom_score_adj`.
Aplicat pe stiva TTS — `MemoryHigh` face throttle + reclaim în loc de kill:
| Serviciu | RSS repaus | MemoryHigh | MemoryMax |
|----------|-----------|------------|-----------|
| `pocket-tts` | ~945 MB | 1536M | 2G |
| `supertonic-tts` | ~500 MB | 1024M | 1536M |
Drop-in-uri: `~/.config/systemd/user/<serviciu>.service.d/limits.conf`
```bash
su - moltbot
export XDG_RUNTIME_DIR=/run/user/1000
systemctl --user show pocket-tts -p MemoryHigh,MemoryMax,MemoryCurrent
```
**Post-mortem complet:** `../cluster/incidents/2026-07-31-lxc110-dns-tailscale-oom.md`
## Troubleshooting
### OpenClaw gateway se restartează continuu (OOM kill)
```bash
# Verifică dacă este omorât de OOM killer
journalctl --user -u openclaw-gateway | grep -i oom
# Verifică consumul de memorie
free -h
systemctl --user status openclaw-gateway
# Verifică dacă OOM-ul e local containerului sau al host-ului
# ssh root@10.0.20.200 "cat /sys/fs/cgroup/lxc/110/memory.events" # oom_kill > 0 => local
# ssh root@10.0.20.200 "free -h; swapon --show" # zram0 8G activ?
# Soluție: Crește RAM-ul containerului pe Proxmox (actual: 8192)
# ssh root@10.0.20.200
# pct stop 110
# pct set 110 --memory 12288
# pct start 110
# Curăță sesiunile vechi pentru a reduce consumul
openclaw sessions clean --older-than 7d
```
### MoltBot gateway nu pornește
```bash
# Verifică logs
clawdbot logs --follow
# Verifică status
clawdbot status
# Restart
clawdbot gateway restart
# Rulare manuală pentru debug
/usr/bin/node /usr/lib/node_modules/clawdbot/dist/entry.js gateway --port 18789
```
### Gateway unreachable
```bash
# Verifică dacă portul e ocupat
ss -tlnp | grep 18789
# Verifică serviciul systemd
systemctl --user status clawdbot-gateway
# Restart complet
systemctl --user restart clawdbot-gateway
```
### Eroare "gateway not connected" în TUI
```bash
# Gateway-ul probabil s-a oprit, restartează-l
clawdbot gateway restart
```
### Telegram/WhatsApp nu răspunde
```bash
# Verifică starea canalelor
clawdbot status --deep
# Pentru Telegram, verifică token-ul
grep botToken ~/.clawdbot/clawdbot.json
# Pentru WhatsApp, verifică link-ul
clawdbot status | grep WhatsApp
```
### Probleme de permisiuni
```bash
# Setează permisiunile corecte
chmod 700 ~/.clawdbot
chmod 700 ~/.clawdbot/credentials
chmod 600 ~/.clawdbot/clawdbot.json
```
### Tailscale nu funcționează
```bash
sudo systemctl status tailscaled
sudo tailscale status
tailscale ip
```
## Backup
### Backup configurare MoltBot
```bash
# De pe mașina locală
scp -r moltbot@10.0.20.173:~/.clawdbot ./backup-moltbot-$(date +%Y%m%d)/
```
### Backup complet LXC (via Proxmox)
```bash
ssh root@10.0.20.200 "vzdump 110 --storage local --compress zstd"
```
## Provider AI - Anthropic
MoltBot folosește Anthropic Claude prin API key configurat în:
- Config: `~/.clawdbot/clawdbot.json``auth.profiles.anthropic:default`
- Credențiale: `~/.clawdbot/credentials/`
### Monitorizare costuri
- Dashboard Anthropic: https://console.anthropic.com/settings/usage
- Sesiune curentă: ~132k/200k tokens (66%)
## Reconfigurare (dacă e necesar)
### Rulare wizard onboarding
```bash
clawdbot onboard
```
### Resetare completă
```bash
# Oprește gateway
clawdbot gateway stop
# Backup config vechi
mv ~/.clawdbot ~/.clawdbot.backup
# Rulează onboarding fresh
clawdbot onboard
```
---
## Legături Utile
- **Proxmox Index:** `../README.md`
- **Documentație MoltBot:** https://docs.molt.bot
- **MoltBot oficial:** https://molt.bot
- **Ghid deployment:** https://merox.dev/blog/moltbot-proxmox-deployment/
---
**Data setup:** 2026-01-29
**Ultima actualizare:** 2026-07-31 (host pve1, DNS explicit, zram — incident DNS/OOM)
**Autor:** Claude Code