Zum Hauptinhalt springen
Version: 0.1.0

Konfiguration

Openbeehive wird vollständig über Umgebungsvariablen konfiguriert. Diese Seite ist die vollständige Referenz, gruppiert genau so, wie sie in .env.example erscheinen.

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 QR-Deeplinks, OIDC-Weiterleitungen und absolute Links verwendet. Setze dies in der Produktion auf deine echte Domain.
vorsicht

BEEHIVE_PUBLIC_BASE_URL muss mit der Adresse übereinstimmen, die Benutzer tatsächlich aufrufen. Ist sie falsch, zeigen QR-Etiketten, Login-Weiterleitungen und geteilte Links 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_MINIO_ENDPOINT(leer)Host und Port des MinIO- / S3-Endpunkts.
BEEHIVE_MINIO_ACCESS_KEY(leer)Zugriffsschlüssel für den Objektspeicher.
BEEHIVE_MINIO_SECRET_KEY(leer)Geheimer Schlüssel für den Objektspeicher.
BEEHIVE_MINIO_BUCKET(leer)Bucket-Name, in dem Blobs gespeichert werden.
BEEHIVE_MINIO_USE_SSL(leer)Setze 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. Das erste Konto, das auf einer frischen Instanz erstellt wird, wird zum Admin. Siehe Authentifizierung.

VariableStandardBeschreibung
BEEHIVE_PASSWORD_AUTHan für cloud, aus für selfhostE-Mail-/Passwort-Registrierung und -Anmeldung aktivieren.
BEEHIVE_REGISTRATIONtrueOffene Selbstregistrierung. Auf false setzen für eine Instanz nur auf Einladung: Abgesehen vom Admin der Ersteinrichtung 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_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_ID(leer)Relying-Party-ID, normalerweise deine reine Domain (z. B. openbeehive.org).
BEEHIVE_WEBAUTHN_RP_ORIGINS(leer)Erlaubte Origins für WebAuthn-Zeremonien, z. B. deine vollständige App-URL.
BEEHIVE_WEBAUTHN_RP_DISPLAY_NAME(leer)Menschenlesbarer 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(leer)Die Callback-URL, zu der Anbieter nach der Anmeldung weiterleiten.

Jeder Anbieter hat dann seine eigenen Variablen. 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. Lasse BEEHIVE_OIDC_PROVIDERS leer und setze 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 — single-user mode

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