Aller au contenu principal
Version: 0.1.0

Configuration

Openbeehive se configure entièrement au moyen de variables d'environnement. Cette page constitue la référence complète, regroupées exactement comme elles apparaissent dans .env.example.

Vous pouvez définir ces variables dans votre shell, dans un fichier .env à côté du binaire, dans votre fichier docker compose, ou via le gestionnaire de secrets de votre plateforme d'hébergement. Le serveur les lit une seule fois au démarrage, de sorte que les modifications prennent effet après un redémarrage.

:::tip Commencez petit Vous n'avez besoin que d'une poignée de ces variables pour démarrer. Pour un serveur domestique mono-utilisateur, définissez BEEHIVE_DEPLOYMENT_PROFILE=selfhost, un BEEHIVE_SESSION_SECRET, et laissez le reste aux valeurs par défaut. Consultez le Démarrage rapide pour être opérationnel en quelques minutes. :::

Comment fonctionne le profil de déploiement

Le réglage le plus important est BEEHIVE_DEPLOYMENT_PROFILE. Il choisit des valeurs par défaut judicieuses pour tout le reste, ce qui vous évite de devoir détailler à la main une pile complète.

ProfilBase de données par défautStockage d'objets par défautDestiné à
selfhostSQLite (fichier)Système de fichiers localUn binaire unique, sans Docker, un seul hôte
cloudPostgreSQLMinIO / S3Le déploiement hébergé, multi-locataires

Le profil ne fait que définir des valeurs par défaut. Toute variable que vous définissez explicitement l'emporte toujours. Par exemple, vous pouvez exécuter le profil selfhost tout en le pointant vers PostgreSQL en définissant vous-même BEEHIVE_DATABASE_DRIVER et BEEHIVE_DATABASE_DSN.

remarque

Les deux profils sont documentés en détail sur leurs propres pages : Binaire unique et Docker. Cette page se concentre sur les variables elles-mêmes.

Profil de déploiement

VariableDéfautDescription
BEEHIVE_DEPLOYMENT_PROFILEselfhostSélectionne la pile préconfigurée : selfhost ou cloud. Définit les valeurs par défaut pour la base de données et le stockage d'objets.

Serveur HTTP

VariableDéfautDescription
BEEHIVE_ADDR:8080Adresse et port sur lesquels le serveur écoute. Utilisez 127.0.0.1:8080 pour ne lier qu'à localhost derrière un reverse proxy.
BEEHIVE_PUBLIC_BASE_URLhttp://localhost:8080L'URL publique où les utilisateurs accèdent à l'application. Utilisée pour les liens profonds QR, les redirections OIDC et les liens absolus. Définissez-la sur votre véritable domaine en production.
attention

BEEHIVE_PUBLIC_BASE_URL doit correspondre à l'adresse que les utilisateurs visitent réellement. Si elle est incorrecte, les étiquettes QR, les redirections de connexion et les liens partagés pointeront vers le mauvais endroit.

Application web intégrée

Le serveur peut servir lui-même la PWA SvelteKit, de sorte qu'un binaire unique fournit à la fois l'API et le front end.

VariableDéfautDescription
BEEHIVE_SERVE_WEBtrueLorsque true, le serveur sert l'application web intégrée. Définissez false si vous hébergez le front end séparément.
BEEHIVE_WEB_DIR(vide)Chemin vers les ressources web compilées. Laissez vide pour utiliser les ressources intégrées au binaire.

CORS

Les réglages cross-origin importent lorsque l'application web est servie depuis une origine différente de celle de l'API.

VariableDéfautDescription
BEEHIVE_CORS_ALLOWED_ORIGINS*Liste d'origines autorisées, séparées par des virgules. Restreignez-la à votre domaine en production.
BEEHIVE_CORS_ALLOW_CREDENTIALStrueIndique s'il faut autoriser les requêtes cross-origin avec identifiants (cookies, en-têtes d'authentification).
attention

Une origine joker (*) combinée à BEEHIVE_CORS_ALLOW_CREDENTIALS=true est permissive. Si vous servez l'application depuis une seule origine, définissez BEEHIVE_CORS_ALLOWED_ORIGINS sur cette origine exacte.

Synchronisation

VariableDéfautDescription
BEEHIVE_NODE_IDserverIdentifiant de ce nœud dans le protocole de synchronisation. Utilisé par l'horloge logique hybride (HLC) pour étiqueter les événements. Gardez-le stable et unique par serveur.

Le moteur de synchronisation sans conflit (HLC plus le dernier-écrivain-gagne par champ et les OR-Sets ajout-gagne) requiert que chaque participant dispose d'une identité stable. Modifier BEEHIVE_NODE_ID sur un serveur en service n'est pas recommandé.

Base de données

VariableDéfautDescription
BEEHIVE_DATABASE_DRIVERselon le profilMoteur de base de données : postgres, mysql ou sqlite.
BEEHIVE_DATABASE_DSNselon le profilChaîne de connexion pour le pilote choisi (voir ci-dessous).

Exemples de DSN par pilote :

# 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"

Pour le choix du pilote, l'optimisation et les notes de migration, consultez Bases de données.

Stockage d'objets

Les photos et autres pièces jointes sont stockées sous forme de blobs, soit sur le système de fichiers local, soit dans un magasin d'objets compatible S3.

VariableDéfautDescription
BEEHIVE_BLOB_BACKENDselon le profilBackend de stockage : fs (système de fichiers local) ou minio (MinIO / S3).
BEEHIVE_BLOB_DIR./data/blobsRépertoire des blobs lorsque BEEHIVE_BLOB_BACKEND=fs.
BEEHIVE_MINIO_ENDPOINT(vide)Hôte et port du point de terminaison MinIO / S3.
BEEHIVE_MINIO_ACCESS_KEY(vide)Clé d'accès du magasin d'objets.
BEEHIVE_MINIO_SECRET_KEY(vide)Clé secrète du magasin d'objets.
BEEHIVE_MINIO_BUCKET(vide)Nom du bucket où sont stockés les blobs.
BEEHIVE_MINIO_USE_SSL(vide)Définissez true pour vous connecter au point de terminaison via HTTPS.

Les variables MINIO_* ne sont utilisées que lorsque BEEHIVE_BLOB_BACKEND=minio. Pour un accompagnement complet, consultez Stockage.

Session et authentification

VariableDéfautDescription
BEEHIVE_SESSION_SECRET(vide)Secret utilisé pour signer les cookies de session. Générez-en un avec openssl rand -base64 32. Obligatoire en production.
BEEHIVE_SESSION_TTL720hDurée d'une session avant qu'une nouvelle authentification soit requise (par ex. 720h correspond à 30 jours).
danger

Définissez toujours un BEEHIVE_SESSION_SECRET fort et unique, et gardez-le privé. S'il fuit ou change, toutes les sessions existantes sont invalidées.

E-mail, mot de passe et intégration

Comptes intégrés pour les instances multi-utilisateurs sans fournisseur d'identité externe. Le premier compte créé sur une instance vierge devient l'administrateur. Consultez Authentification.

VariableDéfautDescription
BEEHIVE_PASSWORD_AUTHactivé pour cloud, désactivé pour selfhostActive l'inscription et la connexion par e-mail/mot de passe.
BEEHIVE_REGISTRATIONtrueInscription libre. Réglez sur false pour une instance sur invitation uniquement : au-delà de l'administrateur du premier démarrage, les comptes ne peuvent être créés que via des liens d'invitation, et l'écran de connexion affiche un avis indiquant que l'instance est sur invitation uniquement.
BEEHIVE_EMAIL_VERIFICATIONfalseExige une confirmation par e-mail avant qu'un nouveau compte puisse se connecter.
BEEHIVE_SMTP_HOST(vide)Serveur SMTP pour les e-mails de vérification/invitation. Si vide, les liens sont écrits dans le journal à la place.
BEEHIVE_SMTP_PORT587Port SMTP.
BEEHIVE_SMTP_USER(vide)Nom d'utilisateur SMTP.
BEEHIVE_SMTP_PASS(vide)Mot de passe SMTP.
BEEHIVE_SMTP_FROMOpenbeehive <no-reply@openbeehive.org>Adresse d'expéditeur pour le courrier sortant.

Locataire de démonstration

Installe un compte et un locataire de démonstration de présentation. Désactivé par défaut — consultez Mode démo.

VariableDéfautDescription
BEEHIVE_DEMOfalseInstalle un compte + locataire de démonstration (15 ruches réparties sur 4 ruchers, réinitialisé toutes les heures). Implique BEEHIVE_PASSWORD_AUTH=true.
BEEHIVE_DEMO_EMAILdemo@app.openbeehive.orgE-mail du compte de démonstration.
BEEHIVE_DEMO_PASSWORDdemoMot de passe du compte de démonstration.

WebAuthn / clés d'accès

Authentification sans mot de passe optionnelle utilisant des clés d'accès.

VariableDéfautDescription
BEEHIVE_WEBAUTHN_ENABLEDfalseActive la connexion WebAuthn / par clé d'accès.
BEEHIVE_WEBAUTHN_RP_ID(vide)ID de la partie de confiance (Relying Party), normalement votre domaine nu (par ex. openbeehive.org).
BEEHIVE_WEBAUTHN_RP_ORIGINS(vide)Origines autorisées pour les cérémonies WebAuthn, par ex. l'URL complète de votre application.
BEEHIVE_WEBAUTHN_RP_DISPLAY_NAME(vide)Nom lisible affiché aux utilisateurs lors de l'enregistrement.

Fournisseurs OIDC

Connexion via des fournisseurs d'identité externes au moyen d'OpenID Connect. Plusieurs fournisseurs peuvent être activés simultanément.

VariableDéfautDescription
BEEHIVE_OIDC_PROVIDERS(vide)Liste des fournisseurs activés, séparés par des virgules, par ex. google,keycloak.
BEEHIVE_OIDC_REDIRECT_URL(vide)L'URL de rappel vers laquelle les fournisseurs redirigent après la connexion.

Chaque fournisseur dispose ensuite de ses propres variables. Par exemple :

# 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 Mono-utilisateur, sans connexion Pour une instance auto-hébergée personnelle, vous pouvez ignorer entièrement la connexion. Laissez BEEHIVE_OIDC_PROVIDERS vide et définissez BEEHIVE_WEBAUTHN_ENABLED=false. L'application s'exécute alors en mode mono-utilisateur, sans étape de connexion. :::

Pour les guides de configuration des fournisseurs, les URL de redirection et les conseils de sécurité, consultez Authentification.

Un exemple selfhost minimal

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

C'est tout ce dont un apiculteur seul a besoin. Ajoutez un reverse proxy en façade pour le HTTPS et vous êtes prêt à tenir vos registres.