Skip to main content

Docker

Docker is an optional way to run the web app and workers. The daemon and CLI backends still run on the host. Agent working directories must therefore be host paths, not /workspace paths.

Prepare the host

Complete the host setup for your OS first. Keep app.enabled: false when Compose serves the app: otherwise two app processes may compete for the same port.

The supplied Compose file uses the docker profile for app, telegram-poll, reply-worker and tts. It expects an external traefik_network, a local .env, and a shared Timon home. Inspect the file for your installation before launching it.

  1. Copy .env.example to .env and configure the values for your installation without committing credentials.
  2. Set TIMON_HOST_HOME to the host daemon's data directory; Compose mounts it at /data/.timon.
  3. Set the app and reply worker's ORCHESTRATOR_URL to the daemon address reachable from containers. The supplied file uses http://host.docker.internal:3001; this must match your daemon. The schema's default daemon port is 3000.
  4. Confirm the reverse-proxy network exists and that the daemon's listener is reachable from the bridge, with authentication enabled. A host loopback listener is not automatically reachable through a bridge gateway.

From the checkout root, in your own terminal:

docker compose --profile docker up -d --build app
docker compose --profile docker ps

The supplied app routes include timon.localhost. Use the hostname actually configured in your reverse proxy. Start optional workers only when their corresponding integration is configured; do not run both container and daemon-managed copies of the same worker.

Persistent data

The current configuration uses a bind mount, not an anonymous container filesystem. Stop or replace a container without deleting that data directory. A Timon export excludes secrets; preserve those separately when moving an installation.