OpenClaw veilig deployen op een VPS
Installeer en beveilig OpenClaw op een VPS met gateway-authenticatie, TLS reverse proxy, Docker-sandboxing, firewall-hardening en systemd-isolatie. Elke stap bevat een verificatiecommando.
OpenClaw is een open-source, self-hosted AI-assistent die verbinding maakt met messaging-apps (WhatsApp, Telegram, Discord, Slack, Signal) en AI-modelproviders. Het draait een Gateway-proces op je server, ontvangt berichten, voert agent-acties uit met tools en stuurt antwoorden terug. Alle data blijft op je eigen infrastructuur.
Deze gids beschrijft een security-first deployment op een VPS met Ubuntu 24.04. Je gaat het OS hardenen, OpenClaw installeren, gateway-authenticatie configureren, Nginx met TLS als reverse proxy opzetten, de Docker/UFW firewall-bypass fixen, Docker-sandboxing inschakelen, tool policy vergrendelen en de gateway als geharde systemd-service draaien.
Waarom is OpenClaw-beveiliging belangrijk op een VPS?
OpenClaw draait AI-agents die shell-commando's kunnen uitvoeren, bestanden lezen en het web browsen op je server. Een verkeerd geconfigureerde instance geeft aanvallers diezelfde mogelijkheden. Dit is niet theoretisch.
Begin 2026 vonden onderzoekers meer dan 42.000 OpenClaw-instances die openbaar op het internet stonden. 63% was kwetsbaar voor remote exploitation. CVE-2026-25253 (CVSS 8.8) maakte one-click remote code execution mogelijk via auth-token-exfiltratie door een kwaadaardige link. De aanvaller kon het gateway-token stelen, via WebSocket verbinden, bevestigingsprompts uitschakelen, Docker-sandboxing omzeilen en willekeurige commando's uitvoeren.
De fix is opgenomen in versie 2026.1.29, maar alleen patchen is niet genoeg. Beveiliging vereist lagen: netwerkisolatie, authenticatie, TLS, sandboxing en toolbeperkingen die samenwerken. Een enkele ontbrekende laag (bijvoorbeeld gateway-auth zonder firewall) laat een direct pad naar compromittering open.
Wat heb je nodig voordat je begint?
| Vereiste | Details |
|---|---|
| VPS | Ubuntu 24.04, 4+ vCPU, minimaal 8 GB RAM |
| Domeinnaam | A-record dat naar je VPS-IP wijst (bijv. openclaw.example.com) |
| SSH-toegang | Key-based authenticatie geconfigureerd |
| AI-provider API-key | Anthropic, OpenAI of Google Gemini |
| Node.js | Versie 22 of nieuwer |
| Docker | Engine 20+ met Compose-plugin |
Als je hulp nodig hebt bij het inrichten van een VPS of het instellen van SSH-keys, zie Secure a Linux VPS.
Hoe harden je de VPS voordat je OpenClaw installeert?
Voordat je iets installeert, beveilig je het OS. Als je Secure a Linux VPS en SSH Security Configuration al hebt gevolgd, ga dan door naar het volgende deel.
Maak een dedicated gebruiker aan
Services als root draaien is onnodig risico. Maak een openclaw systeemgebruiker aan:
sudo useradd -r -m -s /bin/bash openclaw
Dit maakt een systeemaccount met een homedirectory. OpenClaw slaat zijn configuratie op in ~/.openclaw, dus de homedirectory is vereist.
Configureer UFW
Installeer en activeer de firewall voordat je services blootstelt:
sudo apt update && sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable
Controleer de regels:
sudo ufw status verbose
Je zou de drie toegestane poorten en een standaard deny-beleid voor inkomend verkeer moeten zien. Poort 18789 (de OpenClaw gateway) ontbreekt bewust. De gateway bindt alleen aan localhost en zit achter Nginx.
Installeer fail2ban
sudo apt update && sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
Controleer of het draait:
sudo systemctl status fail2ban
De output zou active (running) moeten tonen. fail2ban bewaakt SSH-logs en blokkeert IP's na herhaalde mislukte inlogpogingen.
Hoe installeer je OpenClaw op Ubuntu?
OpenClaw ondersteunt twee installatiemethoden: npm (direct) en Docker. Beide worden hieronder behandeld. Kies er een. Docker wordt aanbevolen voor VPS-deployments omdat container-isolatie de blast radius beperkt als het agent-proces wordt gecompromitteerd.
Optie A: Docker-installatie (aanbevolen)
Installeer Docker als het nog niet aanwezig is:
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Voeg de openclaw-gebruiker toe aan de docker-groep:
sudo usermod -aG docker openclaw
Let op: lidmaatschap van de docker-groep geeft het equivalent van root-toegang op de host. Dit is vereist voor OpenClaw's Docker-functionaliteit, maar het betekent dat de openclaw-gebruiker alle containers op het systeem kan beheren. De systemd-hardening en sandbox-isolatie hieronder beperken wat het OpenClaw-proces daadwerkelijk kan doen.
Wissel naar de openclaw-gebruiker en stel OpenClaw in:
sudo -u openclaw -i
Kloon de repository en voer setup uit met de officieel voorgebouwde image:
git clone https://github.com/openclaw/openclaw.git ~/openclaw-src
cd ~/openclaw-src
OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest ./docker-setup.sh
Het instellen van OPENCLAW_IMAGE zorgt ervoor dat het script de voorgebouwde image van GitHub Container Registry pullt in plaats van vanuit broncode te bouwen. Het script voert onboarding uit en start de gateway via Docker Compose.
De gateway in de container bindt standaard aan alle interfaces (lan-modus). Dit is correct voor Docker-deployments omdat Docker's port mapping de gateway in de container moet kunnen bereiken. Externe toegang wordt geblokkeerd op hostniveau met DOCKER-USER iptables-regels (hieronder behandeld).
Controleer of de gateway draait:
curl -fsS http://127.0.0.1:18789/healthz
Een 200 OK-response bevestigt dat de gateway live is. Het /readyz-endpoint bevestigt dat hij gereed is om verbindingen te accepteren:
curl -fsS http://127.0.0.1:18789/readyz
Optie B: npm-installatie
Installeer Node.js 22 via NodeSource:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
Controleer de versie:
node --version
De output zou v22.x.x of nieuwer moeten tonen.
Wissel naar de openclaw-gebruiker en installeer:
sudo -u openclaw -i
npm install -g openclaw@latest
Voer onboarding uit:
openclaw onboard
Selecteer loopback voor de bind-modus. De onboarding-wizard genereert een gateway-auth-token en slaat het op in ~/.openclaw/openclaw.json.
Start de gateway:
openclaw gateway start
Controleer:
curl -fsS http://127.0.0.1:18789/healthz
Controleer de gateway-binding
Bekijk waarop de gateway luistert:
ss -tulpn | grep 18789
Voor npm-installaties: De output zou 127.0.0.1:18789 moeten tonen, niet 0.0.0.0:18789. Als je 0.0.0.0 ziet, stop de gateway en stel gateway.bind in op "loopback" in openclaw.json.
Voor Docker-installaties: Je ziet 0.0.0.0:18789 van het docker-proxy-proces. Dit is verwacht. Docker's port mapping publiceert de poort op alle host-interfaces zodat localhost-verkeer de container kan bereiken. De DOCKER-USER iptables-regels (behandeld in het firewall-gedeelte hieronder) blokkeren externe toegang op netwerkniveau.
Vergrendel bestandsrechten
Het configuratiebestand bevat je auth-token en API-keys:
chmod 700 /home/openclaw/.openclaw
chmod 600 /home/openclaw/.openclaw/openclaw.json
Controleer:
ls -la /home/openclaw/.openclaw/openclaw.json
Je zou -rw------- moeten zien. Voor npm-installaties is de eigenaar openclaw. Voor Docker-installaties kan de eigenaar uid 1000 tonen (de node-gebruiker in de container). Dit is normaal en vereist zodat de container de config kan lezen.
Hoe configureer je gateway-authenticatie?
OpenClaw's gateway vereist standaard authenticatie. Als er geen token of wachtwoord is geconfigureerd, weigert de gateway WebSocket-verbindingen (fail-closed). De onboarding-wizard genereert automatisch een token.
OpenClaw ondersteunt drie auth-modi:
| Modus | Hoe het werkt | Geschikt voor |
|---|---|---|
token |
Gedeeld bearer-token in elk verzoek | Enkele gebruiker op VPS (aanbevolen) |
password |
Wachtwoord-gebaseerde authenticatie | Multi-device setups |
trusted-proxy |
Delegeert auth aan een reverse proxy | Enterprise/SSO-setups |
Stel een sterk token in
Als je het automatisch gegenereerde token wilt vervangen, genereer een nieuw token:
openssl rand -base64 32
Sla het op als een omgevingsvariabele in plaats van het hard te coderen in het configuratiebestand. Maak een omgevingsbestand aan:
sudo mkdir -p /etc/openclaw
sudo tee /etc/openclaw/env > /dev/null << 'EOF'
OPENCLAW_GATEWAY_TOKEN=your-generated-token-here
EOF
sudo chmod 600 /etc/openclaw/env
sudo chown openclaw:openclaw /etc/openclaw/env
Bewerk ~/.openclaw/openclaw.json om naar de omgevingsvariabele te verwijzen:
{
gateway: {
bind: "loopback", // use "loopback" for npm, keep default for Docker
port: 18789,
auth: {
mode: "token",
token: "${OPENCLAW_GATEWAY_TOKEN}"
}
}
}
OpenClaw ondersteunt ${VARIABLE}-substitutie in zijn JSON5-config, dus het token wordt bij het opstarten uit de omgeving gelezen. Voor Docker-installaties stel je de OPENCLAW_GATEWAY_TOKEN-variabele in het .env-bestand in je openclaw-src-directory in. Het docker-setup.sh-script genereert dit bestand automatisch.
Herstart de gateway en test dat niet-geauthenticeerde verzoeken worden geweigerd:
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:18789/healthz
Het health-endpoint retourneert 200 zonder auth (het is een health check). Om auth-handhaving op het WebSocket-endpoint te testen, controleer de gateway-logs:
Voor systemd/npm-installaties:
journalctl -u openclaw-gateway --no-pager -n 20
Voor Docker-installaties:
cd ~/openclaw-src && docker compose logs openclaw-gateway --tail 20
Zoek naar auth required of connection rejected entries die het fail-closed gedrag bevestigen.
Hoe stel je Nginx in als TLS reverse proxy voor OpenClaw?
De gateway bindt aan localhost. Nginx zit ervoor, termineert TLS en proxyt WebSocket-verbindingen naar de gateway. Dit geeft je versleutelde verbindingen zonder de gateway-poort bloot te stellen.
Voor achtergrondinformatie over Nginx reverse proxies, zie Nginx Reverse Proxy. Voor TLS-setup met Let's Encrypt, zie Nginx SSL/TLS with Let's Encrypt.
Installeer Nginx en Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
Verkrijg een TLS-certificaat
sudo certbot --nginx -d openclaw.example.com
Vervang openclaw.example.com door je daadwerkelijke domein. Certbot configureert automatische verlenging.
Configureer de reverse proxy
Maak het Nginx server block aan:
sudo tee /etc/nginx/sites-available/openclaw.conf > /dev/null << 'NGINX'
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name openclaw.example.com;
ssl_certificate /etc/letsencrypt/live/openclaw.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/openclaw.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# Hide Nginx version
server_tokens off;
# WebSocket proxy to OpenClaw gateway
location / {
proxy_pass http://127.0.0.1:18789;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Overwrite X-Forwarded-For, do not append
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
# Timeouts for long-running agent sessions
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
server {
listen 80;
listen [::]:80;
server_name openclaw.example.com;
return 301 https://$host$request_uri;
}
NGINX
Goed opletten: proxy_set_header X-Forwarded-For $remote_addr gebruikt $remote_addr (overschrijven), niet $proxy_add_x_forwarded_for (toevoegen). Dit is opzettelijk. Toevoegen laat clients nep-IP's in de header injecteren. De OpenClaw-documentatie beveelt overschrijven specifiek aan.
Activeer de site en test de configuratie:
sudo ln -s /etc/nginx/sites-available/openclaw.conf /etc/nginx/sites-enabled/
sudo nginx -t
De output zou syntax is ok en test is successful moeten tonen. Herlaad Nginx:
sudo systemctl reload nginx
Configureer OpenClaw om de proxy te vertrouwen
Vertel de gateway om de doorgestuurde headers van Nginx te vertrouwen door trustedProxies toe te voegen aan ~/.openclaw/openclaw.json:
{
gateway: {
bind: "loopback", // use "loopback" for npm, keep default for Docker
port: 18789,
trustedProxies: ["127.0.0.1"],
auth: {
mode: "token",
token: "${OPENCLAW_GATEWAY_TOKEN}"
}
}
}
Herstart de gateway om toe te passen. Controleer of TLS werkt vanaf je lokale machine (niet de server):
curl -I https://openclaw.example.com/healthz
Je zou een 200-response over HTTPS moeten krijgen. Voor meer Nginx security-hardening, zie de Nginx security hardening-gids (binnenkort beschikbaar).
Hoe fix je de Docker en UFW firewall-bypass?
Docker manipuleert iptables rechtstreeks en omzeilt daarmee UFW volledig. Als je OpenClaw met Docker draait en een poort publiceert, is die poort toegankelijk vanaf het internet, ook als UFW hem blokkeert. Dit is een van de meest voorkomende misconfiguraties bij Docker-deployments.
Voor een volledige uitleg van dit probleem, zie Docker UFW Firewall Fix.
De fix gebruikt de DOCKER-USER chain, die Docker verwerkt voordat verkeer naar containers wordt doorgestuurd.
Blokkeer alle externe toegang tot Docker-poorten
sudo iptables -I DOCKER-USER -i eth0 -j DROP
Dit dropt al het verkeer van de externe interface (eth0) dat Docker anders naar containers zou doorsturen. Pas de interfacenaam aan als die van jou verschilt (controleer met ip link show).
Sta loopback-verkeer toe
Nginx op dezelfde host moet de gateway-container op localhost kunnen bereiken:
sudo iptables -I DOCKER-USER -i lo -j ACCEPT
Sta bestaande verbindingen toe
sudo iptables -I DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Maak regels persistent
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
Controleer de regels
sudo iptables -L DOCKER-USER -n -v
Je zou de ACCEPT-regels voor loopback en bestaande verbindingen boven de DROP-regel voor eth0 moeten zien. Volgorde is belangrijk: iptables verwerkt regels van boven naar beneden.
Test vanaf een externe machine dat de gateway-poort niet bereikbaar is:
nmap -p 18789 your-server-ip
Poort 18789 zou filtered of closed moeten tonen, niet open.
Hoe schakel je Docker-sandboxing in voor OpenClaw?
Docker-sandboxing voert agent tool-uitvoeringen uit in geisoleerde containers. Wanneer een agent een shell-commando uitvoert of een bestand schrijft, gebeurt dat in een wegwerpcontainer, niet op je host.
Voeg de sandbox-configuratie toe aan ~/.openclaw/openclaw.json:
{
agents: {
defaults: {
sandbox: {
mode: "all",
scope: "session",
workspaceAccess: "none",
docker: {
image: "openclaw-sandbox:bookworm-slim",
network: "none",
user: "1000:1000",
memory: "1g",
cpus: 1
}
}
}
}
}
Wat elke instelling doet:
| Instelling | Waarde | Effect |
|---|---|---|
mode |
"all" |
Elke sessie draait in sandbox, geen uitzonderingen |
scope |
"session" |
Elke chatsessie krijgt zijn eigen container |
workspaceAccess |
"none" |
Sandbox kan de agent-workspace niet zien |
network |
"none" |
Geen netwerktoegang vanuit sandbox (voorkomt exfiltratie) |
memory |
"1g" |
Beperkt container-RAM tot 1 GB |
cpus |
1 |
Beperkt container tot 1 CPU-core |
Bouw de sandbox-image:
cd ~/openclaw-src
scripts/sandbox-setup.sh
Controleer de sandbox-configuratie:
openclaw sandbox explain
Voor Docker-installaties, voer uit via compose:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js sandbox explain
Dit commando toont de effectieve sandbox-modus, scope, workspace-toegang, tool policy en eventuele overrides. Bevestig dat mode: all en network: none in de output verschijnen.
Als je netwerktoegang nodig hebt voor specifieke tools (bijv. web_search), ken het dan selectief per agent toe in plaats van de globale standaard te wijzigen. Zie het tool policy-gedeelte hieronder.
OpenClaw blokkeert standaard gevaarlijke bind mount-bronnen: /var/run/docker.sock, /etc, /proc, /sys en /dev worden allemaal geweigerd. Overschrijf dit niet met aangepaste bind mounts die ze opnieuw blootstellen. Als een sandbox-container toegang nodig heeft tot hostdata, gebruik dan read-only mounts met expliciete paden:
{
agents: {
defaults: {
sandbox: {
docker: {
binds: ["/home/openclaw/shared-data:/data:ro"]
}
}
}
}
}
Het :ro-suffix zorgt ervoor dat de container de data kan lezen maar niet wijzigen.
Hoe vergrendel je OpenClaw tool policy?
Tool policy bepaalt welke tools agents mogen gebruiken. De sandbox heeft zijn eigen tool-filter, los van agent-level permissies. Deny wint altijd van allow.
Standaard deny-beleid
Stel een restrictieve standaard in via ~/.openclaw/openclaw.json:
{
tools: {
deny: ["exec", "write", "edit", "browser"],
allow: ["read", "web_search"]
}
}
Dit blokkeert standaard commando-uitvoering, bestandsschrijving, bestandsbewerking en browsertoegang. Agents kunnen nog steeds bestanden lezen en het web doorzoeken.
Per-agent profielen
Overschrijf standaarden voor specifieke agents die meer toegang nodig hebben. Voeg profielen toe onder agents.list:
{
agents: {
list: [
{
name: "coding-agent",
tools: {
allow: ["exec", "read", "write", "edit"],
deny: ["browser"]
},
sandbox: {
mode: "all",
docker: {
network: "none"
}
}
},
{
name: "messaging-agent",
tools: {
allow: ["read", "web_search"],
deny: ["exec", "write", "edit", "browser"]
}
}
]
}
}
De coding-agent kan commando's uitvoeren, maar alleen in een sandbox-container zonder netwerk. De messaging-agent kan lezen en zoeken, maar kan niets uitvoeren.
Schakel elevated mode uit
Elevated mode laat agents commando's rechtstreeks op de gateway-host uitvoeren, waarmee de sandbox wordt omzeild. Schakel het uit:
{
tools: {
elevated: {
enabled: false
}
}
}
Als je elevated mode ingeschakeld laat, kan elke gebruiker die met de agent kan chatten mogelijk host-commando's uitvoeren. Op een VPS is dit remote code execution.
Multi-user DM-isolatie
Als meerdere mensen je OpenClaw-instance berichten sturen, schakel dan per-peer DM-scoping in. Standaard delen alle DM's een enkele hoofdsessie. Dit betekent dat Gebruiker A context uit het gesprek van Gebruiker B kan zien.
{
session: {
dmScope: "per-peer"
}
}
Dit geeft elke afzender zijn eigen sessie met geisoleerde context en sandbox-container.
Hoe draai je OpenClaw als geharde systemd-service?
OpenClaw onder systemd draaien betekent dat het start bij boot, herstart bij een crash en procesisolatie krijgt via hardening-directieven.
Maak de service-unit aan
Voor Docker-installaties, maak het volgende unit-bestand:
sudo tee /etc/systemd/system/openclaw-gateway.service > /dev/null << 'EOF'
[Unit]
Description=OpenClaw Gateway
After=network-online.target docker.service
Wants=network-online.target
Requires=docker.service
[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw/openclaw-src
EnvironmentFile=/etc/openclaw/env
ExecStart=/usr/bin/docker compose up --no-log-prefix openclaw-gateway
ExecStop=/usr/bin/docker compose down
Restart=always
RestartSec=10
# Security hardening
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/.openclaw
CapabilityBoundingSet=
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
RestrictSUIDSGID=yes
MemoryMax=4G
[Install]
WantedBy=multi-user.target
EOF
Voor npm-installaties, vervang de ExecStart- en ExecStop-regels:
ExecStart=/usr/bin/openclaw gateway start --foreground
ExecStop=/usr/bin/openclaw gateway stop
En verwijder de Requires=docker.service-regel.
Wat elke hardening-directief doet:
| Directief | Bescherming |
|---|---|
NoNewPrivileges |
Voorkomt dat het proces extra rechten verkrijgt via setuid/setgid |
PrivateTmp |
Geeft de service zijn eigen /tmp, onzichtbaar voor andere processen |
ProtectSystem=strict |
Mount het volledige bestandssysteem als read-only behalve expliciete ReadWritePaths |
ProtectHome=read-only |
Voorkomt schrijven naar elke homedirectory behalve het toegestane pad |
CapabilityBoundingSet= |
Dropt alle Linux capabilities (lege set) |
ProtectKernelTunables |
Blokkeert schrijven naar /proc/sys, /sys |
ProtectKernelModules |
Voorkomt het laden van kernelmodules |
MemoryMax=4G |
Stopt de service als het meer dan 4 GB RAM verbruikt, voorkomt OOM op de host |
Activeer en start
sudo systemctl daemon-reload
sudo systemctl enable --now openclaw-gateway
enable zorgt dat het start bij boot. --now start het direct.
Controleer of het draait:
sudo systemctl status openclaw-gateway
De output zou active (running) moeten tonen. Controleer de logs op fouten:
journalctl -u openclaw-gateway -f --no-pager -n 50
Hoe verifieer je dat de volledige deployment veilig is?
Doorloop deze checklist na deployment om te bevestigen dat elke laag werkt.
1. Voer OpenClaw's ingebouwde security-audit uit
Voor npm-installaties:
sudo -u openclaw openclaw security audit --deep
Voor Docker-installaties:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js security audit --deep
Dit markeert veelvoorkomende misconfiguraties: niet-geauthenticeerde netwerkblootstelling, verhoogde tool-permissies, problemen met bestandsrechten. Los alle waarschuwingen op voordat je verdergaat.
2. Bevestig gateway-binding
ss -tulpn | grep 18789
npm-installaties: Verwacht 127.0.0.1:18789. Niet 0.0.0.0:18789.
Docker-installaties: Verwacht 0.0.0.0:18789 van docker-proxy. Dit is normaal. Externe toegang wordt geblokkeerd door de DOCKER-USER iptables-regels.
3. Externe poortscan
Vanaf je lokale machine (niet de server):
nmap -p 18789 your-server-ip
Verwacht: filtered of closed.
4. Controleer TLS
curl -I https://openclaw.example.com/healthz
Verwacht: 200 over HTTPS met een geldig certificaat.
5. Test auth-handhaving
curl -s -o /dev/null -w "%{http_code}" https://openclaw.example.com/
De gateway zou authenticatie moeten vereisen voor niet-health endpoints.
6. Controleer sandbox-isolatie
Voor npm-installaties:
sudo -u openclaw openclaw sandbox explain
Voor Docker-installaties:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js sandbox explain
Bevestig mode: all, network: none en geen elevated overrides.
7. Controleer bestandsrechten
ls -la /home/openclaw/.openclaw/openclaw.json
ls -la /etc/openclaw/env
Beide zouden 600-permissies moeten tonen. Het env-bestand is eigendom van openclaw. Voor Docker-installaties kan openclaw.json eigendom zijn van uid 1000 (de node-gebruiker van de container).
8. Controleer systemd-hardening
systemd-analyze security openclaw-gateway
Dit beoordeelt de beveiligingseigenschappen van de service. Streef naar een score rond 5.0 of lager (lager is veiliger). Docker-gebaseerde services scoren doorgaans rond 5.0-5.5 omdat Docker toegang tot namespaces en device-interfaces vereist. De hardening-directieven hierboven brengen de score van de standaard ~9.6 naar ongeveer 5.2.
9. Controleer UFW en DOCKER-USER regels
sudo ufw status
sudo iptables -L DOCKER-USER -n -v
UFW zou alleen poorten 22, 80 en 443 moeten tonen. De DOCKER-USER chain zou extern verkeer moeten droppen.
10. Controleer op blootgestelde services
ss -tulpn
Alleen SSH (22), Nginx (80, 443) en OpenClaw (127.0.0.1:18789 voor npm, of 0.0.0.0:18789 via docker-proxy voor Docker) zouden zichtbaar moeten zijn.
Hoe houd je OpenClaw bijgewerkt en geback-upt?
Versie verbergen
Verberg de OpenClaw-versie in gateway-responses. Versie-onthulling helpt aanvallers bekende kwetsbaarheden te targeten. In ~/.openclaw/openclaw.json:
{
gateway: {
exposeVersion: false
}
}
Gecombineerd met de server_tokens off;-directief die al in de Nginx-config staat, voorkomt dit fingerprinting van zowel de reverse proxy als de applicatie.
Updates
OpenClaw brengt regelmatig releases uit. Controleer de huidige versie:
openclaw --version
Voor Docker-installaties:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js --version
Om een Docker-installatie bij te werken:
cd ~/openclaw-src
git pull
docker compose pull
docker compose up -d openclaw-gateway
Om een npm-installatie bij te werken:
npm update -g openclaw
Na het updaten, herstart de gateway en voer de security-audit opnieuw uit:
sudo systemctl restart openclaw-gateway
Voor npm:
sudo -u openclaw openclaw security audit
Voor Docker:
cd ~/openclaw-src && docker compose exec openclaw-gateway node dist/index.js security audit
Lees de release notes voordat je upgradet. Breaking changes in configuratieformaat komen voor. Versie 2026.3.7 introduceerde een verplicht gateway.auth.mode-veld wanneer zowel token als password aanwezig zijn. Als het ontbreekt na de upgrade, word je buitengesloten van de gateway.
Back-ups
Maak een back-up van de configuratiedirectory:
sudo tar czf /root/openclaw-backup-$(date +%Y%m%d).tar.gz /home/openclaw/.openclaw
Sla back-ups op buiten de server. De config-directory bevat je auth-tokens, agent-configuraties en gespreksstatus. Bescherm back-ups met dezelfde zorg als de live config: versleutel ze met gpg of sla ze op in een versleuteld volume.
Logbeheer
Bekijk logs in real time:
journalctl -u openclaw-gateway -f
OpenClaw-logs kunnen gespreksfragmenten bevatten. Stel logretentie in om blootstelling te beperken:
sudo tee /etc/systemd/journald.conf.d/openclaw.conf > /dev/null << 'EOF'
[Journal]
MaxRetentionSec=7d
MaxFileSec=1d
EOF
sudo systemctl restart systemd-journald
Iets ging mis?
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| Gateway weigert te starten | Poort 18789 al in gebruik | ss -tulpn | grep 18789 om het conflicterende proces te vinden |
| WebSocket-verbindingen falen via Nginx | Ontbrekende Upgrade- en Connection-headers |
Controleer de proxy_set_header-directieven in je Nginx-config |
| Sandbox-containers starten niet | Docker socket-permissies | Zorg dat de openclaw-gebruiker in de docker-groep zit en log opnieuw in |
openclaw security audit toont waarschuwingen |
Config drift na update | Bekijk de audit-output en pas aanbevolen fixes toe |
| Gateway bereikbaar vanaf extern IP | Docker/UFW bypass | Voeg DOCKER-USER iptables-regels toe zoals hierboven beschreven |
| TLS-certificaatfouten | Certbot-verlenging mislukt | Voer sudo certbot renew --dry-run uit om te diagnosticeren |
| OOM kills op de VPS | Ontbrekende MemoryMax in systemd-unit |
Voeg MemoryMax=4G toe aan de [Service]-sectie |
Copyright 2026 Virtua.Cloud. Alle rechten voorbehouden. Deze inhoud is een origineel werk van het Virtua.Cloud-team. Reproductie, herpublicatie of herdistributie zonder schriftelijke toestemming is verboden.
Klaar om het zelf te proberen?
Deploy uw eigen server in seconden. Linux, Windows of FreeBSD.
Bekijk VPS-aanbod