OpenAltFinder
Stash

Stash

Self-hosted media organizer and server that tags, scrapes metadata for, and streams your video and image collection, including NSFW content.

Stash is a self-hosted web application written in Go that indexes, tags, and serves a personal collection of videos and images. You point it at one or more folders, it scans and fingerprints the files, generates thumbnails, previews and sprites with FFmpeg, and keeps the catalog in an embedded SQLite database. The interface runs in a browser at localhost:9999; Windows, macOS and Linux builds run it as a background service with a tray icon, and Docker is the usual choice for a home server.

Metadata is the main draw. Stash pulls titles, performers, studios, tags and cover images from StashDB, other stash-box instances, and community-maintained scrapers and plugins. The Identify task walks the library and matches scenes automatically, while the scene tagger, duplicate checker, galleries and performer/studio statistics handle the rest. Everything is extensible through JavaScript plugins, custom CSS themes and a GraphQL API.

Compared with Plex or Emby, Stash is built around tagging, scraping and curating a library rather than a polished TV-style interface, and it adds the adult metadata sources those servers lack. Against cloud photo libraries and paid asset managers such as Eagle, it keeps the catalog on your own hardware with no subscription, under the AGPL-3.0 license.

Frequently Asked Questions

Which platforms does Stash run on?

Stash runs as a web app on Windows 10 or later, macOS 12 Monterey or later, and Linux, and there is an official Docker image for home servers and NAS devices. The desktop builds start a local server and open the interface at http://localhost:9999, with a tray icon for quick links and quitting. The Docker image bundles FFmpeg, while the standalone builds prompt you to download it during setup if it is missing.

What authentication options does Stash support?

By default Stash has no password protection at all, which is why the documentation recommends keeping it on a trusted network or behind a reverse proxy. You can set a single username and password under Settings, Security, Authentication, and when password protection is enabled you can generate an API key that external tools send in the ApiKey header. There is no multi-user account system, LDAP, SSO or two-factor authentication.

Does Stash have an API?

Yes, Stash exposes a GraphQL API at /graphql, which is localhost:9999/graphql by default, with an introspective, self-documenting schema. An integrated playground under Settings, Tools, GraphQL playground lets you run queries and browse the schema, and requests authenticate with the ApiKey header when password protection is on. The same API is what the web UI and community integrations use.

How does Stash identify and tag existing files?

Point Stash at your library folders and it scans and fingerprints each file, then the Identify task matches scenes against StashDB, other stash-box instances and installed scrapers in the order you choose. Matches can fill in title, studio, performers, tags, dates and cover images, with per-field strategies for ignoring, overwriting or merging existing values. Community scrapers and plugins add support for sites and databases not covered by the default sources.

What do I need to run Stash?

A small always-on machine is enough: Stash keeps its catalog in a single SQLite database inside its config directory, so there is no external database server to run. FFmpeg is required for thumbnails, previews and transcoding; the Docker image includes it, but on bare Linux you install it from your distribution's package manager. Docker deployments typically mount separate volumes for config, media, metadata, cache, blobs and generated files.

OpenAltFinder Score
75/100
Project Health (50%)
74/100
License (20%)
40/100
Self-hostable (20%)
100/100
Recency (10%)
100/100
How scoring works
Project Details
Platforms
Web, Desktop
License
AGPL-3.0
Self hostable
Yes
Repository details
Version
v0.32.0
Created
6/4/2018
Stars
13,357
Forks
1,228
Open issues
757
Last commit
11/3/2026

Updated 11/5/2026, 11:00:53 AM

View Repository

Get the latest open source alternatives delivered weekly.
Discover tools that give you freedom from proprietary software.

Similar open source alternatives