Skip to content

alf.io

Open-source event management and ticketing platform. alf.io handles event creation, ticket category management, online ticket sales, payment gateway integration, attendee management, and QR code-based check-in. Built with Spring Boot and PostgreSQL.

Change profiles to spring-boot for production

The default alfio.profiles value is dev. The dev Spring profile enables development-mode settings including verbose logging and relaxed security checks. Always set alfio.profiles: spring-boot for any non-development deployment before going live.

Key Features

  • Event management — create events, ticket categories, discount codes, and promotions
  • Online ticket sales — payment gateway integration (Stripe, PayPal, and others)
  • QR code check-in — mobile check-in app with offline support
  • Attendee management — registration forms, custom fields, and export
  • PostgreSQL backend — bundled subchart or external database
  • Spring Boot — production-ready Java application

Installation

HTTPS repository:

helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install alfio helmforge/alfio

OCI registry:

helm install alfio oci://ghcr.io/helmforgedev/helm/alfio

Deployment Examples

# values.yaml — Production alf.io with PostgreSQL and TLS
alfio:
  baseUrl: 'https://tickets.example.com'
  profiles: 'spring-boot'

postgresql:
  enabled: true
  auth:
    password: 'postgres-password'

resources:
  requests:
    memory: 512Mi
    cpu: 250m
  limits:
    memory: 1Gi
    cpu: 1000m

ingress:
  enabled: true
  ingressClassName: traefik
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
  hosts:
    - host: tickets.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: alfio-tls
      hosts:
        - tickets.example.com
# values.yaml — alf.io with external PostgreSQL
alfio:
  baseUrl: 'https://tickets.example.com'
  profiles: 'spring-boot'

postgresql:
  enabled: false

database:
  external:
    host: postgresql.database.svc
    port: '5432'
    name: alfio
    username: alfio
    existingSecret: alfio-db-secret
    existingSecretPasswordKey: password

ingress:
  enabled: true
  ingressClassName: traefik
  hosts:
    - host: tickets.example.com
      paths:
        - path: /
          pathType: Prefix
# values.yaml — alf.io with Stripe payment integration
alfio:
  baseUrl: 'https://tickets.example.com'
  profiles: 'spring-boot'
  extraEnv:
    # Stripe integration
    - name: STRIPE_SECRET_KEY
      valueFrom:
        secretKeyRef:
          name: alfio-payments
          key: stripe-secret-key
    - name: STRIPE_PUBLIC_KEY
      valueFrom:
        secretKeyRef:
          name: alfio-payments
          key: stripe-public-key

postgresql:
  enabled: true
  auth:
    password: 'postgres-password'

resources:
  requests:
    memory: 512Mi
    cpu: 250m
  limits:
    memory: 1Gi
    cpu: 1000m

ingress:
  enabled: true
  ingressClassName: traefik
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
  hosts:
    - host: tickets.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: alfio-tls
      hosts:
        - tickets.example.com

Configuration Reference

Core

ParameterTypeDefaultDescription
nameOverridestring""Override the chart name.
fullnameOverridestring""Override the full release name.
commonLabelsobject{}Extra labels added to all resources.

Image

ParameterTypeDefaultDescription
image.repositorystringdocker.io/alfio/alf.ioalf.io container image.
image.tagstring"2.0-M5-2509-1"Image tag.
image.pullPolicystringIfNotPresentImage pull policy.
imagePullSecretsarray[]Pull secrets for private registries.

alf.io Configuration

ParameterTypeDefaultDescription
alfio.baseUrlstring""Public URL of the alf.io instance (e.g. https://tickets.example.com).
alfio.profilesstringdevSpring profiles to activate. Use spring-boot for production.
alfio.extraEnvarray[]Extra environment variables for payment gateways and advanced configuration.
baseUrl affects QR codes on issued tickets

alf.io embeds baseUrl in the QR codes printed on tickets. If this value is incorrect, attendees who have already received their tickets will have QR codes that point to the wrong URL. Set the correct public URL before selling any tickets.

Spring Boot JVM memory requirements

alf.io is a Spring Boot Java application. Without resources.limits.memory, the JVM may consume all available node memory. Set at least 512Mi for requests and 1Gi for limits. The JVM respects container memory limits via -XX:MaxRAMPercentage.

Database — Embedded Subchart

ParameterTypeDefaultDescription
postgresql.enabledbooleantrueDeploy a bundled PostgreSQL subchart for alf.io.
postgresql.architecturestringstandalonePostgreSQL deployment architecture.
postgresql.auth.databasestringalfioDatabase name created by the subchart.
postgresql.auth.usernamestringalfioDatabase username created by the subchart.
postgresql.auth.passwordstring""Database password (auto-generated if empty).

Database — External

ParameterTypeDefaultDescription
database.external.hoststring""External PostgreSQL hostname or IP.
database.external.portstring"5432"External PostgreSQL port.
database.external.namestringalfioDatabase name on the external server.
database.external.usernamestringalfioUsername for the external database.
database.external.passwordstring""Password for the external database (plain text — prefer secret).
database.external.existingSecretstring""Existing secret containing the database password.
database.external.existingSecretPasswordKeystringpasswordKey inside the existing secret for the password.

Service

ParameterTypeDefaultDescription
service.typestringClusterIPKubernetes service type.
service.portinteger80Service port exposed to the cluster.
service.annotationsobject{}Annotations for the Service.

Ingress

ParameterTypeDefaultDescription
ingress.enabledbooleanfalseEnable an Ingress resource.
ingress.ingressClassNamestringtraefikIngress class name.
ingress.annotationsobject{}Annotations for the Ingress (e.g. cert-manager for TLS).
ingress.hostsarray[]Ingress host and path rules.
ingress.tlsarray[]TLS configuration (secret name and hosts).

Probes

Probes use the /healthz endpoint.

ParameterTypeDefaultDescription
probes.startup.enabledbooleantrueEnable startup probe.
probes.startup.initialDelaySecondsinteger15Startup probe initial delay.
probes.startup.periodSecondsinteger5Startup probe period.
probes.startup.timeoutSecondsinteger3Startup probe timeout.
probes.startup.failureThresholdinteger30Startup probe failure threshold.
probes.liveness.enabledbooleantrueEnable liveness probe.
probes.liveness.initialDelaySecondsinteger0Liveness probe initial delay.
probes.liveness.periodSecondsinteger15Liveness probe period.
probes.liveness.timeoutSecondsinteger5Liveness probe timeout.
probes.liveness.failureThresholdinteger3Liveness probe failure threshold.
probes.readiness.enabledbooleantrueEnable readiness probe.
probes.readiness.initialDelaySecondsinteger0Readiness probe initial delay.
probes.readiness.periodSecondsinteger10Readiness probe period.
probes.readiness.timeoutSecondsinteger5Readiness probe timeout.
probes.readiness.failureThresholdinteger3Readiness probe failure threshold.

Resources and Security

ParameterTypeDefaultDescription
resourcesobject{}CPU and memory requests and limits. Min 512Mi RAM.
podSecurityContextobject{}Pod-level security context.
securityContextobject{}Container-level security context.

Service Account

ParameterTypeDefaultDescription
serviceAccount.createbooleanfalseCreate a dedicated ServiceAccount.
serviceAccount.namestring""Override the ServiceAccount name.
serviceAccount.annotationsobject{}Annotations for the ServiceAccount.

Scheduling

ParameterTypeDefaultDescription
nodeSelectorobject{}Node selector for scheduling.
tolerationsarray[]Tolerations for scheduling.
affinityobject{}Affinity rules.
topologySpreadConstraintsarray[]Topology spread constraints.
priorityClassNamestring""PriorityClass for the pod.
terminationGracePeriodSecondsinteger30Termination grace period.
podLabelsobject{}Extra labels for the pod.
podAnnotationsobject{}Extra annotations for the pod.

Extra

ParameterTypeDefaultDescription
extraVolumesarray[]Extra volumes to attach to the pod.
extraVolumeMountsarray[]Extra volume mounts for the container.
extraManifestsarray[]Extra Kubernetes manifests deployed alongside the chart.

Common Issues

Application using dev profile in production

If alfio.profiles is left as dev in production, the application logs excessively, may expose stack traces in error responses, and can have relaxed security settings. Always set alfio.profiles: spring-boot before any event goes live or any tickets are sold.

Enable HTTPS before processing payments

alf.io integrates with payment gateways that require HTTPS for webhooks and redirects. Ensure TLS is configured in the Ingress (via cert-manager or equivalent) and that baseUrl starts with https:// before configuring any payment gateway credentials.

More Information