Need help? Join the Norri Discord.Beta information

Environment Variables

Use the web app’s Settings pages for playback preferences and library configuration. Environment variables control how the server starts.

Docker Compose settings

The Docker Compose guide sets the image version, ports, source paths, and user IDs directly in compose.yaml. No .env file is required.

SettingExamplePurpose
imageregistry.norri.tv/norri/norri:latestThe recommended public release. Use a numbered tag if you want to stay on a specific version.
ports"11423:11423"Host port first, container port second.
Media path before :/media//path/to/moviesExisting absolute host directory.
Destination below /media/media/MoviesUnique read-only destination below /media.
PUID / PGIDYour user’s numeric IDsIdentity used to read media and write application state. The image defaults to 99:100; the example sets these explicitly. IDs 0 and 999 are not allowed.

To use host port 12080, change the mapping to "12080:11423", run docker compose up -d, and open http://your-server-address:12080. Keep the container port at 11423. The Host port field in Settings → General → Network records this number; it does not change the Docker mapping.

Server environment

Set these under the service’s environment section in Compose or using -e with docker run:

VariableDefaultPurpose
PORT11423TCP port on which the server listens.
LOG_LEVELinfoLogging level. Use debug temporarily when diagnosing a problem.
NORRI_DATA_DIR/var/lib/norri in DockerConfiguration, artwork, and cache location.
NORRI_MEDIA_DIR/mediaAbsolute media root. Library folders must stay inside it.
NORRI_TRUSTED_PROXIESEmptyComma-separated proxy IP addresses or CIDR ranges allowed to supply the original client address.
NORRI_SETUP_HOSTSEmptyAdditional trusted local hostnames or hostname-and-port pairs for first-run setup.
TMDB_API_KEYEmptyOptional override for movie and TV metadata. Normal setup does not require your own key.
ACOUSTID_API_KEYEmptyOptional override for music fingerprint lookups. Normal setup does not require your own key.
ACCESS_TOKEN_DURATION900 secondsAccess-token lifetime.
REFRESH_TOKEN_DURATION2592000 secondsSaved sign-in lifetime, 30 days by default.

The container initializes its private PostgreSQL connection and authentication secret. Keep its database and application-data volumes. You do not need to configure a separate database for the standard installation.

Logging example

environment:
  PORT: "11423"
  LOG_LEVEL: "debug"

Recreate the container after changing its environment. Return LOG_LEVEL to info after diagnosis. See Logs and Reverse Proxy Setup for related guidance.