- Voraussetzungen
- Erstinstallation
- Konfiguration
- Messaging-Kanäle einrichten
- Updates
- Backup & Restore
- Reverse Proxy (HTTPS)
- Troubleshooting
| Anforderung | Minimum | Empfohlen |
|---|---|---|
| Synology Modell | Jedes x86-64 Modell | DS220+, DS423, DS920+ oder neuer |
| RAM | 2 GB frei | 4 GB frei |
| Speicher | 2 GB | 4 GB (für Docker-Images und Build-Cache) |
| CPU | x86-64 | Intel Celeron J4125 oder besser |
- DSM 7.0+ (empfohlen: DSM 7.2+)
- Container Manager — installierbar über das DSM Paketzentrum
- Portainer — läuft bereits auf deiner NAS
Du brauchst mindestens einen LLM-API-Key:
| Provider | Registrierung | Kosten |
|---|---|---|
| Anthropic (Claude) | https://console.anthropic.com | Pay-per-use |
| OpenAI | https://platform.openai.com | Pay-per-use |
| OpenRouter | https://openrouter.ai | Pay-per-use, viele Modelle |
| Groq | https://console.groq.com | Gratis-Tier verfügbar |
- Öffne Portainer (
https://NAS-IP:9443) - Gehe zu Images → Build a new image
- Name:
zeroclaw:latest - Wähle URL und gib ein:
Oder wähle Web editor und kopiere den Inhalt des Dockerfiles hinein: https://github.com/dmayk/zeroclaw/blob/main/Dockerfile
https://raw.githubusercontent.com/dmayk/zeroclaw/main/Dockerfile - Klicke Build the image
- Warte 10-30 Minuten (Rust-Compilation) — Fortschritt wird live angezeigt
Hinweis: Portainer braucht einen Build-Kontext. Da unser Dockerfile das Repository selbst klont, kannst du den Build-Kontext leer lassen oder auf ein leeres Verzeichnis zeigen lassen.
- Öffne Portainer (
https://NAS-IP:9443) - Stacks → Add Stack
- Name:
zeroclaw - Build method: Web editor
- Kopiere den Inhalt der
docker-compose.ymlaus dem Repo hinein: https://github.com/dmayk/zeroclaw/blob/main/docker-compose.yml
Scrolle nach unten zu Environment variables → Advanced mode.
Pflicht (eine Zeile pro Variable):
ZEROCLAW_API_KEY=sk-ant-DEIN_ANTHROPIC_KEY_HIER
Empfohlen:
ZEROCLAW_PROVIDER=anthropic
ZEROCLAW_MODEL=claude-sonnet-4-5-20250929
ZEROCLAW_MEMORY_BACKEND=sqlite
ZEROCLAW_AUTONOMY=supervised
Alle Einstellungen die früher in der config.toml standen werden jetzt als Environment-Variablen gesetzt. Siehe Konfiguration für die vollständige Liste.
- Klicke Deploy the stack
- Container startet in wenigen Sekunden
- Containers → zeroclaw → sollte Running (grün) sein
- Klicke auf den Container → Logs → prüfe auf Fehler
- Console →
/bin/bash→zeroclaw doctor
Alles wird über Portainer Environment-Variablen gesteuert.
Ändern: Stacks → zeroclaw → Editor → Environment variables → Update the stack
| Variable | Default | Beschreibung |
|---|---|---|
ZEROCLAW_API_KEY |
— | Pflicht. API-Key deines LLM-Providers |
ZEROCLAW_PROVIDER |
anthropic |
Provider: anthropic, openai, openrouter, groq, ollama, etc. |
ZEROCLAW_MODEL |
claude-sonnet-4-5-20250929 |
Modell-ID |
| Variable | Default | Beschreibung |
|---|---|---|
ZEROCLAW_MEMORY_BACKEND |
sqlite |
sqlite, markdown, oder none |
ZEROCLAW_EMBEDDING_PROVIDER |
openai |
Provider für Vektor-Embeddings |
ZEROCLAW_EMBEDDING_MODEL |
text-embedding-3-small |
Embedding-Modell |
ZEROCLAW_EMBEDDING_API_KEY |
— | API-Key für Embeddings (oft = OpenAI Key) |
| Variable | Default | Beschreibung |
|---|---|---|
ZEROCLAW_GATEWAY_HOST |
127.0.0.1 |
Bind-Adresse |
ZEROCLAW_GATEWAY_PORT |
3000 |
HTTP-Port |
ZEROCLAW_AUTONOMY |
supervised |
readonly, supervised, oder full |
ZEROCLAW_IDENTITY_NAME |
Zeroclaw |
Name deines Agenten |
| Variable | Beschreibung |
|---|---|
ZEROCLAW_TELEGRAM_TOKEN |
Telegram Bot-Token |
ZEROCLAW_DISCORD_TOKEN |
Discord Bot-Token |
ZEROCLAW_SLACK_BOT_TOKEN |
Slack Bot-Token |
ZEROCLAW_SLACK_APP_TOKEN |
Slack App-Token |
ZEROCLAW_SLACK_SIGNING_SECRET |
Slack Signing Secret |
ZEROCLAW_WHATSAPP_TOKEN |
WhatsApp Business API Token |
ZEROCLAW_WHATSAPP_VERIFY_TOKEN |
WhatsApp Verify Token |
ZEROCLAW_WHATSAPP_PHONE_NUMBER_ID |
WhatsApp Phone Number ID |
ZEROCLAW_MATRIX_ACCESS_TOKEN |
Matrix Access Token |
ZEROCLAW_MATRIX_USER_ID |
Matrix User ID (z.B. @bot:matrix.org) |
ZEROCLAW_EMAIL_USER |
Email-Adresse |
ZEROCLAW_EMAIL_PASSWORD |
Email App-Passwort |
ZEROCLAW_EMAIL_IMAP_HOST |
IMAP-Server (z.B. imap.gmail.com) |
ZEROCLAW_EMAIL_IMAP_PORT |
IMAP-Port (Default: 993) |
ZEROCLAW_EMAIL_SMTP_HOST |
SMTP-Server (z.B. smtp.gmail.com) |
ZEROCLAW_EMAIL_SMTP_PORT |
SMTP-Port (Default: 587) |
| Variable | Beschreibung |
|---|---|
ZEROCLAW_TUNNEL_KIND |
cloudflare, tailscale, ngrok, oder leer |
ZEROCLAW_TUNNEL_TOKEN |
Token des Tunnel-Providers |
Alle Daten liegen auf dem NAS unter /volume1/docker/zeroclaw/data/:
| Datei | Inhalt |
|---|---|
memory.db |
SQLite — Konversationen & Vektor-Embeddings |
.secret_key |
Verschlüsselungsschlüssel (ChaCha20-Poly1305) |
workspace/ |
Identitäts- und Arbeitsdateien |
Sichtbar in File Station → docker/zeroclaw/data/.
- Öffne Telegram → suche
@BotFather→ sende/newbot→ kopiere Token - In Portainer Environment hinzufügen:
ZEROCLAW_TELEGRAM_TOKEN=123456789:ABCdefGHIjklMNO - Update the stack
- Sende deinem Bot eine Nachricht — fertig
Ohne HTTPS nutzt Zeroclaw automatisch Long-Polling. Kein Reverse Proxy nötig.
- https://discord.com/developers/applications → Bot erstellen
MESSAGE_CONTENTIntent aktivieren- Bot zu deinem Server einladen (OAuth2 → bot Scope)
- In Portainer:
ZEROCLAW_DISCORD_TOKEN=MTIz... - Update the stack
- https://api.slack.com/apps → App erstellen
- Bot Token + App Token generieren
- In Portainer alle drei Variablen setzen
- Update the stack
- Images → Build a new image
- Name:
zeroclaw:latest - Dockerfile wie bei der Erstinstallation einfügen (oder URL)
- Build the image (10-30 Minuten)
- Containers → zeroclaw → Recreate → Haken bei Pull latest image deaktivieren → Recreate
Das Dockerfile klont automatisch den neuesten main Branch bei jedem Build.
Ändere im Dockerfile vor dem Build die ARG Zeile:
ARG ZEROCLAW_VERSION=v0.6.0Oder nutze per SSH:
cd /volume1/docker/zeroclaw
sudo docker build -t zeroclaw:latest --build-arg ZEROCLAW_VERSION=v0.6.0 --no-cache .Dann in Portainer: Containers → zeroclaw → Recreate.
| Was | Wo | Priorität |
|---|---|---|
| Environment-Variablen | Portainer Stack-Einstellungen | Kritisch — notiere deine Keys separat! |
| Persistente Daten | /volume1/docker/zeroclaw/data/ |
Hoch |
Per File Station: docker/zeroclaw/data/ Ordner kopieren oder herunterladen.
Per File Station: data/ Ordner zurückkopieren nach docker/zeroclaw/data/.
Dann in Portainer den Container neu starten.
Füge diesen Pfad zu deinem Hyper Backup Task hinzu:
/volume1/docker/zeroclaw/data/
Nur nötig für Webhook-basierte Kanäle (Slack, WhatsApp). Telegram und Discord funktionieren auch ohne HTTPS im Polling-Modus.
- DSM → Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy
- Erstellen:
- Quelle: HTTPS,
zeroclaw.deine-domain.de, Port 443 - Ziel: HTTP,
localhost, Port 3000
- Quelle: HTTPS,
- SSL-Zertifikat via Let's Encrypt einrichten
In Portainer Environment:
ZEROCLAW_TUNNEL_KIND=cloudflare
ZEROCLAW_TUNNEL_TOKEN=dein-cloudflare-tunnel-token
Stoppe andere Container in Portainer während des Builds (Containers → Select all → Stop).
- Portainer → Containers → zeroclaw → Logs
- Häufigste Ursache: Fehlender
ZEROCLAW_API_KEY
In Portainer: Images → Unused images aufräumen und Volumes → Unused volumes aufräumen.
| Aktion | Portainer-Pfad |
|---|---|
| Image bauen | Images → Build a new image |
| Stack deployen | Stacks → zeroclaw → Deploy |
| Config ändern | Stacks → zeroclaw → Editor → Environment → Update |
| Logs | Containers → zeroclaw → Logs |
| Shell | Containers → zeroclaw → Console → /bin/bash |
| Neustart | Containers → zeroclaw → Restart |
| Update anwenden | Containers → zeroclaw → Recreate |