PretixΒΆ
DescriptionΒΆ
Simplify event management with Pretix, an open-source ticketing system for conferences, workshops, and cultural events. Pretix empowers organizers with flexible ticket sales, attendee management, and secure payment integrations, all under your control.
OverviewΒΆ
This role deploys Pretix using Docker, automating the installation, configuration, and management of your Pretix server. It integrates with an external PostgreSQL database, Redis for caching and sessions, and an NGINX reverse proxy. The role supports advanced features such as global CSS injection, Matomo analytics, OIDC authentication, and centralized logout, making it a powerful and customizable solution within the Infinito.Nexus ecosystem.
CosmosΒΆ
The diagram places Pretix 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_db_redis["svc-db-redis π³π"]
dep_svc_net_tor["svc-net-tor π³π"]
dep_web_app_dashboard["web-app-dashboard π³π"]
dep_web_app_hermes["web-app-hermes π³π"]
dep_web_app_keycloak["web-app-keycloak π³π"]
dep_web_app_matomo["web-app-matomo π³π"]
dep_web_app_openclaw["web-app-openclaw π³π"]
dep_web_app_openwebui["web-app-openwebui π³π"]
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-pretix π³π]
svc_sso["sso"]
svc_logout["logout"]
svc_dashboard["dashboard"]
svc_matomo["matomo"]
svc_email["email"]
svc_redis["redis"]
svc_postgres["postgres"]
svc_pretix["pretix"]
svc_css["css"]
svc_prometheus["prometheus"]
svc_tor["tor"]
svc_container_backup["container_backup"]
svc_pretixmcp["pretixmcp"]
svc_openwebui["openwebui"]
svc_hermes["hermes"]
svc_openclaw["openclaw"]
svc_flowise["flowise β"]
end
dep_svc_bkp_volume_2_local -. "0..1" .-> svc_container_backup
dep_svc_db_postgres -. "0..1" .-> svc_postgres
dep_svc_db_redis -. "0..1" .-> svc_redis
dep_svc_net_tor -. "0..1" .-> svc_tor
dep_web_app_dashboard -. "0..1" .-> svc_dashboard
dep_web_app_hermes -. "0..1" .-> svc_hermes
dep_web_app_keycloak -. "0..1" .-> svc_sso
dep_web_app_matomo -. "0..1" .-> svc_matomo
dep_web_app_openclaw -. "0..1" .-> svc_openclaw
dep_web_app_openwebui -. "0..1" .-> svc_openwebui
dep_web_app_prometheus -. "0..1" .-> svc_prometheus
dep_web_app_stalwart -. "0..1" .-> svc_email
dep_web_svc_css -. "0..1" .-> svc_css
dep_web_svc_logout -. "0..1" .-> svc_logout
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ΒΆ
Pretix Installation: Deploys Pretix in a dedicated Docker container.
External PostgreSQL Database: Configures Pretix to use a centralized PostgreSQL service.
Redis Integration: Adds Redis support for caching and session handling.
NGINX Reverse Proxy Integration: Provides secure access and HTTPS termination.
OIDC Authentication: Seamless integration with identity providers such as Keycloak.
Centralized Logout: Unified logout across applications in the ecosystem.
Matomo Analytics & Global CSS: Built-in support for analytics and unified styling.
Quick SetupΒΆ
DevelopmentΒΆ
Clone, set up the workstation, and deploy Pretix 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-pretix full_cycle=false
ProductionΒΆ
Run the published image to provision the inventory and deploy Pretix to a managed server (the mounted volume persists the inventory):
APP=web-app-pretix
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'
AddonsΒΆ
Role-level extensions are declared in meta/addons/ following the unified addon contract (requirement 026).
Addon |
Mechanism |
Default state |
Bridges |
|---|---|---|---|
|
plugin |
enabled when |
|
The oidc plugin (pretix-oidc, pinned to 2.3.1) is pip-installed at image build time and delivers Keycloak/OIDC login. It auto-enables whenever the SSO partner role (web-app-keycloak) is co-deployed and stays off otherwise.
Further ResourcesΒΆ
Persona contract opt-outsΒΆ
The shared biber and administrator persona helpers are declared blocked in templates/playwright.env.j2. The role provisions no pretix account at all β tasks/main.yml only deploys the stack β while pretixβs native auth backend authenticates a pretix User row that is created by the interactive first-run setup. The pretix-oidc backend added on top lives on pretixβs /control login page, whereas the roleβs base URL serves the public ticket shop that the baseline scenarios in files/playwright/playwright.spec.js assert. Seeding a backend user is the path back to a runnable persona journey.
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).