Environment Variables
HarborFM is configured mainly via environment variables. Below are the essentials; the full table is in the README.
Essential for Production
| Variable | Description |
|---|---|
JWT_SECRET |
Required for signing sessions; use a long random string (for example openssl rand -base64 32). |
HARBORFM_SECRETS_KEY |
Optional; encrypts export credentials and Stripe credential packs (base64/base64url). Set if you use Podcast Delivery or Stripe. |
DATA_DIR |
DB, uploads, processed audio, RSS, artwork, library, page themes (Docker often /data). |
SECRETS_DIR |
JWT and secrets key files (Docker often /secrets). Can be omitted if secrets are passed via env. |
Server and Paths
PORT(default3001),HOST(default0.0.0.0)PUBLIC_DIR- static web app directoryNODE_ENV- set toproductionin production (affects CORS and cookie Secure default)
Cookies and HTTPS
COOKIE_SECURE- settruewhen using HTTPS- For http only, set
COOKIE_SECURE=false
WebRTC (Group Calls)
WEBRTC_ENABLED-1ortrueto enableWEBRTC_SERVICE_URL- internal URL to the webrtc service (for examplehttp://webrtc:3002)WEBRTC_PUBLIC_WS_URL- public WebSocket URL for clients (for examplewss://example.com/webrtc-ws)WEBRTC_SERVICE_SECRET,RECORDING_CALLBACK_SECRET- app ↔ webrtc authMEDIASOUP_ANNOUNCED_IP- public IP when behind NAT
More Options
The README table also covers upload size limits, ffmpeg/ffprobe/audiowaveform paths, GeoIP, Whisper/LLM, email, captcha, rate limits, bootstrap admin vars (SETUP_ID, ADMIN_EMAIL, …), and Stripe/DNS AAD settings.