PosterFlow

PosterFlow

Docker app from dweagle's Repository

Overview

PosterFlow is a self-hosted poster management system that syncs and manages movie and TV show posters across Google Drive using rclone. Features include drive syncing from community preset sources (MM2K, CL2K, etc.), automatic poster renaming to match your Plex/Radarr/Sonarr library, border replacement, unmatched asset detection, direct Plex upload, a built-in scheduler, and real-time job progress via WebSockets. Includes a setup wizard on first launch to configure your media server and Google Drive credentials.

PosterFlow

A self-hosted poster management system that syncs and manages movie and TV show posters across Google Drive using rclone. Includes a FastAPI backend and React/TypeScript frontend, packaged as a single Docker container.

PosterFlow is heavily inspired by DAPS by Drazzilb

See the Wiki for more information Wiki

Dashboard

dashboard The dashboard is the top landing spot when accessing the app. The sidebar exposes every top-level surface.

Features

  • Drive Syncing — Subscribe to community preset drives (MM2K, CL2K, etc.) or add your own custom Google Drive sources
  • Poster Renamer — Automatically renames downloaded posters to match your Plex/Radarr/Sonarr library
  • Border Replacer — Replaces poster borders in bulk
  • Unmatched Assets — Detects and reports assets in your library that are missing posters. TMDB links for missing items
  • Plex Upload — Upload posters directly to Plex libraries
  • IDarr — Metadata enrichment pipeline for poster-maker assets (TMDB/TVDB/IMDB ID assignment and rename normalization)
  • Community Requests — Shared request board where users submit missing posters for makers to claim and fulfill. Discord integration auto-fills your username and unlocks an upload button for verified poster makers
  • Maker Tools — Poster-makers can monitor upcoming movie and TV releases to track missing posters
  • Scheduler — Automate any job on a recurring schedule
  • Live Job Status — WebSocket-powered real-time job progress and log streaming
  • After Job Scripts — Autorun a custom script after a completed job
  • Discord Notifications — Optional notifications on job completion

Quick Start

The setup wizard runs on first launch to configure your media server connections and Google Drive credentials.

Access

URL Description
http://localhost:8357 Main application

Install

Currently the only install route is Docker. An Uraid template is available in CA.

Docker Compose

Currently only a develop tag exists

Tag Source branch Updated
develop develop When a maintainer runs the workflow against develop.

docker-compose.yml

The canonical compose file. Every key is explained inline.

services:
  posterflow:
    image: dweagle/posterflow:develop
    container_name: posterflow
    ports:
      - "8357:8000"
    volumes:
      # The only required mount. Holds posterflow.db, rclone.conf, drives_cache.json,
      # the default poster cache (/config/posters/gdrive/), /config/logs/,
      # /config/scripts/ and /config/idarr/. Back this directory up.
      - ./config:/config

      # Optional. Mount your Kometa assets directory here (or anywhere) and point
      # the renamer's "Destination" setting at it. Without this mount, PosterFlow
      # writes its organized output under /config/posters/assets/ and you have
      # to copy it out yourself.
      - /path/to/kometa/assets:/assets

      # Optional, poster-makers only. Mount the directory where you stage posters
      # you intend to upload to your personal Google Drive via IDarr.
      - /path/to/idarr/staging:/idarr
      
    environment:
      - PUID=1000        # Host UID that owns the mount points above.
      - PGID=1000        # Host GID. Both default to 1000 if unset.
      - TZ=America/New_York   # Host timezone. Drives scheduler local-time interpretation.
      - DEBUG=false      # Optional. true forces file logging to DEBUG on startup.
      - LOG_LEVEL=INFO   # Optional. File log level when DEBUG=false.
      - CORS_ORIGINS=    # Optional. Comma-separated origins (see configuration.md).
    restart: unless-stopped

Equivalent docker run

docker run -d \
  --name posterflow \
  -p 8357:8000 \
  -v /srv/posterflow/config:/config \
  -v /srv/kometa/assets:/assets \
  -e PUID=1000 -e PGID=1000 \
  -e TZ=America/New_York \
  --restart unless-stopped \
  dweagle/posterflow:develop

Volumes

Container path Required? Created by Purpose
/config Yes The entrypoint chowns this and the app mkdirs /config/logs, /config/idarr and /config/scripts on every boot (see backend/core/config.py). SQLite DB at /config/posterflow.db, WAL/SHM sidecars next to it, rclone.conf, drives_cache.json, the default GDrive cache at /config/posters/gdrive/, logs at /config/logs/posterflow.log (plus per-job log dirs), after-job scripts at /config/scripts/, IDarr working dir at /config/idarr/.
/assets (or anywhere) No You. Destination for organized, renamed, bordered posters. Point Kometa's asset_directory at the same host path.
/idarr (or anywhere) No You. Poster-maker staging area for IDarr. Used only if you operate the IDarr workflow.

Environment Variables

Variable Default Description
PUID 1000 User ID for file ownership
PGID 1000 Group ID for file ownership
TZ UTC Timezone
DEBUG false Enable debug logging on startup (can be toggled in-app)
LOG_LEVEL INFO File log verbosity when debug mode is off
CORS_ORIGINS (localhost defaults) Comma-separated allowed browser origins

Debug mode state is persisted in the database and restored on restart. You can toggle it from Settings without restarting the container.

Install PosterFlow on Unraid in a few clicks.

Find PosterFlow in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for PosterFlow Review the template variables and paths Click Install

Download Statistics

7,123
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
dweagle/posterflow:develop
Last Updated2026-06-28
First Seen2026-05-20

Runtime arguments

Web UI
http://[IP]:[PORT:8000]/
Network
bridge
Shell
bash
Privileged
false

Template configuration

Web UI PortPorttcp

Web UI port for PosterFlow

Target
8000
Default
8357
Value
8357
Config PathPathrw

Stores the database, rclone config, logs, default poster storage, and idarr working directory.

Target
/config
Default
/mnt/user/appdata/posterflow
Value
/mnt/user/appdata/posterflow
Destination PathPathrw

Optional: custom destination/asset storage location (e.g. Kometa assets folder). Configure the path in Settings after setup.

Target
/assets
Posters PathPathrw

Optional: custom poster storage location. Configure the path in subscribed drives after setup.

Target
/posters
IDarr PathPathrw

Optional: for poster maker's storage location (e.g. poster folder for sync to gdrive). Configure the path in Idarr after setup.

Target
/idarr
PSD PathPathrw

Optional: for poster maker's storage location for PSD files. Configure the path in Maker Tools > TMDB Search settings after setup.

Target
/posterPSDs
PUIDVariable

User ID for file ownership

Default
99
Value
99
PGIDVariable

Group ID for file ownership

Default
100
Value
100
TZVariable

Timezone (e.g. America/New_York)

Default
UTC
Value
UTC
DEBUGVariable

Enable debug logging on startup. Can also be toggled in-app Settings.

Default
false
Value
false
LOG_LEVELVariable

File log verbosity when debug mode is off (DEBUG, INFO, WARNING, ERROR)

Default
INFO
Value
INFO