Skip to main content
Docker is the recommended way to run Bolly on servers or when you want isolated, reproducible deployments with easy updates.

Prerequisites

Quick start

docker run -d \
  --name bolly \
  -p 26559:26559 \
  -v bolly-data:/data \
  -e BOLLY_HOME=/data \
  --restart always \
  ghcr.io/triangle-int/bolly:latest
Open http://localhost:26559 in your browser. Bolly will guide you through the initial setup — including entering your API key — right in the web interface.

Docker Compose

For a more manageable setup, use Docker Compose:
docker-compose.yml
services:
  bolly:
    image: ghcr.io/triangle-int/bolly:latest
    container_name: bolly
    ports:
      - "26559:26559"
    volumes:
      - bolly-data:/data
    environment:
      - BOLLY_HOME=/data
    restart: always

volumes:
  bolly-data:
Run it:
docker compose up -d

Managing the container

View logs

docker logs bolly -f

Stop Bolly

docker stop bolly

Start Bolly

docker start bolly

Restart after config changes

docker restart bolly

Remove the container (preserves data)

docker rm -f bolly

Updating

Pull the latest image and recreate the container:
docker compose pull
docker compose up -d
Your data is stored in the bolly-data volume and persists across updates. See the full updating guide for version pinning and release channels.

Custom port

To run Bolly on a different port, change the host port mapping:
docker run -d \
  --name bolly \
  -p 3000:26559 \
  -v bolly-data:/data \
  -e BOLLY_HOME=/data \
  --restart always \
  ghcr.io/triangle-int/bolly:latest
Bolly would then be available at http://localhost:3000.

Running behind a reverse proxy

If running Bolly behind Nginx, Caddy, or another reverse proxy, ensure WebSocket support is enabled — Bolly uses WebSockets for real-time communication. Example Nginx config:
server {
    listen 443 ssl;
    server_name bolly.yourdomain.com;

    location / {
        proxy_pass http://localhost:26559;
        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;
    }
}

Next steps

Configuration

Customize personality, heartbeat, and memory settings.

API Keys

Learn about optional integrations beyond the Anthropic key.