Clawdbot Docker Setup Guide
Deploy Clawdbot using Docker containers for maximum portability and isolation. Complete guide for Docker and Docker Compose installation.
This comprehensive guide covers clawdbot docker setup for developers who prefer containerized deployments. Docker provides consistent environments across different platforms, making your clawdbot installation portable and reproducible.
Why Choose Docker for Clawdbot?
Clawdbot docker deployment offers several advantages:
- Portability: Run clawdbot docker containers on any system with Docker support
- Isolation: Keep Clawdbot separate from your host system
- Reproducibility: Consistent environment across development and production
- Easy Updates: Simple container replacement for upgrades
- Scalability: Easy to scale with Docker Compose or Kubernetes
Prerequisites for Clawdbot Docker Setup
Before starting your clawdbot docker installation, ensure you have:
Docker Installation
Install Docker on your system:
macOS:
# Install Docker Desktop
brew install --cask docker
Ubuntu/Debian:
# Install Docker Engine
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
Windows: Download and install Docker Desktop for Windows.
Verify Docker Installation
docker --version
docker compose version
Quick Clawdbot Docker Setup
For a fast clawdbot docker deployment, follow these steps:
Step 1: Clone the Repository
git clone https://github.com/clawdbot/clawdbot.git
cd clawdbot
Step 2: Configure Environment
cp .env.example .env
nano .env
Add your configuration:
ANTHROPIC_API_KEY=your_api_key_here
NODE_ENV=production
PORT=3000
Step 3: Build and Run
# Build the Docker image
docker build -t clawdbot .
# Run the container
docker run -d \
--name clawdbot \
-p 3000:3000 \
--env-file .env \
--restart unless-stopped \
clawdbot
Your clawdbot docker container is now running at http://localhost:3000.
Docker Compose for Clawdbot Setup
For more complex clawdbot docker deployments, use Docker Compose:
Create docker-compose.yml
version: '3.8'
services:
clawdbot:
build: .
container_name: clawdbot
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- PORT=3000
env_file:
- .env
restart: unless-stopped
volumes:
- clawdbot_data:/app/data
- clawdbot_logs:/app/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
clawdbot_data:
clawdbot_logs:
Start with Docker Compose
# Start in detached mode
docker compose up -d
# View logs
docker compose logs -f
# Stop containers
docker compose down
Dockerfile Configuration
If you need to customize your clawdbot docker build, here's a sample Dockerfile:
FROM node:20-alpine AS builder
WORKDIR /app
# Install dependencies
COPY package*.json ./
RUN npm ci --only=production
# Copy source code
COPY . .
# Build application
RUN npm run build
# Production stage
FROM node:20-alpine AS runner
WORKDIR /app
# Create non-root user
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 clawdbot
# Copy built application
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
USER clawdbot
EXPOSE 3000
CMD ["node", "dist/index.js"]
Managing Your Clawdbot Docker Container
View Running Containers
docker ps
View Logs
# Follow logs
docker logs -f clawdbot
# Last 100 lines
docker logs --tail 100 clawdbot
Restart Container
docker restart clawdbot
Stop and Remove
docker stop clawdbot
docker rm clawdbot
Update Clawdbot Docker Image
# Pull latest code
git pull origin main
# Rebuild image
docker build -t clawdbot .
# Stop old container
docker stop clawdbot
docker rm clawdbot
# Start new container
docker run -d \
--name clawdbot \
-p 3000:3000 \
--env-file .env \
--restart unless-stopped \
clawdbot
Clawdbot Docker with Nginx Reverse Proxy
For production clawdbot docker setups, use Nginx as a reverse proxy:
docker-compose.yml with Nginx
version: '3.8'
services:
clawdbot:
build: .
container_name: clawdbot
expose:
- "3000"
env_file:
- .env
restart: unless-stopped
networks:
- clawdbot-network
nginx:
image: nginx:alpine
container_name: clawdbot-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
depends_on:
- clawdbot
restart: unless-stopped
networks:
- clawdbot-network
networks:
clawdbot-network:
driver: bridge
nginx.conf
events {
worker_connections 1024;
}
http {
upstream clawdbot {
server clawdbot:3000;
}
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://clawdbot;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
}
}
Resource Limits for Clawdbot Docker
Control resource usage in your clawdbot docker deployment:
services:
clawdbot:
build: .
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2G
Or with docker run:
docker run -d \
--name clawdbot \
--cpus="2" \
--memory="4g" \
-p 3000:3000 \
--env-file .env \
clawdbot
Troubleshooting Clawdbot Docker Issues
Container Won't Start
# Check logs
docker logs clawdbot
# Check container status
docker inspect clawdbot
Port Already in Use
# Find process using port
lsof -i :3000
# Use different port
docker run -d -p 3001:3000 --name clawdbot clawdbot
Permission Issues
# Fix volume permissions
sudo chown -R 1001:1001 ./data
Out of Memory
Increase Docker memory limits in Docker Desktop settings, or add resource limits to your container.
Clawdbot Docker Security Best Practices
Secure your clawdbot docker deployment:
- Use non-root user: Run containers as non-root (shown in Dockerfile above)
- Limit resources: Prevent resource exhaustion attacks
- Use secrets: Store API keys in Docker secrets, not environment variables
- Network isolation: Use custom networks to isolate containers
- Regular updates: Keep base images updated
Using Docker Secrets
services:
clawdbot:
build: .
secrets:
- anthropic_api_key
environment:
- ANTHROPIC_API_KEY_FILE=/run/secrets/anthropic_api_key
secrets:
anthropic_api_key:
file: ./secrets/anthropic_api_key.txt
Next Steps
Now that your clawdbot docker setup is complete:
- Review Security Best Practices
- Compare with VPS Deployment options
- Check Hardware Requirements for scaling
Having trouble with your clawdbot docker setup? Our $100 deployment service includes Docker configuration and optimization.