Docker¶
Lango provides a Docker image that includes all runtime dependencies: Chromium for browser automation, git and curl for skill imports.
Image Build¶
The Docker image uses a multi-stage build:
- Builder stage:
golang:1.25-bookworm-- compiles the Go binary with CGO enabled - Runtime stage:
debian:bookworm-slim-- minimal runtime with Chromium and utilities
Build the image:
docker build -t lango:latest .
Docker Compose¶
services:
lango:
build: .
image: lango:latest
container_name: lango
restart: unless-stopped
ports:
- "18789:18789"
volumes:
- lango-data:/data
secrets:
- lango_config
- lango_passphrase
environment:
- LANGO_PROFILE=default
secrets:
lango_config:
file: ./config.json
lango_passphrase:
file: ./passphrase.txt
volumes:
lango-data:
Presidio PII Profile¶
To include the Presidio PII redaction service:
docker compose --profile presidio up
Headless Configuration¶
For automated or server deployments without interactive onboarding:
1. Create config.json with your provider keys and settings:
{
"agent": {
"provider": "openai",
"model": "gpt-4o"
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "your-telegram-token"
}
}
}
2. Create passphrase.txt with your encryption passphrase:
your-secure-passphrase
3. Start the container:
docker compose up -d
Entrypoint Script¶
The docker-entrypoint.sh script handles first-run setup:
- Copies the passphrase secret to
~/.lango/keyfilewith mode0600 - First run: copies
config.jsonto/tmp, imports it into the encrypted config store, and the temp file is auto-deleted - Subsequent restarts: the existing encrypted profile is reused without re-importing
Environment Variables¶
| Variable | Default | Description |
|---|---|---|
LANGO_PROFILE | default | Configuration profile name |
LANGO_CONFIG_FILE | -- | Path to config JSON for import |
LANGO_PASSPHRASE_FILE | -- | Path to passphrase file |
Related¶
- Production Checklist -- Pre-deployment security and configuration checks
- Configuration -- Full configuration reference