Skip to content
Configuration

Configuration

Outtake reads its settings from OUTTAKE_* environment variables. There is no settings file. The command line has a single flag, --listen, which overrides OUTTAKE_LISTEN_ADDR (see the CLI reference).

The Compose files also use OUTTAKE_MEDIA_PATH and OUTTAKE_DATA_PATH to choose what to mount into the container. Those two are read by Docker Compose, not by Outtake.

Variables

Server

VariablePurposeDefault
OUTTAKE_LISTEN_ADDRAddress the web server binds0.0.0.0:8080 (images use :8080)
OUTTAKE_PUBLIC_BASE_URLThe URL you open Outtake at. Plex returns there after loginderived from the listen address, or http://localhost:8080 in images
OUTTAKE_ALLOWED_HOSTSMore host names Outtake answers to, separated by commas. A leading dot covers a whole domain (.example.com), and * turns the host check offunset
OUTTAKE_LOG_LEVELdebug, info, warn, or errorinfo
OUTTAKE_ENVproduction writes JSON logs, and development writes readable console logs. e2e is for the test suite only: it skips login, so Outtake refuses it on any address but loopbackproduction

Plex

VariablePurposeDefault
OUTTAKE_LOCAL_MEDIA_ROOTDirectory where Outtake can read the files Plex plays, such as the /media mount in a containerunset (the Compose examples set /media)
OUTTAKE_PLEX_MEDIA_ROOTPrefix Plex reports for those files, replaced by OUTTAKE_LOCAL_MEDIA_ROOTunset
OUTTAKE_SESSION_POLL_SECHow often to read live Plex playback, in seconds10
OUTTAKE_PLEX_SERVER_URLPlex Media Server URL to use at every start, in place of the server chosen under Servers. Takes effect only with OUTTAKE_PLEX_TOKENunset
OUTTAKE_PLEX_TOKENToken Outtake sends to that server. Browser login does not need itunset
OUTTAKE_PLEX_CLIENT_IDClient identifier Outtake shows to Plexgenerated on first start and kept in the database

Clips and FFmpeg

VariablePurposeDefault
OUTTAKE_MAX_CLIP_DURLongest clip, in seconds600
OUTTAKE_CROP_BLACK_BARSWhether Trim black bars starts checkedfalse
OUTTAKE_NUM_WORKERSHow many clips render at once. A value below 1 means 12
OUTTAKE_MAX_CONCURRENT_PREVIEWSHow many previews render at once. A value below 1 means 12
OUTTAKE_FFMPEG_PATHffmpeg binaryffmpeg (images use /usr/bin/ffmpeg)
OUTTAKE_FFPROBE_PATHffprobe binaryffprobe (images use /usr/bin/ffprobe)
OUTTAKE_FFMPEG_TIMEOUT_SECLongest one FFmpeg run may take, in seconds. 0 allows 20 times the clip’s length, or 60 times for the HEVC encode of a clip that keeps HDR, and never less than 30 minutes0

Storage

These are covered in more detail under Storage and Databases.

VariablePurposeDefault
OUTTAKE_DATABASE_BACKENDsqlite or postgressqlite
OUTTAKE_DATABASE_PATHSQLite database file~/.local/share/outtake/outtake.db (images use /data/outtake.db)
OUTTAKE_DATABASE_URLPostgres connection string, when the backend is postgresunset
OUTTAKE_STORAGE_BACKENDfilesystem or s3filesystem
OUTTAKE_STORAGE_PATHWhere clips are written, or the local scratch directory with S3~/.local/share/outtake/output (images use /data/output)
OUTTAKE_S3_ENDPOINTS3-compatible API endpointunset
OUTTAKE_S3_BUCKETBucket for clipsunset
OUTTAKE_S3_REGIONRegionus-east-1
OUTTAKE_S3_ACCESS_KEYAccess keyunset
OUTTAKE_S3_SECRET_KEYSecret keyunset
OUTTAKE_S3_USE_PATH_STYLEPath-style URLs, which SeaweedFS and RustFS expecttrue

Media paths

Plex tells Outtake the absolute path of each file it plays, and Outtake reads that file itself. On the same machine as Plex the path usually works as it is. In a container it rarely does, because the library is mounted somewhere else, such as /media.

  • Set OUTTAKE_LOCAL_MEDIA_ROOT to the mount.
  • If Plex reports a prefix of its own, such as /data/movies/Film.mkv for a library you mounted at /media, set OUTTAKE_PLEX_MEDIA_ROOT=/data. Outtake replaces that prefix with the local root and reads /media/movies/Film.mkv.
  • With only the local root set, the whole Plex path is joined under it.

The prefix only matches whole directories, so /data/media never claims /data/media-other, and a path that would leave the local root is refused. Paths from a Windows Plex server, with a drive letter or a UNC share, are mapped too: their backslashes become slashes and the prefix matches without regard to case.

These two settings are about the source media only. Clips are stored under OUTTAKE_STORAGE_PATH or in S3, never in the media mount.

Opening Outtake from another machine

Set OUTTAKE_PUBLIC_BASE_URL to the URL you type into the browser, such as https://outtake.example.com. Plex sends you back to it after login, so a wrong value leaves login waiting.

Outtake answers only requests addressed to:

  • an IP address or localhost
  • a name without dots, such as nas
  • a private name, such as nas.local or a name under .lan, .home, .home.arpa, or .internal
  • the host in OUTTAKE_PUBLIC_BASE_URL
  • a host listed in OUTTAKE_ALLOWED_HOSTS

Any other host gets 421 Misdirected Request. That stops a web page on another site from reaching your Outtake through DNS rebinding. Add each extra name you use to OUTTAKE_ALLOWED_HOSTS.