Initial Testversion
This commit is contained in:
commit
9da19bc533
200
README.md
Normal file
200
README.md
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
# pretix-Testinstanz unter WSL mit Docker
|
||||
|
||||
Dieses Verzeichnis enthaelt ein lokales Test-Setup fuer pretix unter WSL Ubuntu 22.04 mit Docker Desktop.
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Windows 11 mit installiertem Docker Desktop
|
||||
- In Docker Desktop: WSL Integration fuer deine Ubuntu-Distribution aktivieren
|
||||
- Die Dateien sollten im Linux-Dateisystem liegen, also z. B. unter `/home/<user>/...` und nicht unter `/mnt/c/...`
|
||||
|
||||
## Start
|
||||
|
||||
1. Datenverzeichnis anlegen und fuer den pretix-Container beschreibbar machen:
|
||||
|
||||
```bash
|
||||
mkdir -p data
|
||||
sudo chown -R 15371:15371 data
|
||||
```
|
||||
|
||||
2. Container starten:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
3. Logs pruefen, bis pretix sauber hochgefahren ist:
|
||||
|
||||
```bash
|
||||
docker compose logs -f pretix
|
||||
```
|
||||
|
||||
Optional kannst du auch den periodischen Cronlauf pruefen:
|
||||
|
||||
```bash
|
||||
docker compose logs -f pretix-cron
|
||||
```
|
||||
|
||||
4. Im Browser oeffnen:
|
||||
|
||||
- pretix: http://localhost:8345/control/
|
||||
- Test-Mailbox: http://localhost:8025
|
||||
|
||||
## Standardzugang
|
||||
|
||||
Laut offizieller pretix-Dokumentation ist nach dem ersten Start ein Admin-Zugang unter `admin@localhost` mit dem Passwort `admin` verfuegbar. Das Passwort solltest du direkt nach dem Login aendern.
|
||||
|
||||
## Erste Schritte in pretix
|
||||
|
||||
Ja: Nach dem ersten Login ist ein Organizer der erste sinnvolle Schritt. Der Organizer ist in pretix die organisatorische Einheit, unter der spaeter Events, Produkte, Rechnungen und Einstellungen verwaltet werden.
|
||||
|
||||
### Empfohlene Reihenfolge fuer die erste Einrichtung
|
||||
|
||||
1. Passwort des Admin-Benutzers aendern.
|
||||
2. Einen Organizer anlegen.
|
||||
3. Ein Test-Event anlegen.
|
||||
4. Mindestens ein Ticketprodukt anlegen.
|
||||
5. Den Shop im Frontend pruefen.
|
||||
6. Eine Testbestellung ausloesen.
|
||||
7. E-Mail-Eingang in Mailpit kontrollieren.
|
||||
|
||||
### 1. Organizer anlegen
|
||||
|
||||
- Im Backend auf `Organizer erstellen` klicken.
|
||||
- Einen Namen vergeben, z. B. `Test Organizer`.
|
||||
- Eine kurze Kennung oder einen Slug vergeben, falls pretix danach fragt.
|
||||
- Adresse, E-Mail und weitere Stammdaten kannst du fuer den Test zunaechst minimal ausfuellen und spaeter nachziehen.
|
||||
|
||||
### 2. Event anlegen
|
||||
|
||||
- Innerhalb des Organizers ein neues Event erstellen.
|
||||
- Als Titel z. B. `Testevent 2026` waehlen.
|
||||
- Eine Zeitzone setzen, sinnvollerweise `Europe/Berlin`.
|
||||
- Ein Datum in der Zukunft waehlen, damit das Event nicht direkt als abgelaufen wirkt.
|
||||
- Die Standardwaehrung sollte in diesem Setup bereits auf `EUR` stehen.
|
||||
|
||||
### 3. Ticketprodukt anlegen
|
||||
|
||||
- Im Event zu den Produkten wechseln.
|
||||
- Ein neues Produkt vom Typ Ticket anlegen.
|
||||
- Beispielwerte fuer den Test:
|
||||
- Name: `Standardticket`
|
||||
- Preis: `10,00 EUR`
|
||||
- Verfuegbarkeit: z. B. `100`
|
||||
- Das Produkt speichern und sicherstellen, dass es sichtbar und verkaeuflich ist.
|
||||
|
||||
### 4. Shop testen
|
||||
|
||||
- Im Event die Vorschau oder den Shop-Link oeffnen.
|
||||
- Pruefen, ob das Ticket im Frontend erscheint.
|
||||
- Ein Ticket in den Warenkorb legen und eine Testbestellung abschicken.
|
||||
|
||||
### 5. E-Mails pruefen
|
||||
|
||||
- Die Testinstanz liefert E-Mails an Mailpit aus, nicht an ein echtes Postfach.
|
||||
- Mailpit erreichst du unter `http://localhost:8025`.
|
||||
- Dort solltest du Bestell- oder System-E-Mails fuer den Test sehen.
|
||||
|
||||
### Sinnvoller Minimaltest
|
||||
|
||||
Wenn du pretix nur einmal durchklicken willst, reicht dieser Ablauf:
|
||||
|
||||
1. Organizer erstellen.
|
||||
2. Event erstellen.
|
||||
3. Ein Ticketprodukt anlegen.
|
||||
4. Shop-Link oeffnen.
|
||||
5. Testbestellung absenden.
|
||||
6. E-Mail in Mailpit kontrollieren.
|
||||
|
||||
---
|
||||
|
||||
## Praxisbeispiel: Kostenlose Veranstaltungsreihe Mo-Do mit Anmeldepflicht
|
||||
|
||||
### Warum "Quota braucht ein Datum" – und was das bedeutet
|
||||
|
||||
pretix unterscheidet zwischen:
|
||||
|
||||
- **Einzelevent**: Ein festes Datum, eine einzige Quota. Keine Datumsauswahl in der Quota noetig.
|
||||
- **Veranstaltungsreihe** (Sub-Events): Mehrere Termine unter einem Event. Jede Quota kann sich auf bestimmte Termine beziehen.
|
||||
|
||||
Wenn du bei der Quota ein Datum auswaehlen willst (oder musst), aber keines angezeigt wird, bedeutet das: das Event ist noch kein Serienevent. Sub-Events muessen erst aktiviert werden.
|
||||
|
||||
### Schritt 1: Sub-Events am Event aktivieren
|
||||
|
||||
1. Ins Event wechseln → **Einstellungen** → **Allgemein** (oder **Konfiguration**).
|
||||
2. Die Option **"Dieses Event hat mehrere Termine / Sub-Events"** (englisch: *"This event has multiple dates"*) aktivieren.
|
||||
3. Speichern.
|
||||
|
||||
Danach erscheint im linken Menue ein neuer Punkt: **Termine** (oder **Sub-Events**).
|
||||
|
||||
### Schritt 2: Die einzelnen Termine anlegen
|
||||
|
||||
Jeden Wochentermin einmal anlegen. Beispiel fuer eine Woche:
|
||||
|
||||
| Name | Datum | Beginn | Ende |
|
||||
|------------------|-------------|--------|-------|
|
||||
| Montag-Session | 13.04.2026 | 17:30 | 18:00 |
|
||||
| Dienstag-Session | 14.04.2026 | 17:30 | 18:00 |
|
||||
| Mittwoch-Session | 15.04.2026 | 17:30 | 18:00 |
|
||||
| Donnerstag-Session | 16.04.2026 | 17:30 | 18:00 |
|
||||
|
||||
Fuer laufende Serien empfiehlt es sich, alle Termine einer Woche auf einmal anzulegen oder eine Woche spater zu ergaenzen.
|
||||
|
||||
> **Tipp**: Es gibt keine automatische Wiederholung in pretix. Jeder Termin muss einzeln angelegt werden – entweder manuell oder per API.
|
||||
|
||||
### Schritt 3: Kostenfreies Produkt anlegen (falls nicht schon passiert)
|
||||
|
||||
- Name z. B. `Anmeldung`
|
||||
- Preis: `0,00 EUR`
|
||||
- Das Produkt muss trotz Nullpreis angelegt sein, damit pretix die Buchung als "Bestellung" behandelt.
|
||||
|
||||
### Schritt 4: Quota anlegen
|
||||
|
||||
- Zu **Quotas** wechseln → neue Quota anlegen.
|
||||
- Kontingent z. B. `20` (Maximale Teilnehmerzahl pro Termin).
|
||||
- Unter **"Gilt fuer Termine"** jetzt die gewuenschten Sub-Events auswaehlen.
|
||||
- Jeder Termin bekommt idealerweise eine eigene Quota, damit die Kapazitaet pro Tag separat gilt.
|
||||
|
||||
### Schritt 5: Shop pruefen
|
||||
|
||||
- Den Shop-Link des Events oeffnen.
|
||||
- Eine der Termine auswaehlen und kostenlos anmelden.
|
||||
- Bestaetigung in Mailpit pruefen (`http://localhost:8025`).
|
||||
|
||||
### Zusammenfassung des Datenmodells fuer diesen Fall
|
||||
|
||||
```
|
||||
Organizer
|
||||
└── Event "Wochentreffen" (Sub-Events aktiviert)
|
||||
├── Sub-Event "Montag 13.04."
|
||||
├── Sub-Event "Dienstag 14.04."
|
||||
├── Sub-Event "Mittwoch 15.04."
|
||||
├── Sub-Event "Donnerstag 16.04."
|
||||
├── Produkt "Anmeldung" (0,00 EUR)
|
||||
└── Quotas (je Termin, z. B. 20 Plaetze)
|
||||
```
|
||||
|
||||
## Cron-Hinweis
|
||||
|
||||
pretix erwartet, dass regelmaessig `pretix cron` ausgefuehrt wird. In diesem Test-Setup uebernimmt das der Dienst `pretix-cron` automatisch alle 5 Minuten. Direkt nach dem ersten Start kann die Warnung im Dashboard noch kurz sichtbar sein, bis der erste Lauf erfolgt ist.
|
||||
|
||||
## Stoppen und Aufraeumen
|
||||
|
||||
- Stoppen:
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
- Stoppen und auch Datenbank/Redis-Daten entfernen:
|
||||
|
||||
```bash
|
||||
docker compose down -v
|
||||
```
|
||||
|
||||
- Das Verzeichnis `data/` bleibt dabei erhalten. Wenn du wirklich ganz von vorn beginnen willst, kannst du es zusaetzlich loeschen.
|
||||
|
||||
## Wichtige Hinweise
|
||||
|
||||
- Diese Konfiguration ist nur fuer lokale Tests gedacht.
|
||||
- Fuer produktiven Betrieb solltest du der offiziellen pretix-Doku folgen und HTTPS, Reverse Proxy, Backup und Härtung sauber einrichten.
|
||||
113
docker-compose.yml
Normal file
113
docker-compose.yml
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
services:
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: pretix
|
||||
POSTGRES_USER: pretix
|
||||
POSTGRES_PASSWORD: ${PRETIX_DB_PASSWORD:-pretix_test_password}
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U pretix -d pretix"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
command: redis-server --save 60 1 --loglevel warning
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
|
||||
mailpit:
|
||||
image: axllent/mailpit:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8025:8025"
|
||||
|
||||
pretix:
|
||||
image: pretix/standalone:stable
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
mailpit:
|
||||
condition: service_started
|
||||
ports:
|
||||
- "127.0.0.1:8345:80"
|
||||
environment:
|
||||
PRETIX_PRETIX_INSTANCE_NAME: "pretix Testinstanz"
|
||||
PRETIX_PRETIX_URL: "http://localhost:8345"
|
||||
PRETIX_PRETIX_CURRENCY: "EUR"
|
||||
PRETIX_PRETIX_DATADIR: "/data"
|
||||
PRETIX_LOCALE_DEFAULT: "de"
|
||||
PRETIX_LOCALE_TIMEZONE: "Europe/Berlin"
|
||||
PRETIX_DATABASE_BACKEND: "postgresql"
|
||||
PRETIX_DATABASE_NAME: "pretix"
|
||||
PRETIX_DATABASE_USER: "pretix"
|
||||
PRETIX_DATABASE_PASSWORD: "${PRETIX_DB_PASSWORD:-pretix_test_password}"
|
||||
PRETIX_DATABASE_HOST: "db"
|
||||
PRETIX_DATABASE_PORT: "5432"
|
||||
PRETIX_MAIL_FROM: "pretix-test@localhost"
|
||||
PRETIX_MAIL_HOST: "mailpit"
|
||||
PRETIX_MAIL_PORT: "1025"
|
||||
PRETIX_MAIL_TLS: "off"
|
||||
PRETIX_MAIL_SSL: "off"
|
||||
PRETIX_REDIS_LOCATION: "redis://redis:6379/0"
|
||||
PRETIX_REDIS_SESSIONS: "true"
|
||||
PRETIX_CELERY_BACKEND: "redis://redis:6379/1"
|
||||
PRETIX_CELERY_BROKER: "redis://redis:6379/2"
|
||||
volumes:
|
||||
- pretix-data:/data
|
||||
command: all
|
||||
|
||||
pretix-cron:
|
||||
image: pretix/standalone:stable
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
mailpit:
|
||||
condition: service_started
|
||||
pretix:
|
||||
condition: service_started
|
||||
environment:
|
||||
PRETIX_PRETIX_INSTANCE_NAME: "pretix Testinstanz"
|
||||
PRETIX_PRETIX_URL: "http://localhost:8345"
|
||||
PRETIX_PRETIX_CURRENCY: "EUR"
|
||||
PRETIX_PRETIX_DATADIR: "/data"
|
||||
PRETIX_LOCALE_DEFAULT: "de"
|
||||
PRETIX_LOCALE_TIMEZONE: "Europe/Berlin"
|
||||
PRETIX_DATABASE_BACKEND: "postgresql"
|
||||
PRETIX_DATABASE_NAME: "pretix"
|
||||
PRETIX_DATABASE_USER: "pretix"
|
||||
PRETIX_DATABASE_PASSWORD: "${PRETIX_DB_PASSWORD:-pretix_test_password}"
|
||||
PRETIX_DATABASE_HOST: "db"
|
||||
PRETIX_DATABASE_PORT: "5432"
|
||||
PRETIX_MAIL_FROM: "pretix-test@localhost"
|
||||
PRETIX_MAIL_HOST: "mailpit"
|
||||
PRETIX_MAIL_PORT: "1025"
|
||||
PRETIX_MAIL_TLS: "off"
|
||||
PRETIX_MAIL_SSL: "off"
|
||||
PRETIX_REDIS_LOCATION: "redis://redis:6379/0"
|
||||
PRETIX_REDIS_SESSIONS: "true"
|
||||
PRETIX_CELERY_BACKEND: "redis://redis:6379/1"
|
||||
PRETIX_CELERY_BROKER: "redis://redis:6379/2"
|
||||
volumes:
|
||||
- pretix-data:/data
|
||||
entrypoint:
|
||||
- /bin/sh
|
||||
- -c
|
||||
command:
|
||||
- 'while true; do pretix cron; sleep 300; done'
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
redis-data:
|
||||
pretix-data:
|
||||
Loading…
Reference in New Issue
Block a user