Docker
Docker is the easiest way to run Streamline on a home server.
The image is published for both x86 and ARM (including Raspberry Pi and Apple silicon) at ghcr.io/abhichandra21/streamline.
Set it up
Section titled “Set it up”git clone https://github.com/abhichandra21/streamline.gitcd streamlinemkdir -p data recommender/cache logscp config.local.example.yaml config.local.yaml-
Put your keys in
.env:TMDB_API_KEYplus one LLM key, such asANTHROPIC_API_KEY. -
Copy your export zips into
data/and set their paths inconfig.local.yaml, for exampledata/netflix/export.zip. See Watch history. -
Run setup once:
Terminal window docker compose run --rm streamline ./recommend setup -
Start the web UI:
Terminal window docker compose up -dOpen http://localhost:5051.
Everyday commands
Section titled “Everyday commands”Every ./recommend command works inside the container:
docker compose run --rm streamline ./recommend setup --refresh-profiledocker compose run --rm streamline ./recommend setup --refresh-datadocker compose exec streamline ./recommend "gritty British crime drama"Update to the latest version with:
git pulldocker compose pulldocker compose up -dIf git pull says your local changes to config.yaml would be overwritten, see Settings.
Where your data lives
Section titled “Where your data lives”The container keeps nothing of its own. Everything is in the checkout folder, in the same places as a non-Docker install:
| Folder or file | What it holds |
|---|---|
data/ |
Your exports and streamline.db (history, ratings, watchlist, follows, searches) |
recommender/cache/ |
TMDB data, descriptions, the taste profile, IMDb ratings |
logs/ |
The app log |
config.yaml |
The shipped default settings; updated by git pull |
config.local.yaml |
Your export paths, and anything you change on the Settings page |
Back up data/streamline.db; Plex plays and your ratings exist only there.
- Create
config.local.yamlbefore the firstdocker composecommand. If it is missing, Docker creates a folder with that name instead, and the app can’t start. - The container runs as user ID 1000. On Linux, if your user has a different ID, run
sudo chown -R 1000:1000 data recommender/cache logs. - Set
STREAMLINE_PASSWORDin.envif anyone else can reach the server. See Running as a service. - To build the image yourself instead of pulling it, run
docker compose build.
