Deployment
Run ClawPilot on a VPS, a Raspberry Pi 4, or your local machine. Docker-first, single command to start.
Requirements
Minimum (Raspberry Pi 4)
4GB RAM, 32GB SD card, Docker + Docker Compose. OpenClaw only (no cloud API costs).
Recommended (VPS)
2 vCPU, 4GB RAM, 20GB SSD. Ubuntu 22.04+. Full stack with all cloud adapters.
Quick Start
1. Clone the repository
git clone https://github.com/ldom1/dombot-labos cd dombot-labos
2. Configure environment
cp .env.example .env nano .env # or your preferred editor
Required variables:
# Required CLAUDE_API_KEY=sk-ant-... # Optional — enables additional agent adapters MISTRAL_API_KEY=... GEMINI_API_KEY=... # Optional — Authelia auth (recommended for VPS) AUTHELIA_JWT_SECRET=change-me-in-production AUTHELIA_SESSION_SECRET=change-me-in-production # Optional — custom ports HUB_PORT=8088 KANBAN_PORT=8089
3. Start the stack
docker-compose up -d
Services start in order. The Hub is available at
http://localhost:8088 within ~15 seconds.
4. Verify
docker-compose ps # all services should be Up
curl localhost:8088/health # {"ok": true, "agents": 1}
Services
| Service | Port | Description |
|---|---|---|
| hub | 8088 | Dashboard + SSE stream + quick actions |
| kanban | 8089 | Task CRUD API + dependency enforcement |
| logger | 8090 | Append-only audit log + query API |
| openclaw | 8091 | Local AI agent (free, no API key needed) |
| nginx | 80/443 | Reverse proxy + static assets |
| authelia | 9091 | SSO auth (optional but recommended) |
Nginx Configuration
ClawPilot ships with a ready-to-use Nginx config. It routes by subdirectory:
server {
listen 80;
server_name lab.yourdomain.com;
# Hub dashboard
location / {
proxy_pass http://hub:8088;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# Kanban API
location /api/tasks {
proxy_pass http://kanban:8089;
}
# Logs API + SSE
location /api/logs {
proxy_pass http://logger:8090;
proxy_set_header X-Accel-Buffering no; # required for SSE
}
# Static assets
location /assets/ {
root /var/www/public;
expires 1y;
add_header Cache-Control "public, immutable";
}
}
TLS with Let's Encrypt
docker-compose -f docker-compose.yml -f docker-compose.tls.yml up -d
The TLS compose override runs Certbot automatically. Set
DOMAIN=lab.yourdomain.com and
EMAIL=you@example.com in your .env.
Authelia (SSO)
Authelia protects all services behind a single login portal. Useful when exposing ClawPilot on a public VPS.
# In .env ENABLE_AUTHELIA=true AUTHELIA_DOMAIN=auth.yourdomain.com # Default admin user (change immediately) AUTHELIA_ADMIN_USER=admin AUTHELIA_ADMIN_PASSWORD=changeme
After starting, visit https://auth.yourdomain.com to
complete setup.
Updates
git pull docker-compose pull docker-compose up -d
Zero-downtime updates: services are replaced one at a time. Existing log entries and task state are preserved in Docker volumes.
Backup
# Backup all persistent data docker run --rm \ -v dombot-labos_data:/data \ -v $(pwd)/backups:/backup \ alpine tar czf /backup/labos-$(date +%Y%m%d).tar.gz /data