Zum Inhalt springen

BazarPro selbst hosten

BazarPro ist Open Source (MIT). Mit Docker Compose läuft es auf einem einzelnen Server – mit eigener Datenbank, HTTPS über Let’s Encrypt und ohne dass du etwas selbst bauen musst. Plane für die Einrichtung etwa eine halbe Stunde ein.

Du brauchst:

  • einen Linux-Server mit Docker und Docker Compose, mindestens 2 GB RAM, die Ports 80 und 443 müssen erreichbar sein
  • eine Domain, bei der du DNS-Einträge anlegen kannst
  • ein E-Mail-Postfach mit SMTP-Zugang – BazarPro verschickt darüber die Bestätigungscodes bei Registrierung und Passwort-Reset
Dienst Aufgabe
traefik Nimmt alle Anfragen entgegen und holt die HTTPS-Zertifikate bei Let’s Encrypt.
app Die BazarPro-Webseite.
convex-backend Datenbank, Dateispeicher und Server-Logik (Convex, selbst gehostet). Die Daten liegen in einem Docker-Volume.
convex-init Läuft bei jedem Start einmal durch: spielt die BazarPro-Funktionen ins Backend ein und überträgt deine Einstellungen. Danach beendet es sich.
  1. DNS-Einträge anlegen. Drei Namen müssen auf die IP-Adresse deines Servers zeigen. Am Beispiel der Domain basar.example.org:

    Name Wofür
    basar.example.org die BazarPro-Webseite
    convex.basar.example.org die Schnittstelle zum Backend
    convex-site.basar.example.org Anmeldung (z. B. Rückruf von GitHub oder Google)

    Am einfachsten legst du einen A-Eintrag (und bei IPv6 einen AAAA-Eintrag) für basar.example.org an und für die beiden anderen einen CNAME auf basar.example.org.

  2. Dateien herunterladen. Auf dem Server in einem neuen Ordner:

    Terminal-Fenster
    mkdir bazarpro && cd bazarpro
    curl -O https://raw.githubusercontent.com/BazarPro/core/main/docker-compose.selfhost.yml
    curl -o .env https://raw.githubusercontent.com/BazarPro/core/main/.env.selfhost.example
  3. Einstellungen eintragen. Öffne die Datei .env und trage mindestens ein:

    • DOMAIN – deine Domain ohne https://, z. B. basar.example.org
    • ACME_EMAIL – deine E-Mail-Adresse, Let’s Encrypt warnt dich dort vor ablaufenden Zertifikaten
    • BAZARPRO_VERSION – die Version, die du installieren möchtest. Alle Versionen findest du unter Releases.
    • AUTH_SMTP_… und AUTH_EMAIL_FROM – die Zugangsdaten deines E-Mail-Postfachs
  4. BazarPro starten.

    Terminal-Fenster
    docker compose -f docker-compose.selfhost.yml up -d

    Beim ersten Start dauert es ein bis zwei Minuten, bis alle Images geladen sind und convex-init fertig ist. Den Fortschritt siehst du mit:

    Terminal-Fenster
    docker compose -f docker-compose.selfhost.yml logs -f convex-init

    Am Ende steht dort „Convex ist eingerichtet“.

  5. Konto anlegen. Öffne deine Domain im Browser, klicke auf Registrieren und bestätige deine E-Mail-Adresse mit dem Code aus der Bestätigungsmail.

  6. Dich zum Administrator machen. Administratoren geben öffentliche Basare frei und verwalten Nutzer:

    Terminal-Fenster
    docker compose -f docker-compose.selfhost.yml run --rm convex-init admin du@example.org

    Nach einem Neuladen der Seite erscheint in der Seitenleiste der Bereich Admin.

Wenn du BazarPro nur testen möchtest, kannst du Beispieldaten laden: mehrere Basare, Artikel und Konten, unter anderem admin@bazarpro.de, user1@bazarpro.de (Veranstalter) und seller@bazarpro.de (Verkäufer), alle mit dem Passwort 123456.

Terminal-Fenster
docker compose -f docker-compose.selfhost.yml run --rm convex-init seed

Optional können sich Nutzer mit ihrem GitHub- oder Google-Konto anmelden. Lege dafür beim Anbieter eine OAuth-App an und trage als Callback-URL ein:

  • GitHub: https://convex-site.<DOMAIN>/api/auth/callback/github
  • Google: https://convex-site.<DOMAIN>/api/auth/callback/google

Client-ID und Secret kommen in die .env (AUTH_GITHUB_ID, AUTH_GITHUB_SECRET bzw. AUTH_GOOGLE_ID, AUTH_GOOGLE_SECRET). Danach BazarPro neu starten, siehe unten.

Nach jeder Änderung an der .env und für ein Update auf eine neue Version – vorher BAZARPRO_VERSION anpassen:

Terminal-Fenster
docker compose -f docker-compose.selfhost.yml pull
docker compose -f docker-compose.selfhost.yml up -d

convex-init läuft dabei erneut und spielt die neue Version der Funktionen ein. Deine Daten bleiben erhalten.

Alle Daten – Konten, Basare, Artikel und Bilder – liegen im Docker-Volume bazarpro_convex_data. Eine vollständige Sicherung als ZIP-Datei erstellst du so:

Terminal-Fenster
docker compose -f docker-compose.selfhost.yml run --rm -T --entrypoint sh convex-init -c \
'export CONVEX_SELF_HOSTED_ADMIN_KEY=$(cat /keys/admin_key) &&
npx convex export --include-file-storage --path /tmp/backup.zip >&2 && cat /tmp/backup.zip' \
> backup-$(date +%F).zip

Bewahre die Sicherung an einem anderen Ort als dem Server auf. Am besten richtest du dafür einen täglichen Cronjob ein.

Wiederherstellen: Der folgende Befehl ersetzt alle aktuellen Daten durch den Stand der Sicherung:

Terminal-Fenster
docker compose -f docker-compose.selfhost.yml run --rm -T -v "$PWD/backup-2026-10-09.zip:/tmp/backup.zip:ro" \
--entrypoint sh convex-init -c \
'export CONVEX_SELF_HOSTED_ADMIN_KEY=$(cat /keys/admin_key) && npx convex import --replace-all --yes /tmp/backup.zip'

Für einen direkten Blick in die Datenbank gibt es das Convex-Dashboard. Es braucht einen weiteren DNS-Namen, convex-dashboard.<DOMAIN>:

Terminal-Fenster
docker compose -f docker-compose.selfhost.yml --profile dashboard up -d
# Admin-Key für die Anmeldung im Dashboard:
docker compose -f docker-compose.selfhost.yml exec convex-backend ./generate_admin_key.sh