Skip to main content

Configuration

Pulsarr uses a hybrid configuration approach. Core settings (port, URL, logging) are defined in a .env file, while application settings are configured through the web UI.

Environment Variables Override Web UI

Environment variables override web UI settings on app restart. Remove a variable from .env to let web UI changes persist.

Core Configuration

Critical: baseUrl + port Configuration

The baseUrl and port create the webhook address for Sonarr/Radarr to reach Pulsarr:

  • Docker Compose (same network): http://pulsarr (service name)
  • Docker host networking: http://localhost
  • Separate machines: http://server-ip
  • Reverse proxy: https://subdomain.domain.com
VariableDescriptionRequired?Default
baseUrlWebhook address for Sonarr/Radarr to reach PulsarrYeshttp://localhost
portExternal port for webhook URLs. Omit for HTTPS on 443Yes3003
listenPortInternal port the server binds toNo3003
TZTimezone (e.g., America/New_York)YesUTC
logLevelLog level: silent, error, warn, info, debug, traceRecommendedsilent
enableConsoleOutputShow logs in terminalNotrue
enableRequestLoggingLog HTTP requests (sensitive params redacted)Nofalse
cookieSecuredSet true ONLY if serving UI over HTTPSNofalse
basePathURL path prefix for subfolder reverse proxy (e.g., /pulsarr)NoNone
appriseUrlApprise server URL (if using Apprise)NoNone
Non-Default Port

When using a different port, ensure values align:

Docker: Map ports in compose (8080:3003), set port=8080, keep listenPort=3003

Bare metal: Set both port and listenPort to the same value

Subfolder Reverse Proxy (basePath)

To run Pulsarr at a subfolder like https://domain.com/pulsarr/:

baseUrl=https://domain.com
basePath=/pulsarr

Pulsarr registers all routes under the basePath prefix. Your reverse proxy should forward requests to Pulsarr with the path intact (e.g., /pulsarr/api/...).

Database Configuration

Pulsarr supports SQLite (default) and PostgreSQL.

VariableDescriptionRequired?Default
dbPathSQLite database pathNo./data/db/pulsarr.db
dbTypeSet to postgres for PostgreSQLFor PostgreSQLsqlite
dbHostPostgreSQL hostnameFor PostgreSQLlocalhost
dbPortPostgreSQL portNo5432
dbNamePostgreSQL database nameFor PostgreSQLpulsarr
dbUserPostgreSQL usernameFor PostgreSQLpostgres
dbPasswordPostgreSQL passwordFor PostgreSQLNone
dbConnectionStringFull connection string (overrides above)NoNone
PostgreSQL Setup

Before using PostgreSQL, create a database and user with appropriate permissions. See the PostgreSQL Migration Guide for details.

Example .env File

# Required
baseUrl=http://your-server-ip
port=3003
TZ=America/Los_Angeles

# Logging
logLevel=info
enableConsoleOutput=true
enableRequestLogging=false

# Security
cookieSecured=false

# Database - SQLite (default, no config needed)
# dbPath=./data/db/pulsarr.db

# Database - PostgreSQL (uncomment to use)
# dbType=postgres
# dbHost=your-postgres-host
# dbPort=5432
# dbName=pulsarr
# dbUser=pulsarr
# dbPassword=your-secure-password

# Apprise (if using)
# appriseUrl=http://apprise:8000

Authentication

Set authenticationMethod in .env:

ValueBehavior
requiredAlways require authentication (default)
requiredExceptLocalSkip auth for local/private network
disabledNo authentication
Local Network Details

See Authentication Configuration Details for which IP ranges are considered "local".

Security

Iframe Support

For dashboard apps like Organizr or Heimdall:

allowIframes=true
note

This disables X-Frame-Options, allowing iframe embedding from any domain. Only enable if needed.

Plex Configuration

Skip Downloads for Existing Content

Configure in Plex → Configuration under "Content Availability Check" to prevent duplicate downloads by checking Plex before adding content.

  • Primary Token User: Checks all accessible servers (owned + shared)
  • Other Users: Only checks your owned server
Complete Reference

For all environment variables including development options, see Environment Variables Reference.