mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
175 lines
7.4 KiB
YAML
175 lines
7.4 KiB
YAML
---
|
|
application_id: "web-app-listmonk"
|
|
entity_name: "{{ application_id | get_entity_name }}"
|
|
container_port: "{{ lookup('config', application_id, 'services.listmonk.ports.internal.http') }}"
|
|
|
|
LISTMONK_NAME: "{{ lookup('config', application_id, 'services.listmonk.name') }}"
|
|
LISTMONK_CONFIG_HOST: "{{ [ lookup('container', application_id, 'directories.config'),'config.toml' ] | path_join }}"
|
|
LISTMONK_OIDC_ENABLED: "{{ lookup('config', application_id, 'services.sso.enabled') }}"
|
|
|
|
LISTMONK_PUBLIC_API_ENABLED: "{{ lookup('config', application_id, 'services.listmonk.public_api_activated') }}"
|
|
|
|
LISTMONK_USER_SEND: "newsletter"
|
|
LISTMONK_USER_BOUNCE: "bounce"
|
|
|
|
LISTMONK_EXEC_DATABASE: "container exec -i {{ lookup('database', application_id, 'address') }} psql -U {{ lookup('database', application_id, 'username') }} -d {{
|
|
lookup('database', application_id, 'name') }}"
|
|
LISTMONK_EMAIL: "{{ lookup('email', application_id) }}"
|
|
|
|
LISTMONK_SETTINGS:
|
|
- key: "app.root_url"
|
|
value: "\"{{ lookup('tls', application_id, 'url.base') }}\""
|
|
|
|
- key: "app.notify_emails"
|
|
value: "{{ [ lookup('users', 'administrator').email ] | to_json }}"
|
|
|
|
- key: "security.oidc"
|
|
value: >-
|
|
{{ {
|
|
"enabled": True,
|
|
"client_id": OIDC.CLIENT.ID,
|
|
"provider_url": OIDC.CLIENT.ISSUER_URL,
|
|
"client_secret": OIDC.CLIENT.SECRET
|
|
} | to_json }}
|
|
condition: "{{ LISTMONK_OIDC_ENABLED | bool }}"
|
|
|
|
- key: "appearance.public.custom_js"
|
|
value: "{{ lookup('file', lookup('path_absolute', 'roles/web-app-listmonk/files/javascript/oidc-autologin.js')) | to_json }}"
|
|
condition: "{{ LISTMONK_OIDC_ENABLED | bool }}"
|
|
|
|
- key: "security.enable_captcha"
|
|
value: "true"
|
|
|
|
- key: "security.captcha_key"
|
|
value: "\"{{ lookup('config', application_id, 'secrets.credentials.hcaptcha.key') }}\""
|
|
|
|
- key: "security.captcha_secret"
|
|
value: "\"{{ lookup('config', application_id, 'secrets.credentials.hcaptcha.secret') }}\""
|
|
|
|
- key: "smtp"
|
|
value: >-
|
|
{{ [
|
|
{
|
|
"host": LISTMONK_EMAIL.host,
|
|
"port": LISTMONK_EMAIL.port,
|
|
"enabled": LISTMONK_EMAIL.smtp,
|
|
"username": lookup('users', LISTMONK_USER_SEND).email,
|
|
"password": lookup('users', LISTMONK_USER_SEND).password,
|
|
"tls_type": (
|
|
LISTMONK_EMAIL.tls
|
|
| ternary("TLS",
|
|
LISTMONK_EMAIL.start_tls
|
|
| ternary("STARTTLS","NONE")
|
|
)
|
|
),
|
|
"email_headers": [],
|
|
"hello_hostname": "",
|
|
"max_conns": 10,
|
|
"idle_timeout": "15s",
|
|
"wait_timeout": "5s",
|
|
"auth_protocol": "login",
|
|
"max_msg_retries": 2,
|
|
"tls_skip_verify": false
|
|
}
|
|
] | to_json }}
|
|
condition: "{{ LISTMONK_EMAIL.smtp | bool }}"
|
|
|
|
- key: "app.lang"
|
|
value: '"{{ HOST_LL }}"'
|
|
|
|
- key: "app.logo_url"
|
|
value: '"{{ service_provider.platform.logo }}"'
|
|
condition: "{{ service_provider.platform.logo | length > 0 }}"
|
|
|
|
- key: "app.site_name"
|
|
value: '"{{ service_provider.company.titel }} Mailing list"'
|
|
|
|
- key: "bounce.enabled"
|
|
value: "true"
|
|
|
|
- key: "bounce.mailboxes"
|
|
value: >-
|
|
{{ [
|
|
{
|
|
"host": LISTMONK_EMAIL.host,
|
|
"port": 995,
|
|
"type": "pop",
|
|
"uuid": "471fd0e9-8c33-4e4a-9183-c4679699faca",
|
|
"enabled": true,
|
|
"username": lookup('users', LISTMONK_USER_BOUNCE).email,
|
|
"password": lookup('users', LISTMONK_USER_BOUNCE).get('tokens', {}).get(MAIL_PROVIDER, ''),
|
|
"return_path": lookup('users', LISTMONK_USER_BOUNCE).email,
|
|
"tls_enabled": LISTMONK_EMAIL.tls,
|
|
"auth_protocol": "userpass",
|
|
"scan_interval": "15m",
|
|
"tls_skip_verify": false
|
|
}
|
|
] | to_json }}
|
|
|
|
- key: "app.from_email"
|
|
value: '"{{ service_provider.company.titel }} Newsletter <{{ lookup(''users'', LISTMONK_USER_SEND).email }}>"'
|
|
|
|
- key: "app.favicon_url"
|
|
value: '"{{ service_provider.platform.favicon }}"'
|
|
condition: "{{ service_provider.platform.favicon | length > 0 }}"
|
|
|
|
- key: "app.check_updates"
|
|
value: "true"
|
|
|
|
- key: "app.enable_public_archive_rss_content"
|
|
value: "true"
|
|
|
|
- key: "upload.provider"
|
|
value: '"s3"'
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
|
|
- key: "upload.s3.aws_access_key_id"
|
|
value: "{{ lookup('objstore', application_id, 'access_key') | to_json }}"
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
|
|
- key: "upload.s3.aws_secret_access_key"
|
|
value: "{{ lookup('objstore', application_id, 'secret_key') | to_json }}"
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
|
|
- key: "upload.s3.aws_default_region"
|
|
value: "{{ lookup('objstore', application_id, 'region') | to_json }}"
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
|
|
- key: "upload.s3.bucket"
|
|
value: "{{ lookup('objstore', application_id, 'bucket') | to_json }}"
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
|
|
- key: "upload.s3.url"
|
|
value: "{{ lookup('objstore', application_id, 'url') | to_json }}"
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
|
|
- key: "upload.s3.public_url"
|
|
value: "{{ lookup('objstore', application_id, 'public_url') | to_json }}"
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
|
|
- key: "upload.s3.bucket_type"
|
|
value: '"public"'
|
|
condition: "{{ lookup('objstore', application_id, 'enabled') | bool }}"
|
|
LISTMONK_MCP_ENABLED: "{{ lookup('config', application_id, 'services.listmonkmcp.enabled') | bool }}"
|
|
LISTMONK_MCP_SERVICE_KEY: "listmonkmcp"
|
|
LISTMONK_MCP_CONTAINER: "{{ lookup('config', application_id, 'services.listmonkmcp.name') }}"
|
|
LISTMONK_MCP_PORT: "{{ lookup('config', application_id, 'services.listmonkmcp.ports.internal.http') }}"
|
|
LISTMONK_MCP_BEARER: "{{ lookup('config', application_id, 'secrets.credentials.mcp_bearer') }}"
|
|
LISTMONK_MCP_INSTANCE_DIR: "{{ [lookup('container', application_id, 'directories.instance'), 'mcp'] | path_join }}"
|
|
LISTMONK_MCP_UPSTREAM_HOST: "{{ lookup('config', application_id, 'services.listmonk.name') }}"
|
|
LISTMONK_MCP_UPSTREAM_PORT: "{{ lookup('config', application_id, 'services.listmonk.ports.internal.http') }}"
|
|
LISTMONK_MCP_UPSTREAM_URL: "http://{{ LISTMONK_MCP_UPSTREAM_HOST }}:{{ LISTMONK_MCP_UPSTREAM_PORT }}"
|
|
LISTMONK_MCP_CONTRACT:
|
|
provider: "{{ application_id }}"
|
|
upstream_url: "{{ LISTMONK_MCP_UPSTREAM_URL }}"
|
|
auth_subject: "{{ lookup('config', application_id, 'mcp.auth_subject') }}"
|
|
mutating_tools_enabled: "{{ lookup('config', application_id, 'mcp.tools.mutating_tools_enabled') | bool }}"
|
|
tools: "{{ lookup('file', 'mcp/tools.json') | from_json }}"
|
|
limits: "{{ lookup('config', application_id, 'mcp.limits') }}"
|
|
schema_sha256: "{{ lookup('config', application_id, 'mcp.tools.schema_sha256') }}"
|
|
LISTMONK_MCP_UPSTREAM_KEY: "{{ lookup('config', application_id, 'secrets.credentials.mcp_upstream_token') }}"
|
|
LISTMONK_MCP_UPSTREAM_USER: "mcpreader"
|
|
LISTMONK_MCP_UPSTREAM_ROLE: "mcp-readonly"
|
|
LISTMONK_MCP_UPSTREAM_AUTH_HEADER: "Authorization"
|
|
LISTMONK_MCP_UPSTREAM_AUTH_FORMAT: "token {{ LISTMONK_MCP_UPSTREAM_USER }}:{key}"
|