Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# ScallopBot with Docker Compose.
#
#   cp .env.example .env    # add at least one provider API key
#   docker compose up -d --build
#   open http://localhost:3000   # first visit creates the dashboard login
#
# All state (SQLite memory, sessions, workspace, installed skills) lives in the
# `scallopbot-data` volume mounted at /data; `docker compose down` keeps it,
# `docker compose down -v` deletes it.

services:
  scallopbot:
    build: .
    image: scallopbot:latest
    container_name: scallopbot
    restart: unless-stopped
    init: true
    env_file: .env
    environment:
      # These win over .env so a copied .env.example cannot point the bot
      # outside the persistent volume or bind the UI to the container's loopback.
      AGENT_WORKSPACE: /data/workspace
      WEB_UI_HOST: 0.0.0.0
      WEB_UI_PORT: "3000"
      # Uncomment with the ollama service below for local embeddings/models.
      # OLLAMA_BASE_URL: http://ollama:11434
    ports:
      # Loopback only: the first browser visit claims the dashboard account.
      # Put a reverse proxy / Tailscale in front before exposing it wider.
      - "127.0.0.1:3000:3000"
    volumes:
      - scallopbot-data:/data
    healthcheck:
      test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3000/').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
      interval: 30s
      timeout: 5s
      start_period: 40s
      retries: 3
    # depends_on:
    #   - ollama

  # Optional: local Ollama for embeddings (nomic-embed-text) and local models.
  # After `docker compose up -d`, pull the embedding model once:
  #   docker compose exec ollama ollama pull nomic-embed-text
  # ollama:
  #   image: ollama/ollama:latest
  #   container_name: scallopbot-ollama
  #   restart: unless-stopped
  #   volumes:
  #     - ollama-data:/root/.ollama

volumes:
  scallopbot-data:
  # ollama-data: