mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
config.yaml reaches the container as a docker config, which swarm mounts read-only. The image runs its schema migration on every boot, and because the rendered file carries no _config_version it counts as legacy, so the migrator backs the file up and writes it back, failing with EACCES every start. The image offers HERMES_SKIP_CONFIG_MIGRATION for exactly this case, and the config is rendered fresh on every deploy, so there is no persisted legacy shape left to migrate. Drops the volume ownership block that a wrong reading of the same failure introduced. The rescue artifact of that run shows the directory was already owned by the runtime user, and the log shows that user creating directories in it, so the block only widened the mode and fixed nothing. Keeps the single replica but states the reason the evidence supports: SQLite on an NFS-backed shared volume, where advisory locks do not carry reliably. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
16 lines
540 B
Django/Jinja
16 lines
540 B
Django/Jinja
{% include 'roles/sys-svc-container/templates/env.j2' %}
|
|
|
|
HERMES_SKIP_CONFIG_MIGRATION=true
|
|
|
|
API_SERVER_ENABLED=true
|
|
API_SERVER_HOST=0.0.0.0
|
|
API_SERVER_PORT={{ HERMES_PORT_INTERNAL }}
|
|
API_SERVER_KEY={{ HERMES_API_SERVER_KEY | dotenv_quote }}
|
|
{% if HERMES_LITELLM_ENABLED | bool %}
|
|
OLLAMA_API_KEY={{ HERMES_LITELLM_API_KEY | dotenv_quote }}
|
|
OLLAMA_BASE_URL={{ LITELLM_BASE_LOCAL_URL }}/v1
|
|
{% endif %}
|
|
{% for server in HERMES_MCP_SERVERS %}
|
|
{{ server.id | upper | replace('-', '_') }}_MCP_TOKEN={{ server.token | dotenv_quote }}
|
|
{% endfor %}
|