Pretix Plugins

A community-maintained mono-repository of custom pretix plugins and tooling to build a bundled Docker image for use with the Co-op Cloud pretix recipe.


How it works

plugins/                   ← plugin source code lives here (Python packages)
  my-plugin/
    pretix_my_plugin/
    setup.py
plugins.txt                ← select which plugins go into the Docker image
Dockerfile                 ← builds the image from plugins.txt
.gitea/workflows/          ← CI: automatically builds & pushes image on every tag

Each plugin is a standard Python package inside plugins/. The plugins.txt file controls which of those plugins (and optionally any PyPI or external plugins) are installed into the final Docker image.

The resulting image is a drop-in replacement for pretix/standalone and is used via the optional compose.plugin.yml override in the pretix recipe.


Using the image in your pretix deployment

In your app .env file (managed by abra):

COMPOSE_FILE=compose.yml:compose.plugin.yml
PRETIX_PLUGIN_IMAGE=git.coopcloud.tech/<your-org>/pretix-plugins:1.0.0

If PRETIX_PLUGIN_IMAGE is not set, the standard pretix/standalone image is used — operators who do not need plugins are not affected at all.


Selecting plugins

Edit plugins.txt to choose which plugins are included in your image. Each non-empty, non-comment line is passed directly to pip install.

# Local plugins from this repo (recommended for custom plugins):
./plugins/attendance_confirm_plugin/
./plugins/selective_export_plugin/

# Community plugins from PyPI:
pretix-pages

# External plugins via Git URL:
git+https://git.coopcloud.tech/other-org/pretix-some-plugin.git@1.0.0

Comment out or remove a line to exclude a plugin from the image.


Building and publishing the image

Push a Git tag to trigger the Gitea Actions workflow:

git tag 1.0.0
git push origin 1.0.0

The CI pipeline will build and push:

  • git.coopcloud.tech/<your-org>/pretix-plugins:1.0.0
  • git.coopcloud.tech/<your-org>/pretix-plugins:latest

Manual

docker build -t git.coopcloud.tech/<your-org>/pretix-plugins:1.0.0 .
docker push git.coopcloud.tech/<your-org>/pretix-plugins:1.0.0

Contributing a plugin

  1. Create a new directory under plugins/ named after your plugin:

    plugins/my-new-plugin/
    
  2. Add a valid pretix plugin Python package inside it (see structure below).

  3. Add it to plugins.txt if you want it included in the default image build.

  4. Open a pull request.

Required plugin structure

plugins/my-new-plugin/
├── pretix_my_new_plugin/
│   ├── __init__.py
│   └── apps.py            ← AppConfig + PretixPluginMeta required
└── setup.py               ← entry_points for pretix.plugin required

See plugins/attendance_confirm_plugin/ for a fully working reference implementation.

Plugin checklist before opening a PR

  • setup.py contains a valid pretix.plugin entry point
  • apps.py contains AppConfig with a PretixPluginMeta inner class
  • Plugin installs cleanly with pip install ./plugins/my-new-plugin/
  • No hard-coded credentials or environment-specific configuration

Repository structure

pretix-plugin-catalogue/
├── README.md
├── Dockerfile                        ← builds the bundle image
├── plugins.txt                       ← controls which plugins are included
├── .gitea/
│   └── workflows/
│       └── docker.yml                ← CI: build & push on tag
└── plugins/
    └── example-plugin/               ← reference plugin implementation
        ├── pretix_example_plugin/
        │   ├── __init__.py
        │   └── apps.py
        └── setup.py

Credits

The plugins attendance_confirm_plugin and selective_export_plugin were developed by make IT social (https://makeitsocial.net/). Thanks!

Description
Repo for custom pretix plugins
Readme 71 KiB
Languages
Python 65.6%
JavaScript 27.5%
HTML 5.5%
Dockerfile 1.4%