Skip to content

Configuration

Most configuration is managed from the browser in Settings. Environment variables cover process-level behavior and secrets needed before the UI can load.

Environment Variables

VariableRequiredDescription
JWT_SECRETYesSession signing secret. Must be at least 32 characters.
PUIDNoUser ID used by the container entrypoint. Defaults to 1000; Unraid commonly uses 99.
PGIDNoGroup ID used by the container entrypoint. Defaults to 1000; Unraid commonly uses 100.
PORTNoListen port. Defaults to 2121.
BIND_HOSTNoBind address. Defaults to 0.0.0.0.
CONFIG_DIRNoRuntime data directory. Defaults to ./config locally and /app/config in Docker.
PUBLIC_BASE_URLOptionalBootstrap public HTTPS URL (and subpath for reverse-proxy hosting). After setup, prefer Settings → Portal UI → Public Base URL — invite emails and shareable links use that UI value first.
BASE_PATHNoURL prefix when hosted under a subpath, such as /portal.
FORCE_SECURE_COOKIESRecommended for HTTPSSet to true when the portal is served over HTTPS.
ALLOW_PRIVATE_INTEGRATION_URLSNoAllows private/LAN URLs when saving integration settings.
SETUP_TOKENNoEnables remote first-time setup with an explicit token.
CLIENT_IDNoFixed Plex OAuth client id. Auto-generated if unset.

See .env.example for the full template.

Settings UI

Important browser-managed settings include:

AreaWhat You Configure
Media ServerPlex, Jellyfin, or Emby mode
PlexAdmin token, selected server, optional direct server URL
JellyfinServer URL, API key, login behavior, Quick Connect
AnalyticsTautulli for Plex or Jellystat for Jellyfin
Branding and UILogo, splash assets, accent colors, default theme
NavigationSidebar order and which feature links are visible
AccessTemporary access length, expiry rules, inactivity cleanup
SMTPHost, port, username, password, sender address
NewslettersWeekly or monthly schedule and content behavior
Home LayoutSection ordering and visibility
Media StackSonarr, Radarr, Lidarr, Bazarr, and download clients
RequestPortal request engine (default), quotas, auto-approve, optional Seerr
ScannerEnable Scanner, webhook auth, trigger/target rewrites, Autoscan YAML import
CollexionsEnable bundled Plex collection worker and related options
Library UpgraderEnable upgrader, instance maps, rate limits
CleanerMaintenance / cleanup feature settings
AlertsGotify connection and alert rules
Status PagePublic service checks and health URLs

See the integration list for the complete supported app matrix.

Security Defaults

The server refuses to start without a strong JWT_SECRET.

Session cookies are httpOnly and use sameSite: lax. Set FORCE_SECURE_COOKIES=true only when the app is served over HTTPS, typically behind a reverse proxy.

Admin-only API routes require an authenticated admin session. Plex admins are verified through server ownership, and Jellyfin admins are verified through Jellyfin policy data.

Built for the self-hosting community.