main.ymlΒΆ

---
application_id: "web-app-jellyfin"

JELLYFIN_NAME: "{{ lookup('config', application_id, 'services.jellyfin.name') }}"

JELLYFIN_BASE_URL: "{{ lookup('tls', application_id, 'url.base') }}"
JELLYFIN_API: "http://{{ DOCKER_BIND_HOST }}:{{ lookup('config', application_id, 'services.jellyfin.ports.local.http') }}"

JELLYFIN_ADMIN_USERNAME: "{{ lookup('users', 'platform_administrator').username }}"
JELLYFIN_ADMIN_PASSWORD: "{{ lookup('users', 'platform_administrator').password }}"

JELLYFIN_API_CLIENT: 'MediaBrowser Client="infinito", Device="ansible", DeviceId="infinito-deploy", Version="1.0.0"'

JELLYFIN_DESIGN_ENABLED: "{{ lookup('config', application_id, 'services.design.enabled') | bool }}"
JELLYFIN_DESIGN_THEME: "dark"
JELLYFIN_DESIGN_LIGHT_THEMES: ["light", "appletv"]
JELLYFIN_DESIGN_SCOPE: "html[data-design-palette]"
JELLYFIN_DESIGN_ADMIN_SCOPE: ":has(> body.dashboardDocument)"
JELLYFIN_DESIGN_CSS_OPEN: "/*infinito-design*/"
JELLYFIN_DESIGN_CSS_CLOSE: "/*/infinito-design*/"
JELLYFIN_DESIGN_CSS_PATTERN: "(?s)/\\*infinito-design\\*/.*?/\\*/infinito-design\\*/"

JELLYFIN_SSO_ENABLED: "{{ lookup('config', application_id, 'services.sso.enabled') }}"
JELLYFIN_LDAP_ENABLED: "{{ lookup('config', application_id, 'services.ldap.enabled') }}"

JELLYFIN_SSO_PLUGIN_MANIFEST: "{{ lookup('config', application_id, 'addons.sso-authentication.config.manifest') }}"
JELLYFIN_LDAP_PLUGIN_VERSION: "{{ lookup('config', application_id, 'addons.ldap-authentication.version') }}"
JELLYFIN_LDAP_PLUGIN_URL: "{{ lookup('config', application_id, 'addons.ldap-authentication.config.url') }}"
JELLYFIN_LDAP_PLUGIN_MD5: "{{ lookup('config', application_id, 'addons.ldap-authentication.config.md5') }}"

JELLYFIN_LDAP_SERVER: "{{ LDAP.SERVER.DOMAIN }}"
JELLYFIN_LDAP_PORT: "{{ LDAP.SERVER.PORT }}"
JELLYFIN_LDAP_BIND_DN: "{{ LDAP.DN.ADMINISTRATOR.DATA }}"
JELLYFIN_LDAP_BIND_PASSWORD: "{{ LDAP.BIND_CREDENTIAL }}"
JELLYFIN_LDAP_BASE_DN: "{{ LDAP.DN.OU.USERS }}"
JELLYFIN_LDAP_UID_ATTR: "{{ LDAP.USER.ATTRIBUTES.ID }}"

JELLYFIN_OIDC_ISSUER: "{{ OIDC.CLIENT.ISSUER_URL }}"
JELLYFIN_OIDC_CLIENT_ID: "{{ OIDC.CLIENT.ID }}"
JELLYFIN_OIDC_CLIENT_SECRET: "{{ OIDC.CLIENT.SECRET }}"
JELLYFIN_MCP_ENABLED: "{{ lookup('config', application_id, 'services.jellyfinmcp.enabled') | bool }}"
JELLYFIN_MCP_SERVICE_KEY: "jellyfinmcp"
JELLYFIN_MCP_CONTAINER: "{{ lookup('config', application_id, 'services.jellyfinmcp.name') }}"
JELLYFIN_MCP_PORT: "{{ lookup('config', application_id, 'services.jellyfinmcp.ports.internal.http') }}"
JELLYFIN_MCP_BEARER: "{{ lookup('config', application_id, 'secrets.credentials.mcp_bearer') }}"
JELLYFIN_MCP_INSTANCE_DIR: "{{ [lookup('container', application_id, 'directories.instance'), 'mcp'] | path_join }}"
JELLYFIN_MCP_UPSTREAM_HOST: "{{ lookup('config', application_id, 'services.jellyfin.name') }}"
JELLYFIN_MCP_UPSTREAM_PORT: "{{ lookup('config', application_id, 'services.jellyfin.ports.internal.http') }}"
JELLYFIN_MCP_UPSTREAM_URL: "http://{{ JELLYFIN_MCP_UPSTREAM_HOST }}:{{ JELLYFIN_MCP_UPSTREAM_PORT }}"
JELLYFIN_MCP_CONTRACT:
  provider: "{{ application_id }}"
  upstream_url: "{{ JELLYFIN_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') }}"
JELLYFIN_MCP_ACCOUNT: "{{ lookup('users', 'mcp-web-app-jellyfin') }}"
JELLYFIN_MCP_UPSTREAM_PASSWORD: "{{ JELLYFIN_MCP_ACCOUNT.password }}"
JELLYFIN_MCP_UPSTREAM_USER: "{{ JELLYFIN_MCP_ACCOUNT.username }}"
JELLYFIN_MCP_UPSTREAM_DEVICE_ID: "infinito-mcp-adapter"
JELLYFIN_MCP_UPSTREAM_AUTH_HEADER: "X-Emby-Token"
JELLYFIN_MCP_UPSTREAM_AUTH_FORMAT: "{key}"