# Copy to .env and fill in. Never commit the real .env. # Note: ACME_EMAIL / Traefik itself are configured separately in ~/traefik/.env — # Traefik is shared infra, not part of this stack (see docker-compose.yml comment). # --- domain / TLS --- MATRIX_SERVER_NAME=matrix.apps.williamturner.eu AGENT_HOSTNAME=agent.apps.williamturner.eu # Set to true ONLY for the first-boot window while creating the bot account, # then back to false (or unset) and redeploy. See README. MATRIX_ALLOW_REGISTRATION=false # --- gitea --- GITEA_URL=https://gitea.apps.williamturner.eu GITEA_TOKEN= GITEA_WEBHOOK_SECRET= # Image the agent runs from — built and pushed by .gitea/workflows/build.yml GITEA_REGISTRY_IMAGE=gitea.apps.williamturner.eu///claude-agent:latest # --- claude --- # Run `claude setup-token` interactively (needs a browser + Claude Pro/Max subscription) # to generate this — it's a long-lived OAuth token, not an API key. CLAUDE_CODE_OAUTH_TOKEN= # --- matrix bot --- MATRIX_HOMESERVER_URL=https://matrix.apps.williamturner.eu MATRIX_BOT_TOKEN= MATRIX_CONTROL_ROOM_ID= # --- openrouter (the "!ai" chat command — other models, not the coding agent) --- OPENROUTER_API_KEY= OPENROUTER_DEFAULT_MODEL=openai/gpt-4o-mini # --- portainer (GitOps redeploy) --- PORTAINER_STACK_WEBHOOK_URL= # --- gitea actions runner --- ACT_RUNNER_REGISTRATION_TOKEN=