Self-hosted service
petersem/posterr avatar
petersem/posterr

Posterr turns a spare screen into a foyer display for your media server

A digital poster app for Plex, Sonarr, Radarr, and Readarr

653 stars34 forksHTMLMIT

At a glance

What is it?
Posterr is an MIT licensed Node application that renders now playing, coming soon and random titles from Plex, Sonarr, Radarr and Readarr onto any browser, with a sleep timer, a trivia quiz, Awtrix LED matrix support and a small HTTP API to blank the screen. It runs as a Docker image or as a direct binary, it needs almost no resources, and it ships with a well known default password that you should change.
Who is it for?
Home server operators with a spare monitor, a Fire TV stick or a wall-mounted panel will get a working digital poster in a single Docker command, and the resource use is low enough to run on a NAS. It is the wrong tool if your media library is not in Plex or one of the supported *arr applications, and the wrong tool for anything exposed to the public Internet, since the documentation ships a default password of `raidisnotabackup` that is printed in the README.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 49 days ago.
What is it written in?
Mainly HTML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A foyer display for the media server you already run

Posterr is described as media display software for Plex, Sonarr, Radarr and Readarr, compared to the display screens in movie theatre foyers. The use cases it lists are domestic rather than commercial: a monitor on the wall showing off your home media setup, a second monitor to keep an eye on what is running, a small screen outside a home theatre room showing when a film is in progress, or a reverse proxy so friends can see what is playing and what is coming soon. The only mandatory dependency is Plex, with Sonarr v3.0, Radarr v4.3 and Readarr v0.1.3 all optional. The application itself is a Node project with `index.js` as its entry point and an Express stack behind it, and the repository ships a `Dockerfile`, a `docker-compose.yml`, an `healthcheck.js`, `routes/`, `myviews/` for the templates, `public/` for the static assets and a `classes/` directory. It is a small web app that serves a full screen page to whatever browser you point at it.

The slide content covers now playing, coming soon and trivia

The feature list is long and worth reading as a specification of what a foyer screen needs. It displays posters for what is currently playing, random on-demand titles drawn from multiple Plex libraries, custom pictures, background art and themes, coming soon titles from Sonarr including season premieres, coming soon titles from Radarr, and coming soon books from Readarr. It can optionally play TV and movie themes when they are available, shows a progress bar coloured green for direct play and red for transcoding, and displays metadata such as run time, content rating and studio. Around that are display concerns: move the mouse to the bottom of the page and the footer hides itself, background artwork can be used for a better wide-screen view when available, the page scales automatically for most display sizes and orientations, a sleep timer disables the display during set hours, and a trivia quiz offers multiple selectable topics. The display can be rotated by -90 degrees for devices such as Firesticks that do not support portrait rotation, and Awtrix LED matrix displays are supported.

An HTTP endpoint blanks the screen, and CEC switches the monitor off

The screen can be controlled from outside the browser, which is what makes the sleep timer practical when the display is on a wall you cannot reach. There is a post API at `/api/sleep` to toggle sleep mode, and the documentation gives the header values to pass, `psw` with your Posterr password and `sleep` set to true or false. A get request to the same endpoint returns the sleep status without any parsed parameters. In parallel there is CEC control of the monitor, which works together with the Posterr sleep timer, so the application can put a television into standby rather than just showing a black rectangle. The installation instructions for that script are noted as being for a Raspberry Pi only, and the script documentation lives in the repository at `scripts/scriptdoco.md`. There is also experimental support for displaying custom web pages as slides, flagged as experimental in the feature list, which is the one item in the documentation explicitly marked as unfinished.

Docker Compose with two mounted directories

The recommended install is Docker Compose, and the compose file in the documentation is short enough to copy. You create three directories, one for the posterr folder, one for the config and one for custom media, and then define the service:

yaml
version: '2.4'

services:
  posterr:
    image: petersem/posterr
    container_name: posterr
    environment:
      TZ: Australia/Brisbane
      BASEPATH: ""
    volumes:
      - ./docker/posterr/config:/usr/src/app/config
      - ./docker/posterr/custom:/usr/src/app/public/custom
    ports:
      - 9876:3000
    restart: unless-stopped

The two volumes are documented individually: the config directory is required to save your Posterr settings, and the custom directory is required for custom pictures and other custom media in future. The port mapping 9876 to 3000 can be changed by editing the first number, and `BASEPATH` exists for reverse proxy setups that need a base path, and can be left out or left blank otherwise. A Docker CLI alternative is given as well, running the same image with the same volumes and a restart policy. The compose file committed to the repository is slightly different, building from the local Dockerfile rather than pulling the published image, and it also sets `NODE_ENV: production` and `ET: "false"`.

The default password is printed in the documentation

Posterr's settings are reached in several ways: you are prompted on first load, you can change the URL to the settings page on port 9876, you can click the banner title on any slide, and there is a link on the no content page. The default password is stated plainly in the documentation as `raidisnotabackup`, and it appears twice, in the header section and again in the setup section. It is not a secret in any meaningful sense, and it is published in a README that anyone can read, so the first thing to do on any install that is reachable by anyone else is to change it. That matters more than usual here because the sleep API accepts the password as a header value, and the whole feature set is designed for a screen that is visible to a room. There is a wiki page for configuration and a separate known issues page, and the project asks people to use Discord for discussions and limited support rather than the issue tracker.

Low resource use, and a browser on a different machine

The technical section is where the project explains why it suits a always-on device. It is built in Node JS and packaged as a Docker image that includes a health check, and direct binary files are provided for macOS, Linux and Windows, so a Node install is not required. The resource figures given are 20 to 35 megabytes of memory, about 75 megabytes of disk and under one percent CPU, measured on a Synology NAS with a Celeron processor. Because the app is browser based, you can run it on one machine and open a browser on another, and it supports screen resolutions from 320 pixels up to around 3500 pixels. There are connectivity checks with automatic reconnection when the app restarts, which matters during container updates, and built-in recovery features for when Posterr or Plex goes offline. It also checks for updates in the now screening and playing views every ten seconds, although nothing is displayed until the browser is refreshed or all slides have cycled through.

MIT licensed, with binaries last released in 2023

The licence is MIT and the author is listed as Matt Petersen. The release tags are the interesting part, because they do not match the version in the package manifest. The tagged releases are v1.14.1 on 2021-09-02, v1.14.2 on 2021-09-23 and v1.15.0 on 2023-02-02, and each of those is described as a set of binaries for Posterr, while the `package.json` in the repository records version 1.21.18 and the Docker image is tagged separately with its own release badge. The last push to the repository was on 2026-09-05 and the repository is not archived, so work continues on the default branch. The documentation also warns that there are rare occasions when you need to update settings after an upgrade, with the latest changes page carrying the notes for each release. For an operator, the practical consequence is that the version numbers in the container tag and in the manifest are the ones to track, and the wiki page for the latest changes is the thing to read after an upgrade.

Editorial conclusion

Home server operators with a spare monitor, a Fire TV stick or a wall-mounted panel will get a working digital poster in a single Docker command, and the resource use is low enough to run on a NAS. It is the wrong tool if your media library is not in Plex or one of the supported *arr applications, and the wrong tool for anything exposed to the public Internet, since the documentation ships a default password of `raidisnotabackup` that is printed in the README. Before you expose it, change that password on the settings page, and confirm the reverse proxy and `BASEPATH` configuration match your own setup before you point a browser at it.

Frequently asked questions

How do I install Posterr with Docker Compose?

Create the posterr, config and custom directories, then define the service with the image petersem/posterr, the two volumes for the config and the custom media, and a port mapping of 9876 to 3000. The documentation also gives a Docker CLI alternative, and an Unraid community template is available.

What is the default password for Posterr and where do I change it?

The default password is `raidisnotabackup`, and the documentation prints it in the header and again in the setup section. Settings are reachable on first load, through the settings page URL on port 9876, by clicking the banner title on a slide, or from the link on the no content page.

Can I blank the Posterr screen from another device?

Yes. There is a post API at `/api/sleep` that toggles sleep mode, taking the password in a `psw` header and `sleep` set to true or false, and a get request to the same endpoint returns the sleep status. A separate CEC script, documented for Raspberry Pi, can put the connected monitor into standby.

Which media servers does Posterr support?

Plex is the only mandatory dependency. Sonarr v3.0, Radarr v4.3 and Readarr v0.1.3 are optional, and each of them feeds the coming soon slides, with season premieres shown for Sonarr.

Official sources

  1. Issues
  2. License: MIT
  3. petersem/posterr on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/petersem-posterr.svg)](https://hysenlabs.com/projects/petersem-posterr)

Was this useful?