Passa al contenuto principale
Versione: 0.2.3

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.
BEEHIVE_HTTP_READ_HEADER_TIMEOUT10sTempo concesso per leggere le intestazioni di una richiesta.
BEEHIVE_HTTP_READ_TIMEOUT0Limite di lettura dell'intera richiesta; 0 significa nessuno, ed è ciò di cui ha bisogno la sottoscrizione di sincronizzazione in streaming.
BEEHIVE_HTTP_WRITE_TIMEOUT0Limite di scrittura della risposta; 0 significa nessuno, per lo stesso motivo.
BEEHIVE_HTTP_IDLE_TIMEOUT120sPer quanto tempo una connessione keep-alive inattiva resta aperta.
BEEHIVE_HTTP_SHUTDOWN_TIMEOUT15sPeriodo di tolleranza per le richieste in corso allo spegnimento.
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_BLOB_PUBLIC_URL<BEEHIVE_PUBLIC_BASE_URL>/filesURL di base da cui i file archiviati vengono serviti ai browser. Cambialo solo se un proxy o una CDN serve la directory dei blob da un altro indirizzo.
BEEHIVE_MINIO_ENDPOINTlocalhost:9000Host e porta dell'endpoint MinIO / S3.
BEEHIVE_MINIO_ACCESS_KEYminioadminChiave di accesso per l'object store.
BEEHIVE_MINIO_SECRET_KEYminioadminChiave segreta per l'object store.
BEEHIVE_MINIO_BUCKETopenbeehiveNome del bucket in cui vengono archiviati i blob.
BEEHIVE_MINIO_USE_SSLfalseImposta 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. L'amministratore dell'istanza è un account dedicato che configuri tu, non la prima persona che si registra. Consulta Autenticazione.

VariabilePredefinitoDescrizione
BEEHIVE_PASSWORD_AUTHattivo per cloud, disattivo per selfhostAbilita la registrazione e l'accesso tramite email/password. Implicito anche da BEEHIVE_DEMO=true.
BEEHIVE_ADMIN_EMAIL(vuoto)Email dell'amministratore dell'istanza. Obbligatoria ogni volta che l'autenticazione con password è abilitata. L'account viene garantito a ogni avvio: creato se manca e con il ruolo forzato ad amministratore. La registrazione non concede mai il ruolo di amministratore.
BEEHIVE_ADMIN_PASSWORD(vuoto)Password dell'amministratore dell'istanza, almeno 8 caratteri. Fa fede a ogni avvio: la password memorizzata viene reimpostata a questo valore, il che funge anche da recupero della 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_AUTOLOGINfalseFa accedere direttamente alla demo i visitatori anonimi invece di mostrare la schermata di accesso. Solo per host di pura dimostrazione; lascialo disattivato su un'istanza che serve anche utenti reali.
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_IDhost di BEEHIVE_PUBLIC_BASE_URLID del Relying Party, normalmente il tuo dominio nudo (ad esempio openbeehive.org).
BEEHIVE_WEBAUTHN_RP_ORIGINSBEEHIVE_PUBLIC_BASE_URLOrigini consentite per le cerimonie WebAuthn, separate da virgola.
BEEHIVE_WEBAUTHN_RP_DISPLAY_NAMEOpenbeehiveNome 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<BEEHIVE_PUBLIC_BASE_URL>/auth/callbackL'URL di callback a cui i provider reindirizzano dopo il login.

Ogni provider ha poi le proprie variabili: BEEHIVE_OIDC_<NOME>_ISSUER, BEEHIVE_OIDC_<NOME>_CLIENT_ID, BEEHIVE_OIDC_<NOME>_CLIENT_SECRET e, facoltativamente, BEEHIVE_OIDC_<NOME>_SCOPES (predefinito openid,profile,email), dove <NOME> è il nome del provider in maiuscolo. 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, no password auth — single-user mode

Se abiliti l'autenticazione con password per un'istanza di famiglia o di un'associazione, aggiungi anche l'amministratore dedicato:

BEEHIVE_PASSWORD_AUTH=true
BEEHIVE_ADMIN_EMAIL=tu@example.com
BEEHIVE_ADMIN_PASSWORD=una-password-lunga-che-puoi-recuperare

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.