ConfluenceΒΆ
DescriptionΒΆ
Confluence is Atlassianβs enterprise wiki and collaboration platform. This role deploys Confluence via Docker Compose, wires it to PostgreSQL, and integrates proxy awareness, optional OIDC SSO, health checks, and production-friendly defaults for Infinito.Nexus.
OverviewΒΆ
The role builds a minimal custom image on top of the official Confluence image, prepares persistent volumes, and exposes the app behind your reverse proxy. Configuration is driven by variables (image, version, volumes, domains, OIDC). JVM heap sizing follows the containerβs mem_limit: JVM_MAXIMUM_MEMORY is 70 % of it and JVM_MINIMUM_MEMORY 35 %.
CosmosΒΆ
The diagram places Confluence in the Infinito.Nexus cosmos: the components it deploys (capabilities), the central services it consumes (dependencies), and its outward reach (federation and bridged external networks).
flowchart LR
subgraph deps [Dependencies]
dep_svc_bkp_volume_2_local["svc-bkp-volume-2-local π»"]
dep_svc_db_postgres["svc-db-postgres π³π"]
dep_svc_net_tor["svc-net-tor π³π"]
dep_web_app_dashboard["web-app-dashboard π³π"]
dep_web_app_keycloak["web-app-keycloak π³π"]
dep_web_app_matomo["web-app-matomo π³π"]
dep_web_app_prometheus["web-app-prometheus π³π"]
dep_web_app_stalwart["web-app-stalwart π³π"]
dep_web_svc_css["web-svc-css π»"]
dep_web_svc_logout["web-svc-logout π³π"]
end
subgraph role [web-app-confluence π³π]
svc_logout["logout"]
svc_sso["sso β"]
svc_dashboard["dashboard"]
svc_matomo["matomo"]
svc_email["email β"]
svc_postgres["postgres"]
svc_confluence["confluence"]
svc_css["css"]
svc_prometheus["prometheus"]
svc_tor["tor"]
svc_container_backup["container_backup"]
end
dep_svc_bkp_volume_2_local -. "0..1" .-> svc_container_backup
dep_svc_db_postgres -. "0..1" .-> svc_postgres
dep_svc_net_tor -. "0..1" .-> svc_tor
dep_web_app_dashboard -. "0..1" .-> svc_dashboard
dep_web_app_keycloak -- "0..0" --> svc_sso
dep_web_app_matomo -. "0..1" .-> svc_matomo
dep_web_app_prometheus -. "0..1" .-> svc_prometheus
dep_web_app_stalwart -- "0..0" --> svc_email
dep_web_svc_css -. "0..1" .-> svc_css
dep_web_svc_logout -. "0..1" .-> svc_logout
linkStyle 4,7 stroke:red;
Solid 1:1 edges are fixed relationships; dashed 0..1 edges are conditional (enabled only in matching deployments); red 0..0 edges are turned off in this role. Node markers show the roleβs deploy modes (π» host, π³ compose, π swarm); β marks a service that is explicitly turned off, and βοΈ an Ansible role dependency declared in meta/main.yml.
FeaturesΒΆ
Fully Dockerized: Compose stack with a dedicated data volume (
confluence_data) and a slim overlay image for future add-ons.Reverse-Proxy Ready: Sets
ATL_PROXY_NAME/PORT/SCHEME/SECUREso Confluence generates correct external URLs behind HTTPS.OIDC SSO (Optional): Pre-templated vars for issuer, client, scopes, JWKS; compatible with Atlassian DC SSO/OIDC marketplace apps.
Central Database: PostgreSQL integration (local or central DB) with bootstrap credentials from role vars.
JVM Auto-Tuning:
JVM_MINIMUM_MEMORY/JVM_MAXIMUM_MEMORYare 35 % and 70 % of the servicemem_limit.Health Checks: Curl-based container healthcheck for early failure detection.
CSP & Canonical Domains: Hooks into platform CSP/SSL/domain management to keep policies strict and URLs stable.
Backup Friendly: Data isolated under
{{ CONFLUENCE_HOME }}.
Quick SetupΒΆ
DevelopmentΒΆ
Clone, set up the workstation, and deploy Confluence onto the local stack:
git clone https://github.com/infinito-nexus/core.git
cd core
make onboard
make compose-deploy mode=reinstall apps=web-app-confluence full_cycle=false
ProductionΒΆ
Run the published image to provision the inventory and deploy Confluence to a managed server (the mounted volume persists the inventory):
APP=web-app-confluence
HOST=<your-server>
DOMAIN=<your-domain>
TLS_MODE=self_signed
SSH_PUBLIC_KEY="<your-ssh-public-key>"
docker run --rm -it \
-v "$PWD/inventories:/etc/infinito.nexus/inventories" \
-e APP="$APP" -e HOST="$HOST" -e DOMAIN="$DOMAIN" -e TLS_MODE="$TLS_MODE" -e SSH_PUBLIC_KEY="$SSH_PUBLIC_KEY" \
ghcr.io/infinito-nexus/core/debian bash -c '
INVENTORY=/etc/infinito.nexus/inventories/production
infinito administration inventory provision "$INVENTORY" \
--inventory-file "$INVENTORY/devices.yml" \
--host "$HOST" \
--include "$APP" \
--vars "{\"TLS_MODE\": \"$TLS_MODE\", \"DOMAIN_PRIMARY\": \"$DOMAIN\", \"users\": {\"administrator\": {\"authorized_keys\": [\"$SSH_PUBLIC_KEY\"]}}}" &&
infinito administration deploy dedicated "$INVENTORY/devices.yml" \
--password-file "$INVENTORY/.password" \
--diff -vv'
Further ResourcesΒΆ
Product page: Atlassian Confluence
Docker Hub (official image): atlassian/confluence
Persona contract opt-outsΒΆ
meta/services.yml pins sso.enabled to false and tasks/main.yml provisions no Confluence account β account creation belongs to the licensed first-run setup wizard. Neither the biber nor the administrator persona has credentials to sign in with, so templates/playwright.env.j2 declares PERSONA_BIBER_BLOCKED=true and PERSONA_ADMINISTRATOR_BLOCKED=true. The guest persona and the baseline reachability assertions run unconditionally.
CreditsΒΆ
Implemented by Kevin Veen-Birkenbach. Part of the Infinito.Nexus Project and maintained by Kevin Veen-Birkenbach. Licensed under the Infinito.Nexus Community License (Non-Commercial).