Skip to content

Configuration

All runtime configuration is via environment variables in .env. See .env.example for the full template.

FQDNs

VariableDescriptionExample
BNG_APP_FQDNWeb UI + API domainbirdnet.example.com
BNG_MQTT_FQDNMQTT broker domainmqtt.birdnet.example.com
BNG_S3_FQDNMinIO console domains3.birdnet.example.com

Three subdomains are required. All route through Traefik.

Hub API

VariableDefaultDescription
API_PORT3000HTTP listen port (internal)
JWT_SECRETrequiredSecret for signing JWT session tokens
PLATFORM_ADMIN_EMAILSComma-separated emails for platform admin access
HUB_INTERNAL_API_KEYBackwards-compatible machine access key
LOG_LEVELinfoLog level: debug, info, warn, error

PostgreSQL

VariableDefaultDescription
PG_HOSTlocalhostDatabase host
PG_PORT5432Database port
PG_DATABASEbirdnetDatabase name
PG_USERbirdnetDatabase user
PG_PASSWORDbirdnetDatabase password
BNG_POSTGRES_PASSWORDDocker Compose alias for PG_PASSWORD

Redis

VariableDefaultDescription
REDIS_HOSTlocalhostRedis host
REDIS_PORT6379Redis port
REDIS_PASSWORDRedis auth password (empty = no auth)

MQTT (Hub side)

VariableDefaultDescription
MQTT_BROKER_URLmqtt://localhost:1883Broker URL (internal)
MQTT_HUB_PASSWORDhub-internal-secretHub ingester MQTT password
MQTT_ADMIN_USERadminMosquitto dynamic security admin
MQTT_ADMIN_PASSWORDadminMosquitto dynamic security password

MinIO

VariableDefaultDescription
MINIO_ENDPOINTlocalhostMinIO host
MINIO_PORT9000MinIO port
MINIO_ACCESS_KEYminioadminMinIO access key
MINIO_SECRET_KEYminioadminMinIO secret key
MINIO_BUCKETbirdnet-audioBucket name (audio + species images)
MINIO_USE_SSLfalseUse SSL for MinIO connection

Docker Compose

VariableDefaultDescription
BNG_VOLUMES_ROOT./storageRoot directory for all persistent data
PUIDContainer user ID
PGIDContainer group ID

Satellite (Pi)

VariableDefaultDescription
SATELLITE_IDrequiredUUID from satellite registration
TENANT_IDrequiredTenant UUID
MQTT_BROKER_URLmqtt://localhost:1883Broker URL (mqtts:// for production)
MQTT_USERNAMErequiredMQTT username (= satellite ID)
MQTT_PASSWORDrequiredMQTT password (from registration)
CAPTURE_MODEsimulatealsa, simulate, or replay
AUDIO_DEVICEdefaultALSA device name
SAMPLE_RATE48000Audio sample rate (Hz)
CHUNK_DURATION_MS3000Chunk duration (ms)
OVERLAP_MS0Overlap between chunks
RECORDING_PROFILEcontinuousDefault recording profile
LATITUDE0Static latitude
LONGITUDE0Static longitude
GPS_MODEstaticstatic or gpsd
GPSD_HOSTlocalhostgpsd daemon host
GPSD_PORT2947gpsd daemon port
DATA_DIR./dataLocal storage directory
RETENTION_HOURS48Keep chunks after acknowledgment
TELEMETRY_INTERVAL_MS60000Telemetry report interval
AUDIO_FILTERtrueEnable on-device audio pre-filtering
REPLAY_DIRfixtures/Directory for replay mode WAV files

Platform Settings (UI)

Configured in Platform Settings page, stored in platform_settings table.

SettingDefaultDescription
allow_self_registrationtrueUsers can register without invite
allow_tenant_creationfalseLogged-in users can create tenants
allow_invite_linkstrueAdmins can generate invite links
image_download_delay_seconds5Delay between Wikipedia image downloads

Tenant Settings (UI)

Configured in Tenant Settings page, stored in tenant_settings table.

SettingDefaultDescription
confidence_high0.7High confidence threshold
confidence_low0.4Low/uncertain confidence threshold
min_confidence0.1Minimum display threshold
offline_timeout_minutes5Satellite offline detection timeout
verification_consensus3Votes needed for consensus
retention_hours48Satellite local storage retention
watchlist_species[]Custom species watchlist for rare alerts

Distributed bird sound identification