Passa al contenuto principale
Versione: Prossima

Configurazione

Openbeehive viene configurato interamente tramite variabili d'ambiente. Questa pagina è il riferimento completo, raggruppate esattamente come appaiono in .env.example.

Puoi impostare queste variabili nella tua shell, in un file .env accanto al binario, nel tuo file docker compose o tramite il gestore di segreti della tua piattaforma di hosting. Il server le legge una volta all'avvio, quindi le modifiche hanno effetto dopo un riavvio.

:::tip Inizia in piccolo Te ne servono solo una manciata per iniziare. Per un server domestico a utente singolo, imposta BEEHIVE_DEPLOYMENT_PROFILE=selfhost, un BEEHIVE_SESSION_SECRET e lascia il resto ai valori predefiniti. Consulta la Guida rapida per essere operativo in pochi minuti. :::

Come funziona il profilo di distribuzione

L'impostazione di gran lunga più importante è BEEHIVE_DEPLOYMENT_PROFILE. Sceglie valori predefiniti sensati per tutto il resto, così non devi specificare a mano l'intero stack.

ProfiloDatabase predefinitoArchiviazione blob predefinitaPensato per
selfhostSQLite (file)Filesystem localeUn singolo binario, niente Docker, un host
cloudPostgreSQLMinIO / S3La distribuzione ospitata e multi-tenant

Il profilo imposta solo i valori predefiniti. Qualsiasi variabile che imposti esplicitamente ha sempre la precedenza. Ad esempio, puoi eseguire il profilo selfhost ma indirizzarlo a PostgreSQL impostando tu stesso BEEHIVE_DATABASE_DRIVER e BEEHIVE_DATABASE_DSN.

note

I due profili sono documentati in dettaglio nelle rispettive pagine: Binario singolo e Docker. Questa pagina si concentra sulle variabili stesse.

Profilo di distribuzione

VariabilePredefinitoDescrizione
BEEHIVE_DEPLOYMENT_PROFILEselfhostSeleziona lo stack preimpostato: selfhost o cloud. Imposta i valori predefiniti per database e archiviazione blob.

Server HTTP

VariabilePredefinitoDescrizione
BEEHIVE_ADDR:8080Indirizzo e porta su cui il server è in ascolto. Usa 127.0.0.1:8080 per associarlo solo a localhost dietro un reverse proxy.
BEEHIVE_PUBLIC_BASE_URLhttp://localhost:8080L'URL pubblico tramite cui gli utenti raggiungono l'app. Usato per i deep link dei QR, i reindirizzamenti OIDC e i link assoluti. Impostalo sul tuo dominio reale in produzione.
attenzione

BEEHIVE_PUBLIC_BASE_URL deve corrispondere all'indirizzo che gli utenti visitano effettivamente. Se è errato, le etichette QR, i reindirizzamenti di login e i link condivisi punteranno al posto sbagliato.

App web integrata

Il server può servire direttamente la PWA SvelteKit, così un singolo binario fornisce sia l'API sia il front end.

VariabilePredefinitoDescrizione
BEEHIVE_SERVE_WEBtrueQuando è true, il server serve l'app web inclusa. Imposta false se ospiti il front end separatamente.
BEEHIVE_WEB_DIR(vuoto)Percorso degli asset web compilati. Lascia vuoto per usare gli asset incorporati nel binario.

CORS

Le impostazioni cross-origin contano quando l'app web viene servita da un'origine diversa da quella dell'API.

VariabilePredefinitoDescrizione
BEEHIVE_CORS_ALLOWED_ORIGINS*Elenco separato da virgole delle origini consentite. Limitalo al tuo dominio in produzione.
BEEHIVE_CORS_ALLOW_CREDENTIALStrueSe consentire richieste cross-origin con credenziali (cookie, header di autenticazione).
attenzione

Un'origine jolly (*) combinata con BEEHIVE_CORS_ALLOW_CREDENTIALS=true è permissiva. Se servi l'app da un'unica origine, imposta BEEHIVE_CORS_ALLOWED_ORIGINS su quell'esatta origine.

Sincronizzazione

VariabilePredefinitoDescrizione
BEEHIVE_NODE_IDserverIdentificatore di questo nodo nel protocollo di sincronizzazione. Usato dall'Hybrid Logical Clock per etichettare gli eventi. Mantienilo stabile e univoco per ogni server.

Il motore di sincronizzazione senza conflitti (HLC più last-writer-wins per campo e OR-Set add-wins) richiede che ogni partecipante abbia un'identità stabile. Modificare BEEHIVE_NODE_ID su un server attivo non è consigliato.

Database

VariabilePredefinitoDescrizione
BEEHIVE_DATABASE_DRIVERdal profiloMotore del database: postgres, mysql o sqlite.
BEEHIVE_DATABASE_DSNdal profiloStringa di connessione per il driver scelto (vedi sotto).

DSN di esempio per driver:

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

Per la scelta del driver, l'ottimizzazione e le note sulla migrazione, consulta Database.

Archiviazione blob

Le foto e gli altri allegati vengono archiviati come blob, sul filesystem locale o in un object store compatibile con S3.

VariabilePredefinitoDescrizione
BEEHIVE_BLOB_BACKENDdal profiloBackend di archiviazione: fs (filesystem locale) o minio (MinIO / S3).
BEEHIVE_BLOB_DIR./data/blobsDirectory per i blob quando BEEHIVE_BLOB_BACKEND=fs.
BEEHIVE_MINIO_ENDPOINT(vuoto)Host e porta dell'endpoint MinIO / S3.
BEEHIVE_MINIO_ACCESS_KEY(vuoto)Chiave di accesso per l'object store.
BEEHIVE_MINIO_SECRET_KEY(vuoto)Chiave segreta per l'object store.
BEEHIVE_MINIO_BUCKET(vuoto)Nome del bucket in cui vengono archiviati i blob.
BEEHIVE_MINIO_USE_SSL(vuoto)Imposta true per connetterti all'endpoint tramite HTTPS.

Le variabili MINIO_* vengono usate solo quando BEEHIVE_BLOB_BACKEND=minio. Per indicazioni complete, consulta Archiviazione.

Sessione e autenticazione

VariabilePredefinitoDescrizione
BEEHIVE_SESSION_SECRET(vuoto)Segreto usato per firmare i cookie di sessione. Generane uno con openssl rand -base64 32. Obbligatorio in produzione.
BEEHIVE_SESSION_TTL720hPer quanto tempo dura una sessione prima che sia richiesta una nuova autenticazione (ad esempio 720h corrisponde a 30 giorni).
pericolo

Imposta sempre un BEEHIVE_SESSION_SECRET robusto e univoco e tienilo privato. Se trapela o cambia, tutte le sessioni esistenti vengono invalidate.

Email, password e onboarding

Account integrati per istanze multi-utente senza un provider di identità esterno. Il primo account creato su un'istanza nuova diventa l'amministratore. Consulta Autenticazione.

VariabilePredefinitoDescrizione
BEEHIVE_PASSWORD_AUTHattivo per cloud, disattivo per selfhostAbilita la registrazione e l'accesso tramite email/password.
BEEHIVE_REGISTRATIONtrueRegistrazione autonoma aperta. Imposta false per un'istanza solo su invito: oltre all'amministratore del primo avvio, gli account possono essere creati solo tramite link di invito, e la schermata di accesso mostra un avviso che l'istanza è solo su invito.
BEEHIVE_EMAIL_VERIFICATIONfalseRichiede la conferma via email prima che un nuovo account possa accedere.
BEEHIVE_SMTP_HOST(vuoto)Server SMTP per le email di verifica/invito. Se vuoto, i link vengono scritti nel log.
BEEHIVE_SMTP_PORT587Porta SMTP.
BEEHIVE_SMTP_USER(vuoto)Nome utente SMTP.
BEEHIVE_SMTP_PASS(vuoto)Password SMTP.
BEEHIVE_SMTP_FROMOpenbeehive <no-reply@openbeehive.org>Indirizzo mittente per la posta in uscita.

Tenant demo

Installa un account e un tenant demo dimostrativi. Disattivato per impostazione predefinita — consulta Modalità demo.

VariabilePredefinitoDescrizione
BEEHIVE_DEMOfalseInstalla un account + tenant demo (15 arnie distribuite su 4 apiari, ripristinato ogni ora). Implica BEEHIVE_PASSWORD_AUTH=true.
BEEHIVE_DEMO_EMAILdemo@app.openbeehive.orgEmail dell'account demo.
BEEHIVE_DEMO_PASSWORDdemoPassword dell'account demo.

WebAuthn / passkey

Autenticazione senza password facoltativa tramite passkey.

VariabilePredefinitoDescrizione
BEEHIVE_WEBAUTHN_ENABLEDfalseAbilita il login con WebAuthn / passkey.
BEEHIVE_WEBAUTHN_RP_ID(vuoto)ID del Relying Party, normalmente il tuo dominio nudo (ad esempio openbeehive.org).
BEEHIVE_WEBAUTHN_RP_ORIGINS(vuoto)Origini consentite per le cerimonie WebAuthn, ad esempio l'URL completo della tua app.
BEEHIVE_WEBAUTHN_RP_DISPLAY_NAME(vuoto)Nome leggibile mostrato agli utenti durante la registrazione.

Provider OIDC

Accesso tramite provider di identità esterni via OpenID Connect. È possibile abilitare più provider contemporaneamente.

VariabilePredefinitoDescrizione
BEEHIVE_OIDC_PROVIDERS(vuoto)Elenco separato da virgole dei provider abilitati, ad esempio google,keycloak.
BEEHIVE_OIDC_REDIRECT_URL(vuoto)L'URL di callback a cui i provider reindirizzano dopo il login.

Ogni provider ha poi le proprie variabili. Ad esempio:

# 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 Utente singolo, nessun login Per un'istanza personale self-hosted puoi saltare del tutto il login. Lascia vuoto BEEHIVE_OIDC_PROVIDERS e imposta BEEHIVE_WEBAUTHN_ENABLED=false. L'app viene quindi eseguita in modalità a utente singolo senza alcun passaggio di accesso. :::

Per le procedure guidate di configurazione dei provider, gli URL di reindirizzamento e i consigli sulla sicurezza, consulta Autenticazione.

Un esempio selfhost minimale

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

Questo è tutto ciò di cui ha bisogno un singolo apicoltore. Aggiungi un reverse proxy davanti per l'HTTPS e sei pronto a tenere i tuoi registri.