All apps · 0 apps
PosterFlow
Docker app from dweagle's Repository
Overview
Readme
View on GitHubPosterFlow
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
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.
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
dweagle/posterflow:developRuntime arguments
- Web UI
http://[IP]:[PORT:8000]/- Network
bridge- Shell
bash- Privileged
- false
Template configuration
Web UI port for PosterFlow
- Target
- 8000
- Default
- 8357
- Value
- 8357
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
Optional: custom destination/asset storage location (e.g. Kometa assets folder). Configure the path in Settings after setup.
- Target
- /assets
Optional: custom poster storage location. Configure the path in subscribed drives after setup.
- Target
- /posters
Optional: for poster maker's storage location (e.g. poster folder for sync to gdrive). Configure the path in Idarr after setup.
- Target
- /idarr
Optional: for poster maker's storage location for PSD files. Configure the path in Maker Tools > TMDB Search settings after setup.
- Target
- /posterPSDs
User ID for file ownership
- Default
- 99
- Value
- 99
Group ID for file ownership
- Default
- 100
- Value
- 100
Timezone (e.g. America/New_York)
- Default
- UTC
- Value
- UTC
Enable debug logging on startup. Can also be toggled in-app Settings.
- Default
- false
- Value
- false
File log verbosity when debug mode is off (DEBUG, INFO, WARNING, ERROR)
- Default
- INFO
- Value
- INFO