Zum Hauptinhalt springen
Version: 0.3.0

Konfiguration

Openbeehive wird vollständig über Umgebungsvariablen konfiguriert. Diese Seite ist die vollständige Referenz.

Du kannst diese Variablen in deiner Shell, in einer .env-Datei neben der Binärdatei, in deiner docker compose-Datei oder über den Secrets-Manager deiner Hosting-Plattform setzen. Der Server liest sie einmal beim Start, daher werden Änderungen erst nach einem Neustart wirksam.

:::tip Klein anfangen Du brauchst nur eine Handvoll davon, um loszulegen. Für einen Heimserver mit einem Benutzer setzt du BEEHIVE_DEPLOYMENT_PROFILE=selfhost, ein BEEHIVE_SESSION_SECRET und lässt den Rest auf den Standardwerten. Siehe den Schnellstart, um in wenigen Minuten loszulegen. :::

Wie das Deployment-Profil funktioniert​

Die mit Abstand wichtigste Einstellung ist BEEHIVE_DEPLOYMENT_PROFILE. Sie wählt sinnvolle Standardwerte für alles andere, sodass du keinen vollständigen Stack von Hand ausbuchstabieren musst.

ProfilDatenbank-StandardBlob-Speicher-StandardVorgesehen für
selfhostSQLite (Datei)Lokales DateisystemEine einzelne Binärdatei, kein Docker, ein Host
cloudPostgreSQLMinIO / S3Das gehostete, mandantenfähige Deployment

Das Profil setzt nur Standardwerte. Jede Variable, die du explizit setzt, gewinnt immer. Du kannst zum Beispiel das selfhost-Profil verwenden, es aber auf PostgreSQL zeigen lassen, indem du BEEHIVE_DATABASE_DRIVER und BEEHIVE_DATABASE_DSN selbst setzt.

hinweis

Die beiden Profile werden ausführlich auf ihren eigenen Seiten dokumentiert: Einzelne Binärdatei und Docker. Diese Seite konzentriert sich auf die Variablen selbst.

Deployment-Profil​

VariableStandardBeschreibung
BEEHIVE_DEPLOYMENT_PROFILEselfhostWählt den voreingestellten Stack: selfhost oder cloud. Setzt Standardwerte für Datenbank und Blob-Speicher.

HTTP-Server​

VariableStandardBeschreibung
BEEHIVE_ADDR:8080Adresse und Port, auf dem der Server lauscht. Verwende 127.0.0.1:8080, um hinter einem Reverse Proxy nur an localhost zu binden.
BEEHIVE_PUBLIC_BASE_URLhttp://localhost:8080Die öffentliche URL, unter der Benutzer die App erreichen. Wird für OIDC-Weiterleitungen, Einladungs- und Bestätigungslinks sowie Passkey-Standardwerte verwendet. Setze dies in der Produktion auf deine echte Domain.
BEEHIVE_HTTP_READ_HEADER_TIMEOUT10sZeit zum Lesen der Header einer Anfrage.
BEEHIVE_HTTP_READ_TIMEOUT0Lesezeitlimit für die gesamte Anfrage; 0 bedeutet keines.
BEEHIVE_HTTP_WRITE_TIMEOUT0Schreibzeitlimit für Antworten; 0 bedeutet keines.
BEEHIVE_HTTP_IDLE_TIMEOUT120sWie lange eine ungenutzte Keep-Alive-Verbindung offen bleibt.
BEEHIVE_HTTP_SHUTDOWN_TIMEOUT15sGnadenfrist für laufende Anfragen beim Herunterfahren.
vorsicht

BEEHIVE_PUBLIC_BASE_URL muss mit der Adresse übereinstimmen, die Benutzer tatsächlich aufrufen. Ist sie falsch, zeigen Login-Weiterleitungen und Einladungslinks an den falschen Ort.

Eingebettete Web-App​

Der Server kann die SvelteKit-PWA selbst ausliefern, sodass eine einzelne Binärdatei sowohl die API als auch das Frontend bereitstellt.

VariableStandardBeschreibung
BEEHIVE_SERVE_WEBtrueWenn true, liefert der Server die gebündelte Web-App aus. Setze false, wenn du das Frontend separat hostest.
BEEHIVE_WEB_DIR(leer)Pfad zu den gebauten Web-Assets. Leer lassen, um die in der Binärdatei eingebetteten Assets zu verwenden.

CORS​

Cross-Origin-Einstellungen sind wichtig, wenn die Web-App von einem anderen Origin als die API ausgeliefert wird.

VariableStandardBeschreibung
BEEHIVE_CORS_ALLOWED_ORIGINS*Kommagetrennte Liste erlaubter Origins. Beschränke dies in der Produktion auf deine Domain.
BEEHIVE_CORS_ALLOW_CREDENTIALStrueOb Cross-Origin-Anfragen mit Anmeldedaten (Cookies, Auth-Header) erlaubt sind.
vorsicht

Ein Platzhalter-Origin (*) in Kombination mit BEEHIVE_CORS_ALLOW_CREDENTIALS=true ist freizügig. Wenn du die App von einem einzelnen Origin auslieferst, setze BEEHIVE_CORS_ALLOWED_ORIGINS auf genau diesen Origin.

Synchronisierung​

VariableStandardBeschreibung
BEEHIVE_NODE_IDserverKennung für diesen Knoten im Sync-Protokoll. Wird von der Hybrid Logical Clock zur Kennzeichnung von Ereignissen verwendet. Halte sie stabil und pro Server eindeutig.

Die konfliktfreie Sync-Engine (HLC plus Last-Writer-Wins pro Feld und Add-Wins-OR-Sets) benötigt für jeden Teilnehmer eine stabile Identität. Das Ändern von BEEHIVE_NODE_ID auf einem laufenden Server wird nicht empfohlen.

Datenbank​

VariableStandardBeschreibung
BEEHIVE_DATABASE_DRIVERaus ProfilDatenbank-Engine: postgres, mysql oder sqlite.
BEEHIVE_DATABASE_DSNaus ProfilVerbindungszeichenfolge für den gewählten Treiber (siehe unten).

Beispiel-DSNs nach Treiber:

# SQLite (selfhost default) — a single file with write-ahead logging
BEEHIVE_DATABASE_DRIVER=sqlite
BEEHIVE_DATABASE_DSN="file:openbeehive.db?_pragma=journal_mode(WAL)"

# PostgreSQL (cloud default)
BEEHIVE_DATABASE_DRIVER=postgres
BEEHIVE_DATABASE_DSN="postgres://user:pass@host:5432/db?sslmode=disable"

# MySQL
BEEHIVE_DATABASE_DRIVER=mysql
BEEHIVE_DATABASE_DSN="user:pass@tcp(host:3306)/openbeehive?parseTime=true"

Für Treiberauswahl, Tuning und Migrationshinweise siehe Datenbanken.

Blob-Speicher​

Fotos und andere Anhänge werden als Blobs gespeichert, entweder auf dem lokalen Dateisystem oder in einem S3-kompatiblen Objektspeicher.

VariableStandardBeschreibung
BEEHIVE_BLOB_BACKENDaus ProfilSpeicher-Backend: fs (lokales Dateisystem) oder minio (MinIO / S3).
BEEHIVE_BLOB_DIR./data/blobsVerzeichnis für Blobs, wenn BEEHIVE_BLOB_BACKEND=fs.
BEEHIVE_BLOB_PUBLIC_URL<BEEHIVE_PUBLIC_BASE_URL>/filesBasis-URL, unter der gespeicherte Dateien an Browser ausgeliefert werden. Nur ändern, wenn ein Proxy oder CDN das Blob-Verzeichnis von woanders ausliefert.
BEEHIVE_MINIO_ENDPOINTlocalhost:9000Host und Port des MinIO- / S3-Endpunkts.
BEEHIVE_MINIO_ACCESS_KEYminioadminZugriffsschlüssel für den Objektspeicher.
BEEHIVE_MINIO_SECRET_KEYminioadminGeheimer Schlüssel für den Objektspeicher.
BEEHIVE_MINIO_BUCKETopenbeehiveBucket-Name, in dem Blobs gespeichert werden.
BEEHIVE_MINIO_USE_SSLfalseSetze true, um über HTTPS mit dem Endpunkt zu verbinden.

Die MINIO_*-Variablen werden nur verwendet, wenn BEEHIVE_BLOB_BACKEND=minio. Für vollständige Hinweise siehe Speicher.

Sitzung und Authentifizierung​

VariableStandardBeschreibung
BEEHIVE_SESSION_SECRET(leer)Geheimnis zum Signieren von Sitzungs-Cookies. Erzeuge eines mit openssl rand -base64 32. In der Produktion erforderlich.
BEEHIVE_SESSION_TTL720hWie lange eine Sitzung dauert, bevor eine erneute Authentifizierung erforderlich ist (z. B. sind 720h 30 Tage).
gefahr

Setze immer ein starkes, eindeutiges BEEHIVE_SESSION_SECRET und halte es geheim. Wenn es durchsickert oder sich ändert, werden alle bestehenden Sitzungen ungültig.

E-Mail, Passwort & Onboarding​

Eingebaute Konten für Mehrbenutzer-Instanzen ohne externen Identitätsanbieter. Der Instanz-Admin ist ein eigenes Konto, das du konfigurierst – nicht die erste Person, die sich registriert. Siehe Authentifizierung.

VariableStandardBeschreibung
BEEHIVE_PASSWORD_AUTHan für cloud, aus für selfhostE-Mail-/Passwort-Registrierung und -Anmeldung aktivieren. Wird auch durch BEEHIVE_DEMO=true impliziert.
BEEHIVE_ADMIN_EMAIL(leer)E-Mail des Instanz-Admins. Erforderlich, sobald die Passwort-Anmeldung aktiv ist. Das Konto wird bei jedem Start sichergestellt: angelegt, falls es fehlt, und seine Rolle auf Admin gesetzt. Eine Registrierung vergibt nie die Admin-Rolle.
BEEHIVE_ADMIN_PASSWORD(leer)Passwort des Instanz-Admins, mindestens 8 Zeichen. Bei jedem Start maßgeblich: Das gespeicherte Passwort wird auf diesen Wert zurückgesetzt – das dient zugleich als Passwort-Wiederherstellung.
BEEHIVE_REGISTRATIONtrueOffene Selbstregistrierung. Auf false setzen für eine Instanz nur auf Einladung: Abgesehen vom konfigurierten Admin können Konten nur über Einladungslinks erstellt werden, und der Anmeldebildschirm zeigt einen entsprechenden Hinweis.
BEEHIVE_EMAIL_VERIFICATIONfalseE-Mail-Bestätigung verlangen, bevor sich ein neues Konto anmelden kann.
BEEHIVE_SMTP_HOST(leer)SMTP-Server für Bestätigungs-/Einladungs-E-Mails. Wenn leer, werden Links stattdessen ins Log geschrieben.
BEEHIVE_SMTP_PORT587SMTP-Port.
BEEHIVE_SMTP_USER(leer)SMTP-Benutzername.
BEEHIVE_SMTP_PASS(leer)SMTP-Passwort.
BEEHIVE_SMTP_FROMOpenbeehive <no-reply@openbeehive.org>Absenderadresse für ausgehende E-Mails.

Demo-Mandant​

Installiert ein Demo-Schaukonto und einen Demo-Mandanten. Standardmäßig deaktiviert — siehe Demo-Modus.

VariableStandardBeschreibung
BEEHIVE_DEMOfalseEin Demo-Konto + Mandant installieren (15 Bienenvölker auf 4 Bienenständen, stündlich zurückgesetzt). Impliziert BEEHIVE_PASSWORD_AUTH=true.
BEEHIVE_DEMO_AUTOLOGINfalseAnonyme Besucher direkt in die Demo anmelden, statt den Anmeldebildschirm zu zeigen. Nur für reine Schaufenster-Hosts; auf einer Instanz mit echten Nutzern aus lassen.
BEEHIVE_DEMO_EMAILdemo@app.openbeehive.orgE-Mail des Demo-Kontos.
BEEHIVE_DEMO_PASSWORDdemoPasswort des Demo-Kontos.

WebAuthn / Passkeys​

Optionale passwortlose Authentifizierung mit Passkeys.

VariableStandardBeschreibung
BEEHIVE_WEBAUTHN_ENABLEDfalseAktiviert die Anmeldung per WebAuthn / Passkey.
BEEHIVE_WEBAUTHN_RP_IDHost von BEEHIVE_PUBLIC_BASE_URLRelying-Party-ID, normalerweise deine reine Domain (z. B. openbeehive.org).
BEEHIVE_WEBAUTHN_RP_ORIGINSBEEHIVE_PUBLIC_BASE_URLKommagetrennte erlaubte Origins für WebAuthn-Zeremonien.
BEEHIVE_WEBAUTHN_RP_DISPLAY_NAMEOpenbeehiveMenschenlesbarer Name, der Benutzern während der Registrierung angezeigt wird.

OIDC-Anbieter​

Anmeldung über externe Identitätsanbieter via OpenID Connect. Mehrere Anbieter können gleichzeitig aktiviert werden.

VariableStandardBeschreibung
BEEHIVE_OIDC_PROVIDERS(leer)Kommagetrennte Liste aktivierter Anbieter, z. B. google,keycloak.
BEEHIVE_OIDC_REDIRECT_URL<BEEHIVE_PUBLIC_BASE_URL>/auth/callbackDie Callback-URL, zu der Anbieter nach der Anmeldung weiterleiten.

Jeder Anbieter hat dann seine eigenen Variablen: BEEHIVE_OIDC_<NAME>_ISSUER, BEEHIVE_OIDC_<NAME>_CLIENT_ID, BEEHIVE_OIDC_<NAME>_CLIENT_SECRET und optional BEEHIVE_OIDC_<NAME>_SCOPES (Standard openid,profile,email), wobei <NAME> der Anbietername in Großbuchstaben ist. Zum Beispiel:

# Google
BEEHIVE_OIDC_GOOGLE_ISSUER=https://accounts.google.com
BEEHIVE_OIDC_GOOGLE_CLIENT_ID=...
BEEHIVE_OIDC_GOOGLE_CLIENT_SECRET=...
BEEHIVE_OIDC_GOOGLE_SCOPES=openid,email,profile

# Keycloak
BEEHIVE_OIDC_KEYCLOAK_ISSUER=https://id.example.com/realms/beekeepers
BEEHIVE_OIDC_KEYCLOAK_CLIENT_ID=...
BEEHIVE_OIDC_KEYCLOAK_CLIENT_SECRET=...

:::tip Einzelbenutzer, keine Anmeldung Für eine persönliche selbst gehostete Instanz kannst du die Anmeldung komplett überspringen: Lass BEEHIVE_PASSWORD_AUTH aus (der selfhost-Standard), BEEHIVE_OIDC_PROVIDERS leer und BEEHIVE_WEBAUTHN_ENABLED=false. Die App läuft dann im Einzelbenutzermodus ohne Anmeldeschritt. :::

Für Anleitungen zur Anbietereinrichtung, Weiterleitungs-URLs und Sicherheitshinweise siehe Authentifizierung.

Ein minimales selfhost-Beispiel​

BEEHIVE_DEPLOYMENT_PROFILE=selfhost
BEEHIVE_ADDR=:8080
BEEHIVE_PUBLIC_BASE_URL=https://hive.example.com
BEEHIVE_SESSION_SECRET=replace-with-openssl-rand-base64-32
# Database and blob storage use selfhost defaults (SQLite + local files)
# No OIDC, no WebAuthn, no password auth — single-user mode

Wenn du für eine Familien- oder Vereinsinstanz die Passwort-Anmeldung aktivierst, ergänze auch den eigenen Admin:

BEEHIVE_PASSWORD_AUTH=true
BEEHIVE_ADMIN_EMAIL=du@example.com
BEEHIVE_ADMIN_PASSWORD=ein-langes-passwort-das-du-wiederherstellen-kannst

Das ist alles, was ein einzelner Imker braucht. Stelle einen Reverse Proxy für HTTPS davor, und du bist bereit, Aufzeichnungen zu führen.