Files
opensquilla--opensquilla/compose.yaml
T
2026-07-13 13:12:33 +08:00

46 lines
2.1 KiB
YAML

services:
gateway:
# Defaults to a self-built image; to use a prebuilt release image instead:
# OPENSQUILLA_GATEWAY_IMAGE=ghcr.io/opensquilla/opensquilla:latest docker compose up -d
# Full container guide: docs/docker.md
image: ${OPENSQUILLA_GATEWAY_IMAGE:-opensquilla:local}
environment:
# In-container bind address. Keep it 0.0.0.0 — Docker port publishing
# needs the wildcard bind, and what the network can actually reach is
# decided by `ports` below, not by this value.
OPENSQUILLA_LISTEN: "0.0.0.0"
# Administering a containerized gateway through the Web UI (/control/)
# requires token auth, even from this host. Enable it with:
# OPENSQUILLA_AUTH_MODE: token
# OPENSQUILLA_AUTH_TOKEN: ${OPENSQUILLA_AUTH_TOKEN:?generate one with openssl rand -hex 32}
# and put the value in a git-ignored .env next to this file.
# See docs/docker.md for the /control/?token=... login flow.
OPENROUTER_API_KEY: ${OPENROUTER_API_KEY:-}
BRAVE_SEARCH_API_KEY: ${BRAVE_SEARCH_API_KEY:-}
TZ: ${TZ:-UTC}
volumes:
# Config, state, logs, and workspace persist in a Docker-managed
# named volume mounted at the image's OPENSQUILLA_STATE_DIR. The
# image pre-creates that path owned by the non-root container user,
# so persistence works consistently on Linux, macOS, Windows, and WSL2.
- opensquilla-state:/var/lib/opensquilla
ports:
# Published on the host loopback only: the gateway is reachable from
# this machine and invisible to the rest of the network. To reach the
# Web UI from other devices (home server / NAS), publish on all
# interfaces AND configure token auth above first:
# - "18791:18791"
# Exposure is controlled here — do not change OPENSQUILLA_LISTEN.
# Never forward this port to the internet; see docs/docker.md.
- "127.0.0.1:18791:18791"
healthcheck:
test: ["CMD-SHELL", "curl --fail --silent --show-error http://127.0.0.1:18791/healthz || exit 1"]
interval: 30s
timeout: 5s
start_period: 10s
retries: 3
restart: unless-stopped
volumes:
opensquilla-state: