Loading blog posts...
Loading blog posts...
Laden...

U bent waarschijnlijk tegen dezelfde Raspberry Pi-muur aangelopen als ik: containers die niet opstarten na een herstart, mysterieuze ARM-imageproblemen, en een "gateway" die u per ongeluk aan het internet heeft blootgesteld. Deze handleiding zet OpenClaw (voorheen Clawdbot/MoltBot) op met Docker Compose op Raspberry Pi, zodat het herstarts overleeft, netjes upgradet, en standaard privé blijft.
sudoOPENAI_API_KEY of ANTHROPIC_API_KEYImportant
[!IMPORTANT] OpenClaw is een 2025-2026 rebranding. Bij het pullen van images of lezen van documentatie kunnen "Clawdbot/MoltBot"-verwijzingen nu naar "OpenClaw" verwijzen. Ik zou repository-namen en image-tags dubbelchecken voordat u aanneemt dat een tutorial actueel is.
bashsudo apt update sudo apt -y full-upgrade sudo reboot
Uit mijn ervaring voorkomt dit veel van de "willekeurige" containerfalen: oude kernels, verkeerd geconfigureerde cgroups, verouderde libraries, die hele rotzooi. Raspberry Pi OS-updates bevatten ook netwerk- en bestandssysteemfixes die veel uitmaken op always-on apparaten.
Na de herstart, bevestig dat u op 64-bit userspace draait:
bashuname -m getconf LONG_BIT
Als uname -m aarch64 toont en LONG_BIT 64 is, bent u klaar. Zo niet, schakel dan over naar Raspberry Pi OS 64-bit voordat u verdergaat. Multi-arch images en geheugengedrag zijn gewoon beter (en u bespaart uzelf later tijd).
bashsudo apt -y install smartmontools lsblk
OpenClaw 24/7 draaien schrijft state en logs. SSD's gaan hier veel beter mee om dan SD-kaarten. Als u een SD moet gebruiken, houd logs klein en roteer ze (doen we later via Docker logging-opties).
bashcurl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER newgrp docker
Het get.docker.com-script installeert een Docker-build die meestal goed werkt met Raspberry Pi OS. Uw gebruiker toevoegen aan de docker-groep betekent dat u niet overal sudo hoeft te gebruiken, wat ook helpt vreemde permissie-verrassingen op bind mounts te voorkomen.
Installeer de Compose plugin en basis tooling:
bashsudo apt -y install docker-compose-plugin git jq docker --version docker compose version
Als docker compose version een versie print, heeft u de moderne Compose plugin (wat u wilt, niet de oude docker-compose Python binary).
Tip
[!TIP] Als Docker-commando's hangen bij eerste gebruik, herstart dan eenmaal. Sommige Pi-setups hebben gewoon een schone herstart nodig na het installeren van kernelmodules en het inschakelen van de Docker-service.
bashmkdir -p ~/openclaw cd ~/openclaw
Niets bijzonders hier. Alles in één map houden maakt upgrades en backups pijnloos. Het doel is een reproduceerbare stack: Compose-bestand, .env, en een persistente data-directory.
Maak docker-compose.yml:
yamlservices: openclaw: image: openclawai/openclaw:latest container_name: openclaw restart: unless-stopped # Standaard alleen LAN-toegang. Verander alleen als u een VPN/tunnel/reverse proxy heeft. ports: - "127.0.0.1:18789:18789" env_file: - .env volumes: - ./data:/var/lib/openclaw - ./logs:/var/log/openclaw # Voorkomt dat containerlogs uw SD/SSD opvreten over tijd logging: driver: "json-file" options: max-size: "10m" max-file: "3" # Helpt op kleine apparaten: voorkomt dat weglopend geheugen de Pi doodt mem_limit: 1500m
Deze Compose-setup doet drie dingen die, naar mijn ervaring, de meest voorkomende Raspberry Pi-falen voorkomen.
18789 binden aan 127.0.0.1 houdt de gateway privé (sla dit niet over). Het blootstellen aan uw WAN is de snelste manier om misbruikt te worden, en de 2026 beveiligingsupdates zijn om een reden gebeurd. De bind mounts ./data en ./logs zorgen dat state container-rebuilds en image-updates overleeft. En logrotatie voorkomt langzame opslagdood door een miljoen kleine schrijfacties.
Warning
[!WARNING]
Verander 127.0.0.1:18789:18789 niet naar 0.0.0.0:18789:18789 tenzij u het achter een VPN, tunnel, of strikte reverse proxy auth zet. Publiek blootgestelde gateways zijn misbruikt in echte deployments, en defaults zijn aangescherpt in v2026.1.x om die reden.
Sommige handleidingen verwijzen naar oudere Clawdbot/MoltBot image-namen. Als de pull faalt, check de officiële Docker deployment doc en update de image:-regel dienovereenkomstig: Docker Deployment Guide - Clawdbot AI. Vergelijk ook met de Compose-aanpak die hier beschreven staat: Running OpenClaw in Docker.

Maak .env:
bashcd ~/openclaw nano .env
Plak en bewerk:
bash## OpenClaw gateway-instellingen OPENCLAW_GATEWAY_PORT=18789 # Genereer een sterke token. Hergebruik geen wachtwoorden. OPENCLAW_GATEWAY_TOKEN=[PLAK_LANGE_WILLEKEURIGE_TOKEN] # Kies één provider (of beide als ondersteund door uw build) OPENAI_API_KEY=[UW_OPENAI_SLEUTEL] ANTHROPIC_API_KEY=[UW_ANTHROPIC_SLEUTEL] # Optioneel: houd de bot voorspelbaar op een klein apparaat OPENCLAW_MAX_CONCURRENCY=2 OPENCLAW_LOG_LEVEL=info
Tokens en API-sleutels horen in .env omdat het secrets uit uw Compose-bestand houdt en upgrades veiliger maakt. Dan wanneer u een backup maakt van docker-compose.yml, kunt u .env weglaten (of in een wachtwoordmanager stoppen).
Genereer een sterke token:
bashopenssl rand -hex 32
Plak die output in OPENCLAW_GATEWAY_TOKEN. Eerlijk gezegd, een lange willekeurige token is belangrijker dan mensen verwachten omdat gateways geraakt worden door geautomatiseerde scanners zelfs op thuisnetwerken (ja, echt).
bashcd ~/openclaw docker compose pull docker compose up -d docker compose ps
pull forceert een schone image-download voor ARM. up -d start het op de achtergrond. ps toont of de container gezond is of vast zit in herstarten.
Check logs onmiddellijk:
bashdocker logs -n 200 openclaw
Als OpenClaw een onboarding wizard vereist, tonen de logs meestal de eerste URL om te openen, pairing codes, of ontbrekende omgevingsvariabelen. Los dat op voordat u verdergaat, omdat "het draait maar doet niets" bijna altijd onboarding- of token-gerelateerd is.
Vanaf de Raspberry Pi zelf:
bashcurl -sS http://127.0.0.1:18789/ | head
Vanaf een andere machine op uw LAN heeft u twee veilige opties.
Optie A: SSH port forward (snelst, geen netwerkwijzigingen):
bashssh -L 18789:127.0.0.1:18789 pi@[RASPBERRY_PI_IP]
Open dan dit lokaal:
bashhttp://127.0.0.1:18789
Optie B: bind alleen aan LAN IP (nog steeds privé, maar bereikbaar op LAN). Verander Compose ports: naar:
yamlports: - "[RASPBERRY_PI_LAN_IP]:18789:18789"
SSH forwarding is meestal het minst foutgevoelig omdat het de service nooit blootstelt aan het hele subnet. LAN bind is prima als het netwerk vertrouwd en gesegmenteerd is (en u weet wat er nog meer op dat netwerk staat).
Note
[!NOTE]
Veel tutorials citeren poort 18789 voor de gateway. Houd het consistent. Poorten randomiseren vervangt geen authenticatie, maar het vermindert wel drive-by lawaai op gedeelde netwerken.

Upgrade flow:
bashcd ~/openclaw docker compose pull docker compose up -d docker image prune -f
Dit pullt het laatste image, maakt de container opnieuw, en verwijdert oude images om schijfruimte te besparen. Omdat state in ./data staat, wissen upgrades uw config of geschiedenis niet.
Voor een omkeerbare upgrade, pin een versietag in plaats van latest:
yamlimage: openclawai/openclaw:2026.1.3
Pinnen is saai, wat precies is waarom het werkt. Op een Raspberry Pi die 24/7 draait, zijn verrassingswijzigingen een topveroorzaker van downtime.
Installeer en schakel een firewall in:
bashsudo apt -y install ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw enable sudo ufw status verbose
Dit blokkeert inbound verkeer behalve SSH. Omdat OpenClaw gebonden is aan localhost in Compose, bent u al in redelijke vorm, maar een firewall helpt nog steeds als iemand later port bindings aanpast (toekomstige-u telt mee).
Voeg Fail2ban toe voor SSH brute-force lawaai:
bashsudo apt -y install fail2ban sudo systemctl enable --now fail2ban sudo fail2ban-client status
Deze twee stappen dekken het meest voorkomende thuis-Pi compromispad: blootgestelde SSH met zwakke credentials. Voor Docker beveiligingshouding en guardrails gelden dezelfde principes als in onze Claude Code 2026 Best Practices: Guardrails & Tests handleiding: beperk eerst toegangspaden, voeg dan automatisering toe.
Begin met een gecureerde lijst zodat u niet blind willekeurige packages installeert:
De praktische beperking op Raspberry Pi is niet "kan het draaien" maar "kan het draaien terwijl het responsief blijft." Skills die webpagina's scrapen, headless browsers draaien, of veel subprocessen spawnen zullen het apparaat uithongeren.
En hier is het ding: een goed patroon is OpenClaw op de Pi houden, maar zware tools offloaden naar een andere machine via SSH of HTTP. Denk aan de Pi als de always-on coördinator, niet de compute node.
Voer deze tests in volgorde uit. Ze vangen de echte falen: slechte mounts, slechte tokens, en kapotte netwerken.
bashdocker compose ps docker inspect -f '{{.State.Status}} {{.State.Restarting}}' openclaw
Als het herstart, check logs en fix config eerst. Restart loops komen meestal van ontbrekende vereiste env vars of een permissie-mismatch op ./data.
bashcd ~/openclaw docker compose down docker compose up -d ls -la ./data
Als ./data gevuld blijft, heeft u echte persistentie. Als het leeg is of onverwacht root-owned, fix permissies. Een veelvoorkomende fix:
bashsudo chown -R $USER:$USER ~/openclaw/data ~/openclaw/logs
bashss -lntp | grep 18789 || true
Als u 0.0.0.0:18789 ziet, heeft u het blootgesteld. Zet het terug naar 127.0.0.1:18789 tenzij u een VPN of strikte reverse proxy auth heeft.
bashdocker exec -it openclaw /bin/sh -lc 'env | egrep "OPENAI_API_KEY|ANTHROPIC_API_KEY|OPENCLAW_" | sed "s/=.*/=REDACTED/"'
Als sleutels ontbreken, wordt het .env-bestand niet geladen of heeft het formatproblemen. De meest voorkomende fout is spaties rond = of het kopiëren van smart quotes uit een notitie-app (ben daar geweest).
bashuname -m docker pull openclawai/openclaw:latest
Als de Pi 32-bit is (armv7l), ondersteunen veel images het niet. Ga naar Raspberry Pi OS 64-bit. Als u al op 64-bit bent maar nog steeds faalt, is het image mogelijk niet multi-arch. Bevestig in de officiële Docker doc: Docker Deployment Guide - Clawdbot AI.
bashdocker logs -n 300 openclaw docker inspect openclaw --format '{{json.State}}' | jq
Exit-on-start is meestal een van deze: ontbrekende gateway token, ontbrekende provider key, of een vereiste directory niet schrijfbaar. Fix .env eerst, verifieer dan ./data permissies.
bashsudo ss -lntp | grep 18789 docker compose down
Een ander proces gebruikt die poort al, of een vorige container draait nog. Stop de oude container. Als u poorten moet wijzigen, wijzig zowel de host port mapping als client URLs.
bashdocker stats --no-stream vcgencmd measure_temp
Wanneer RAM-druk toeslaat, gaat Linux swappen en voelt alles kapot. Verminder concurrency in .env, behoud mem_limit, en verwijder zware skills. Als u browser automation nodig heeft, draai het op een aparte box en roep het aan vanaf de Pi.
Lees de incident-gerichte guidance: OpenClaw Complete Guide 2026. De praktische conclusie is simpel: privé bind standaard, sterke token altijd, en vermijd "no auth" modes als u ze ziet in oude tutorials.
Docker Compose is populair hier omdat het herhaalbare deployments geeft met een kleine operationele oppervlakte. Dat is belangrijk op edge devices waar "fix it live" pijnlijk is (en meestal gebeurt op het slechtste moment).
Hier is hoe de trade-offs vergelijken voor Raspberry Pi deployments:
| Aanpak | Voordelen | Nadelen | Best Voor |
|---|---|---|---|
| Docker Compose (single service) | Reproduceerbaar, makkelijke upgrades, schone persistentie | Vereist Docker kennis, image tags zijn belangrijk | Meeste Pi gebruikers die 24/7 draaien |
| Native install (npm/systemd) | Directe toegang tot host, minder lagen | Dependency drift, moeilijkere rollbacks | Dev boxes en snelle experimenten |
| Compose + reverse proxy (Caddy/Nginx) | Schone HTTPS, betere toegangscontrole | Meer bewegende onderdelen, cert management | Remote toegang met juiste auth |
| Compose + VPN (Tailscale/WireGuard) | Geen publieke blootstelling, simpele remote toegang | Vereist VPN setup op clients | Thuisnetwerken en kleine teams |
Big-company container patronen mappen verrassend goed naar een Pi. Netflix rapporteerde een 50% reductie in deployment-gerelateerde incidenten na het verplaatsen van services naar immutable container images met gestandaardiseerde pipelines (Netflix TechBlog referenties over meerdere posts). Stripe heeft beschreven hoe sterke isolatiegrenzen en herhaalbare deploys "works on my machine" drift in productiesystemen verminderen. Shopify heeft meerdere case studies gepubliceerd die tonen dat consistente build en release artifacts rollback tijd tijdens incidenten verminderen.
Dat zijn big-company voorbeelden, maar dezelfde mechanica geldt op een Raspberry Pi: minder snowflake dependencies, duidelijkere rollback, en state buiten de container gehouden.
Begin hier (uw eerste stap)
Maak ~/openclaw/docker-compose.yml met 127.0.0.1:18789:18789 en een persistente ./data mount.
Quick wins (onmiddellijke impact)
OPENCLAW_GATEWAY_TOKEN in met openssl rand -hex 32, herstart dan met docker compose up -d.ss -lntp | grep 18789 uit en verifieer dat het bindt aan 127.0.0.1.Deep dive (voor degenen die meer willen)
2026.1.3) en documenteer uw upgrade command sequence in een RUNBOOK.md.Een Raspberry Pi kan OpenClaw betrouwbaar draaien, maar alleen als de gateway privé blijft, state op persistente opslag leeft, en upgrades behandeld worden als een herhaalbaar proces. Docker Compose is de simpelste manier om die eigenschappen te krijgen zonder uw Pi in een fragiele snowflake te veranderen.
Zodra de basis stack stabiel is, voeg skills langzaam toe en offload zwaar werk naar andere machines in plaats van alles op de Pi te forceren. Laten we eerlijk zijn: een Pi die alles probeert te doen eindigt met niets goed doen.