Simple deploymenet of Pretalx in 2025
- OS Debian 12
- Install Docker
- Create folder for your project and all files (run this only once):
mkdir -p pretalx pretalx/conf && cd pretalx && touch docker-compose.yml && touch conf/pretalx.cfg
- Copy this docker-compose.yml file
services:
pretalx:
image: pretalx/standalone:latest
container_name: pretalx
restart: unless-stopped
depends_on:
- redis
- db
volumes:
- ./conf/pretalx.cfg:/etc/pretalx/pretalx.cfg:ro
- pretalx-data:/data
- pretalx-public:/public
ports:
- "16800:80"
environment:
# Hint: Make sure you serve all requests for the `/static/` and `/media/` paths when debug is False. See [installation](https://docs.pretalx.org/administrator/installation/#step-7-ssl) for more information
PRETALX_FILESYSTEM_MEDIA: /public/media
PRETALX_FILESYSTEM_STATIC: /public/static
db:
image: docker.io/library/postgres:15-alpine
container_name: pretalx-db
restart: always
volumes:
- pretalx-db:/var/lib/postgresql/data
expose:
- "5432"
environment:
POSTGRES_PASSWORD: yourdbpassword # same password as one that you will put in pretalx.cfg file later on
POSTGRES_USER: pretalx
POSTGRES_DB: pretalx
redis:
image: redis:latest
container_name: pretalx-redis
restart: unless-stopped
volumes:
- pretalx-redis:/data
volumes:
pretalx-db:
pretalx-data:
pretalx-public:
pretalx-redis:
- Copy this to conf/pretalx.cfg (replace site URL, and mail configuration to fit your needs)
[filesystem]
# use PRETALX_FILESYSTEM_* env vars
[site]
debug = False
url = https://yoursite.com
[database]
backend = postgresql
name = pretalx
user = pretalx
password = yourdbpassword
host = pretalx-db
port = 5432
[mail]
from = [email protected]
host = your.youremail.com
port = 25
user = [email protected]
password = youremailpassword
tls = True
#ssl = True
[celery]
backend = redis://pretalx-redis/1
broker = redis://pretalx-redis/2
[redis]
location=redis://pretalx-redis/0
; Remove the following line if you are unsure about your redis' security
; to reduce impact if redis gets compromised.
sessions=true
- Start everything with
docker compose up -d
and to stopdocker compose down
- Visit your site URL after setting revers proxy on port 16800 and ssl (best solution this days Nginx Proxy Manager)
- Set up a user and an organizer by running docker exec -ti pretalx pretalx init.
- Set up a cronjob for periodic tasks like this 15,45 * * * * docker exec pretalx pretalx runperiodic
@marcosmarquesnic when you run docker for the first time you will get login information and url for admin control panel. From there you need to set event and that will create url that you can share.