Skip to content
PlinthioRelease 1.4.2

Configuration ​

Almost everything in Plinthio is set in the app. Environment variables only control how the container runs: ports, folders and security switches. There's no config file to edit.

Environment Variables ​

Set these in a .env file next to docker-compose.yml, or under environment: in the compose file. After changing them, run docker compose up -d to apply.

Read by the Compose Files ​

VariableDefaultWhat it does
MEDIA_DIR/media/libraryHost folder mounted at /media in the container
BIND_ADDRESS0.0.0.0Host address the ports are published on. 127.0.0.1 makes Plinthio reachable only from the server itself
PLINTHIO_TAGlatestImage tag, which chooses the updates you take. See Updating
TZUTCTime zone for logs and scheduled jobs
PUID / PGID1000 / 1000User and group the server runs as, and that own /config
TLS_HOSTNAMESnoneExtra IPs and names for the built-in HTTPS certificate, comma-separated, e.g. 192.168.1.20,nas.local. Usually unneeded. A public domain must be set before the first start
BACKUP_DIRnoneHost folder for a second copy of backups, mounted at /backups once you uncomment that line in the compose file. See Administration
TS_AUTHKEYnoneTailscale add-on: an auth key for the first sign-in
TS_HOSTNAMEplinthioTailscale add-on: the machine's name on your tailnet
TS_FUNNELfalseTailscale add-on: true opens the .ts.net address to the internet. Must be exactly true or false
PLINTHIO_DOMAINnonePublic-address add-on: the name guests use, e.g. media.yourdomain.com
COMPOSE_FILEdocker-compose.ymlDocker Compose's own setting: which files make up the stack, e.g. docker-compose.yml:docker-compose.tailscale.yml, so add-ons stay on across updates

The add-ons are described in Away From Home.

Read by the Server ​

VariableDefaultWhat it does
PORT8080HTTP port inside the container. Leave it alone and change the published port instead
HOST0.0.0.0Interface the server listens on
DATA_DIR/config in Docker, ./data without DockerWhere the database, covers, caches and backups live
HTTPS_PORT8443 in Docker, off without DockerPort for the built-in HTTPS server, next to plain HTTP. Empty turns it off
TLS_CERT / TLS_KEY/config/ssl/cert.pem and key.pem if presentYour own certificate and key instead of the generated ones
TRUST_PROXYoff (loopback with the add-ons)Set only when Plinthio sits behind a reverse proxy or tunnel, so rate limits, logs and the away-from-home checks see real client addresses. Prefer the proxy's address or subnet (e.g. 172.18.0.5 or 172.18.0.0/16) over 1. Also accepts a hop count, true, or an IP list
JWT_SECRETgeneratedSecret that signs sign-ins. By default a random one is made on first start and kept in /config/jwt.secret. Don't put a literal secret in the compose file
JWT_EXPIRES_IN7dHow long a sign-in lasts without the app being opened. The app renews it on every load
MEDIA_TOKEN_EXPIRES_IN24hLifetime of the media-only token used in image, audio and video links
CORS_ORIGIN*Allowed browser origins for the API
CSPonContent-Security-Policy. report-only logs violations without blocking, off disables it. Only change it to diagnose a blocked resource
HLS_CACHE_MAX_AGE_HOURS24How long converted video segments and other temporary media caches stay on disk after their last use
TMDB_API_KEYnoneTMDB key used when none is saved in the app. A key saved in the app wins
UPDATE_CHECKonfalse stops the twice-daily check for new releases, and with it the admin update banner
UPDATE_CHECK_URLGitHub releases APIWhere the update check looks. For testing
APP_VERSIONfrom package.jsonOverrides the reported version. For development builds

WARNING

Never set TRUST_PROXY without a proxy in front of Plinthio. Clients could then fake their address, get round rate limits, and appear to be at home.

Settings in the App ​

Admin settings save as you change them, with "Saved" shown beside them. Backups and custom CSS have a Save button. Each section is described in Administration.

SectionSettingDefaultWhat it controls
LibrariesAutomatic scanningon, every hour, watcher onRe-scan on a schedule (every 15 minutes, 30 minutes, hour, 6 hours or day) and Watch folders for changes, which scans about 30 seconds after a file appears
MetadataTMDB keynot setChecked against TMDB when saved. MangaDex, Google Books and Open Library need no key
Kids ModeWhole librariesoffMakes everything in a library visible to kids accounts
AppearanceLet people personalizeon, each allowedWhether people can choose their own accent colour, navigation, page width and pause screen. One switch for all, plus Users can change on each
AppearanceAccent colourZincOne of 16 colours, for anyone who hasn't picked their own
AppearanceNavigationTop NavigationTop Navigation or Sidebar
AppearancePage widthFull WidthFull Width, or Contained (centred, up to 1440px)
AppearancePause screenDetailsSimple, Details, Cinematic or Bedtime. See Movies and Shows
AppearanceServer name and sign-in notice"Plinthio", no noticeThe name shown in the app and browser tab, and a message on the sign-in page
AppearanceCustom CSSemptyCSS applied for every user. The in-app docs page Custom CSS Styling lists the variables
FeaturesShelf viewsall onWhether Disk Folders and Custom Folders are offered. Alphabetical and Creator are always there
FeaturesRatingsall onPersonal stars, the server average, and TMDB's score. A switched-off rating isn't sent by the API either
FeaturesShow missing films in collectionsonCollections also list films the server doesn't have, greyed out with a Request button
FeaturesWatch partiesoffAdds Watch Together to movies and episodes. Turning it off ends any party in progress
PlaybackHardware accelerationWhatever is foundAuto-detect, a specific method (VAAPI, QuickSync, NVENC), or Always the CPU. Test runs a short real conversion
PlaybackOpening sequenceoffA short clip before movies and episodes. See Movies and Shows
NetworkAllow access from outside the home networkchosen in the setup wizardOff: only home and Tailscale addresses can sign in or use anything
NetworkTailscale devices count as homeonOff treats Tailscale addresses as outside
NetworkRequire two-factor away from homeoffSign-ins from outside need a two-factor code
BackupsBack up on a scheduleon, daily, keep 7Every 6 hours, 12 hours, daily, every 3 days or weekly, keeping 1–30. Plus a second place to copy them to

The Appearance section shows a live preview of the shelf, a title page, the sign-in screen and the pause screen. Hovering a choice previews it before you pick it.

Servers upgraded from a version before 1.4.0 keep Allow access from outside the home network on, so they keep working as before.

Per-Title Settings ​

Editors and admins can change these from a title's page:

  • Edit Metadata: search providers and apply a match to one title or a whole series, or upload a cover.
  • Series settings: display name, reading direction (manga) and age rating.
  • Kids: adds the series or title to Kids Mode.

See Libraries.

Per-Person Settings ​

Everyone has their own Settings, described in Your Settings. Admins set each account's role, content limit, Kids Mode, expiry and away-from-home access in Admin → Users. See Accounts and Access.

Odd Omens is a one-person studio building privacy-first software.