main.ymlΒΆ

---
application_id: "web-app-wordpress"
entity_name: "{{ application_id | entity_name }}"

WORDPRESS_URL: "{{ lookup('tls', application_id, 'url.base') }}"
WORDPRESS_TITLE: "{{ lookup('design', application_id).label }}"
WORDPRESS_MAX_UPLOAD_SIZE: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.max_upload_size') }}"
WORDPRESS_MULTISITE_ENABLED: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.multisite.enabled') | bool }}"
WORDPRESS_PHP_MEMORY_LIMIT: "{{ lookup('service_memory_mb', application_id, entity_name, 0.25) }}M"
WORDPRESS_DOCKER_HTML_PATH: "{{ lookup('volume', 'web-app-wordpress', 'data').target }}"
WORDPRESS_DOCKER_CONF_PATH: "{{ WORDPRESS_CONFIG_PATH }}"
WORDPRESS_VERSION: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.version') }}"
WORDPRESS_IMAGE: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.image') }}"
WORDPRESS_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ entity_name ~ '.name') }}"
WORDPRESS_CONTAINER_ADDRESS: "{{ lookup('container_address', application_id, entity_name) }}"
WORDPRESS_DISCOURSE_CONTAINER_ADDRESS: "{{ lookup('config', 'web-app-discourse', 'services.discourse.name') }}"
WORDPRESS_DOMAINS: "{{ lookup('domains', application_id) }}"
WORDPRESS_SITE_DOMAINS: "{{ WORDPRESS_DOMAINS | in_network(WORDPRESS_DOMAINS | first | network_of) }}"
WORDPRESS_NETWORK_BASE_URLS: >-
  {% for site_domain in WORDPRESS_SITE_DOMAINS %}{{ lookup('network_urls', lookup('tls', site_domain, 'url.base')) | join(',') }}{{ '' if loop.last else ';' }}{%
  endfor %}
WORDPRESS_SITE_URLS: "{{ WORDPRESS_NETWORK_BASE_URLS.split(';') | map('split', ',') | map('first') | list }}"
WORDPRESS_PLUGINS: "{{ lookup('config', application_id, 'addons') | dict2items | selectattr('value.mechanism', 'equalto', 'plugin') | list }}"
WORDPRESS_MU_PLUGINS: "{{ lookup('config', application_id, 'addons') | dict2items | selectattr('value.mechanism', 'equalto', 'mu_plugin') | list }}"
WORDPRESS_ADDONS_INSTALLED: "{{ (WORDPRESS_PLUGINS + WORDPRESS_MU_PLUGINS) | map(attribute='key') | list }}"
WORDPRESS_ADDONS_REQUIRED: "{{ lookup('config', application_id, 'addons') | dict2items | selectattr('value.required', 'defined') | selectattr('value.required') |
  map(attribute='key') | list }}"
WORDPRESS_USER: "www-data"
WORDPRESS_LITELLM_ENV_ID: "{{ lookup('config', application_id, 'addons.ai-engine.config.environment.id') }}"
WORDPRESS_MCP_ENABLED: "{{ lookup('config', application_id, 'mcp.enabled') }}"
WORDPRESS_MCP_SERVICE_KEY: "{{ lookup('config', application_id, 'mcp.endpoint.service_key') }}"
WORDPRESS_MCP_ACCOUNT: "{{ lookup('users', 'mcp-web-app-wordpress') }}"
WORDPRESS_MCP_USERNAME: "{{ WORDPRESS_MCP_ACCOUNT.username }}"
WORDPRESS_MCP_EMAIL: "{{ WORDPRESS_MCP_ACCOUNT.email }}"
WORDPRESS_MCP_ROLE: "subscriber"
WORDPRESS_MCP_APP_PASSWORD_NAME: "mcp"
WORDPRESS_MCP_USER_PASSWORD: "{{ WORDPRESS_MCP_ACCOUNT.password }}"

WORDPRESS_MSMTP_SRC: "{{ lookup('path_absolute', 'roles/sys-svc-mail-msmtp/templates/msmtprc.conf.j2') }}"
WORDPRESS_MSMTP_ABS: "{{ [ lookup('container', application_id, 'directories.config'), 'msmtprc.conf'] | path_join }}"

WORDPRESS_CONFIG_FILE: "wp-config.php"
WORDPRESS_CONFIG_PATH: "{{ [WORDPRESS_DOCKER_HTML_PATH, WORDPRESS_CONFIG_FILE] | path_join }}"
WORDPRESS_CONFIG_UPLD_REL: "config/upload.ini"
WORDPRESS_CONFIG_UPLD_ABS: "{{ [lookup('container', application_id, 'directories.instance'), WORDPRESS_CONFIG_UPLD_REL ] | path_join }}"

WORDPRESS_MU_PLUGINS_DIR: "{{ [WORDPRESS_DOCKER_HTML_PATH, 'wp-content/mu-plugins'] | path_join }}"
WORDPRESS_SUNRISE_PATH: "{{ [WORDPRESS_DOCKER_HTML_PATH, 'wp-content/sunrise.php'] | path_join }}"
WORDPRESS_PLUGINS_DIR: "{{ [WORDPRESS_DOCKER_HTML_PATH, 'wp-content/plugins'] | path_join }}"
WORDPRESS_BBB_API_URL: >-
  {{ lookup('config', application_id, 'addons.video-conferencing-with-bbb.config.bbb_settings.api_url')
  if (lookup('config', application_id, 'addons.video-conferencing-with-bbb.enabled') | bool) else '' }}
WORDPRESS_BBB_API_SECRET: >-
  {{ lookup('config', application_id, 'addons.video-conferencing-with-bbb.config.bbb_settings.api_secret')
  if (lookup('config', application_id, 'addons.video-conferencing-with-bbb.enabled') | bool) else '' }}
WORDPRESS_LISTMONK_API_URL: >-
  {{ lookup('config', application_id, 'addons.integration-for-listmonk-mailing-list-and-newsletter-manager.config.listmonk_settings.api_url')
  if (lookup('config', application_id, 'addons.integration-for-listmonk-mailing-list-and-newsletter-manager.enabled') | bool) else '' }}
WORDPRESS_PEERTUBE_INSTANCE_URL: >-
  {{ lookup('config', application_id, 'addons.video-manager-for-peertube.config.peertube_settings.instance_url')
  if (lookup('config', application_id, 'addons.video-manager-for-peertube.enabled') | bool) else '' }}
WORDPRESS_S3_UPLOADS_ARCHIVE: >-
  {{ lookup('config', application_id, 'addons.s3-uploads.config.archive')
  if (lookup('config', application_id, 'addons.s3-uploads.enabled') | bool) else '' }}
WORDPRESS_TRANSLATE_ENABLED: "{{ lookup('config', application_id, 'addons.freedomtranslate-wp.enabled') | bool }}"
WORDPRESS_TRANSLATE_OPTIONS: >-
  {{ (lookup('config', application_id, 'addons.freedomtranslate-wp.config.options') if WORDPRESS_TRANSLATE_ENABLED | bool else [])
  | items2dict(key_name='name', value_name='value') }}
WORDPRESS_TRANSLATE_ENDPOINT: "{{ WORDPRESS_OPTIONS.freedomtranslate_api_url }}"
WORDPRESS_S3_UPLOADS_SRC: "/usr/src/s3-uploads"
WORDPRESS_S3_UPLOADS_DIR: "{{ [WORDPRESS_PLUGINS_DIR, 's3-uploads'] | path_join }}"
WORDPRESS_OPTIONS_OWNED_ELSEWHERE: >-
  {{ ['home', 'siteurl', 'active_plugins', 'rewrite_rules', 'openid_connect_generic_settings', 'mwai_options']
  + (lookup('config', application_id, 'addons.wp-discourse.config.discourse_settings') | map(attribute='name') | list)
  + (WORDPRESS_DESIGN_LOGOS.keys() | list) }}
WORDPRESS_OPTIONS_CONTRIBUTED: >-
  {{ {'admin_email': WORDPRESS_ADMIN_EMAIL}
  | combine({'blogname': WORDPRESS_DESIGN.title} if (WORDPRESS_DESIGN_ENABLED | bool and WORDPRESS_DESIGN.title is string and WORDPRESS_DESIGN.title) else {})
  | combine(WORDPRESS_TRANSLATE_OPTIONS) }}
WORDPRESS_OPTIONS: >-
  {{ WORDPRESS_OPTIONS_CONTRIBUTED | combine(lookup('config', application_id, 'services.' ~ entity_name ~ '.options'))
  | wordpress_options_checked(WORDPRESS_OPTIONS_OWNED_ELSEWHERE) }}

WORDPRESS_ADMIN_EMAIL: "{{ lookup('config', application_id, 'users.platform_administrator.email') }}"
WORDPRESS_ADMIN_USER: "{{ lookup('users', 'platform_administrator').username }}"
WORDPRESS_ADMIN_PASSWORD: "{{ lookup('users', 'platform_administrator').password }}"

WORDPRESS_DESIGN: "{{ lookup('design', application_id) }}"
WORDPRESS_DESIGN_ENABLED: "{{ lookup('config', application_id, 'services.design.enabled') | bool }}"
WORDPRESS_DESIGN_HOST_DIR: "{{ [lookup('container', application_id, 'directories.config'), 'design'] | path_join }}"
WORDPRESS_DESIGN_DIRECTORY: "infinito-design"
WORDPRESS_DESIGN_PATH: "{{ [WORDPRESS_DOCKER_HTML_PATH, 'wp-content', WORDPRESS_DESIGN_DIRECTORY] | path_join }}"
WORDPRESS_DESIGN_STYLESHEETS: ["admin.css", "admin-bar.css", "extras.css", "editor.css", "login.css"]
WORDPRESS_DESIGN_LOGOS:
  site_icon: "icon.png"
  site_logo: "logo.png"
WORDPRESS_DESIGN_PALETTE: "{{ lookup('design_palette', lookup('config', 'web-svc-design', 'services.design.colors.base')).light }}"
WORDPRESS_DESIGN_SYNC: >-
  mkdir -p "$(dirname "$1")" && cat > "$1.new" &&
  if cmp -s "$1.new" "$1"; then rm "$1.new"; else mv "$1.new" "$1" && echo CHANGED; fi
WORDPRESS_DESIGN_CONFIG:
  enabled: "{{ WORDPRESS_DESIGN_ENABLED | string | lower }}"
  directory: "{{ WORDPRESS_DESIGN_DIRECTORY }}"
  logos: "{{ WORDPRESS_DESIGN_LOGOS if WORDPRESS_DESIGN.logo is string else {} }}"
  stylesheets: "{{ WORDPRESS_DESIGN_STYLESHEETS }}"
  global_styles:
    twentytwentyfive: "{{ lookup('file', [role_path, 'files/json/global-styles.twentytwentyfive.json'] | path_join) | from_json }}"
  scheme:
    name: "{{ service_provider.platform.titel }}"
    colors:
      - "{{ WORDPRESS_DESIGN_PALETTE['--design-frame'] }}"
      - "{{ WORDPRESS_DESIGN_PALETTE['--design-frame-active'] }}"
      - "{{ WORDPRESS_DESIGN_PALETTE['--design-primary'] }}"
      - "{{ WORDPRESS_DESIGN_PALETTE['--design-surface-1'] }}"
    icons:
      base: "{{ WORDPRESS_DESIGN_PALETTE['--design-on-frame'] }}"
      focus: "{{ WORDPRESS_DESIGN_PALETTE['--design-on-frame'] }}"
      current: "{{ WORDPRESS_DESIGN_PALETTE['--design-on-frame'] }}"
  tokens:
    - "{{ lookup('cdn', 'web-svc-cdn').relative_urls.shared.css }}/default.css"