ReelStash
Years of films and shows, saved across a few drives. ReelStash turns them into a library you can browse and play from any browser in the house — running on your own machine, with nothing sent anywhere else.
- Go API
- React UI
- PostgreSQL
- ffmpeg
- Docker Compose
What it does
Media, Admin and Files: three apps from one codebase, for watching, running the library, and tidying the disks underneath.
Indexes your own disks
Point it at local drives, a NAS or a network share. Scans are incremental, read details with ffprobe and pick up NFO files you already have.
Finds the metadata
Posters, titles and episode details from TMDB, with a review queue for anything it isn't sure about and rules to rename and organise files.
Plays in the browser
Direct or HLS playback, thumbnails, preview clips and scrub sprites. Continue watching, Next up, and a countdown between episodes.
In your language
Pick the audio track and subtitles, and set a default per person, so a Malayalam film opens with Malayalam audio.
Playlists
Manual playlists, plus smart ones built from saved filters: unwatched, rated four and up, added this week.
One library, many people
Separate libraries with per-user access, favourites, ratings, watch history and recommendations for each person.
Jobs you can see
Scans, duplicate checks and metadata matching run as tracked jobs — on demand, on a schedule, or when a new file lands on a watched disk.
Plugins
Add metadata providers and sign-in methods as plugin bundles. ReelStash installs, runs and supervises them itself.
Sign-in
Built-in accounts — the first visitor creates the admin — or any OpenID Connect provider through a plugin, such as Sweyam Auth.
Run it yourself
ReelStash is meant to live next to your media: a home server, a NAS or a spare laptop. You need Docker and a folder of videos. The installer sets up the database, the media and admin apps and, if you want it, qBittorrent for downloads, with generated passwords. Your files stay where they are; ReelStash keeps its data in Docker volumes.
Recognises .mp4, .mkv, .avi, .mov, .m4v, .wmv, .ts and .webm. On first visit, a setup wizard checks your media folder, takes an optional TMDB key and runs the first scan.
The installer prints the admin login when it finishes. Run it again in the same folder to update. It is plain HTTP, so put an HTTPS reverse proxy in front before exposing it outside your network.
# One command on any Linux or macOS machine with Docker:
wget -qO- https://sweyam.com/products/reelstash/install.sh | sh
# or with curl:
curl -fsSL https://sweyam.com/products/reelstash/install.sh | sh
# Prefer to read it first?
wget https://sweyam.com/products/reelstash/install.sh
less install.sh && sh install.sh
# Unattended, with qBittorrent for downloads:
wget -qO- https://sweyam.com/products/reelstash/install.sh | sh -s -- \
--media /srv/media --qbittorrent --yesPairs with Sweyam Auth
Install the Sweyam Auth plugin and the whole household signs in with the same passkey they use for Kasho. Any other OpenID Connect provider works the same way.
About Sweyam AuthHelp build it
ReelStash is open source. Read the code, report a bug, or write a metadata plugin — the example provider is a good place to start.
ReelStash on GitHubAndroid app · legal
Privacy and terms for the Play Store client (com.sweyam.reelstash). Your media still stays on the server you run.
Privacy policy
What the app stores on the device, what Sweyam never collects, and how deletion works.
Read the privacy policyTerms of use
Acceptable use, open-source notices, and that this client has no in-app payments.
Read the termsOpen-source licences
GPL v3 for ReelStash, SIL OFL for fonts, Apache 2.0 for Kotlin, Compose, Media3, and the rest.
View licences