mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
Provision the native MCP server surface: create the endpoint, its owner and its workspace, probe it on the internal origin, and refuse an endpoint that never serves the stream. Baserow addresses a session through the URL path, so meta/services.yml declares the endpoint key and suffix the discovery layer composes the client URL from. Split the role into a run-once guarded core. Registering the MCP surface makes baserow a shared provider, and the variant-aware loader checks the run-once flag before loading; without the flag as the first task a second load request can include the role again. Address the container by its hosting node. Migration and bootstrap ran `container exec` on the manager while the replica sits on a worker, so the resolved id existed nowhere the command could reach it. Re-resolve after the post-migration restart as well: `service update --force` replaces the container, and the bootstrap was still holding the id of the one it replaced. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
52 lines
2.0 KiB
Django/Jinja
52 lines
2.0 KiB
Django/Jinja
{% include 'roles/sys-svc-container/templates/env.j2' %}
|
|
|
|
BASEROW_PUBLIC_URL={{ BASEROW_PUBLIC_URL }}
|
|
{% if BASEROW_MCP_ENABLED | bool %}
|
|
BASEROW_EXTRA_PUBLIC_URLS={{ BASEROW_INTERNAL_URL }}
|
|
{% endif %}
|
|
|
|
SECRET_KEY={{ BASEROW_SECRET_KEY | dotenv_quote }}
|
|
BASEROW_SECRET_KEY={{ BASEROW_SECRET_KEY | dotenv_quote }}
|
|
|
|
PROXY_HEADER_SSO={{ BASEROW_SSO_PROXY_GATED | string | lower }}
|
|
PROXY_HEADER_SSO_ADMIN_GROUP={{ BASEROW_SSO_ADMIN_GROUP | dotenv_quote }}
|
|
PROXY_HEADER_SSO_FALLBACK_EMAIL_DOMAIN={{ BASEROW_SSO_FALLBACK_EMAIL_DOMAIN | dotenv_quote }}
|
|
|
|
{% set email = lookup('email', application_id) %}
|
|
{% if email.enabled | bool %}
|
|
EMAIL_SMTP={{ email.smtp | upper }}
|
|
EMAIL_SMTP_HOST={{ email.host }}
|
|
EMAIL_SMTP_PORT={{ email.port }}
|
|
EMAIL_SMTP_USER={{ email.username }}
|
|
EMAIL_SMTP_PASSWORD={{ email.password | dotenv_quote }}
|
|
EMAIL_SMTP_USE_TLS={{ email.tls | upper }}
|
|
{% endif %}
|
|
|
|
DATABASE_USER={{ BASEROW_DATABASE_USER }}
|
|
DATABASE_NAME={{ BASEROW_DATABASE_NAME }}
|
|
DATABASE_HOST={{ BASEROW_DATABASE_HOST }}
|
|
DATABASE_PORT={{ BASEROW_DATABASE_PORT }}
|
|
DATABASE_PASSWORD={{ BASEROW_DATABASE_PASSWORD | dotenv_quote }}
|
|
DATABASE_URL={{ BASEROW_DATABASE_URL }}
|
|
|
|
REDIS_HOST={{ BASEROW_REDIS_HOST }}
|
|
REDIS_PORT={{ BASEROW_REDIS_PORT }}
|
|
REDIS_URL={{ BASEROW_REDIS_URL }}
|
|
|
|
{% if lookup('objstore', application_id, 'enabled') | bool %}
|
|
AWS_ACCESS_KEY_ID={{ lookup('objstore', application_id, 'access_key') }}
|
|
AWS_SECRET_ACCESS_KEY={{ lookup('objstore', application_id, 'secret_key') | dotenv_quote }}
|
|
AWS_STORAGE_BUCKET_NAME={{ lookup('objstore', application_id, 'bucket') }}
|
|
AWS_S3_ENDPOINT_URL={{ lookup('objstore', application_id, 'url') }}
|
|
AWS_S3_REGION_NAME={{ lookup('objstore', application_id, 'region') }}
|
|
AWS_S3_CUSTOM_DOMAIN={{ lookup('objstore', application_id, 'public_bucket') }}
|
|
{% endif %}
|
|
|
|
DISABLE_EMBEDDED_PSQL=yes
|
|
DISABLE_EMBEDDED_REDIS=yes
|
|
SYNC_TEMPLATES_ON_STARTUP=false
|
|
BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION=false
|
|
BASEROW_DISABLE_PLUGIN_INSTALL_ON_STARTUP=yes
|
|
MIGRATE_ON_STARTUP=false
|
|
BASEROW_POSTGRES_STARTUP_CHECK_ATTEMPTS=30
|