$docker.recipes

Stash Media Organizer

beginner

Stash organizer and player for adult media collections.

[i]Overview

Stash is an open-source media organizer and player specifically designed for adult content collections, developed to address the unique challenges of organizing, cataloging, and managing large video libraries with comprehensive metadata support. The application provides automatic scene detection, performer identification, studio tagging, and sophisticated search capabilities that go far beyond basic file management systems. Stash uses advanced fingerprinting technology to identify duplicate content, scrapes metadata from multiple sources, and offers detailed tagging systems that allow users to organize content by performers, studios, tags, and custom categories. This Docker deployment creates a self-contained media management server that processes your existing video collection, generates thumbnails and previews, extracts metadata, and provides a responsive web interface for browsing and playback. The containerized approach ensures consistent performance across different host systems while maintaining data persistence through dedicated volumes for configuration, generated content, metadata, and cache storage. Organizations and individuals managing large media collections will find this solution particularly valuable for its ability to automatically organize thousands of files, eliminate duplicates, and provide sophisticated search and filtering capabilities that would be impossible to achieve manually.

[*]Key Features

  • [+]Automatic scene fingerprinting and duplicate detection using StashDB integration
  • [+]Multi-source metadata scraping from various adult industry databases and APIs
  • [+]Advanced performer and studio identification with facial recognition capabilities
  • [+]Comprehensive tagging system with hierarchical tag organization and bulk operations
  • [+]Built-in video player with chapter support, bookmark functionality, and playback statistics
  • [+]Plugin ecosystem supporting custom scrapers, automation scripts, and third-party integrations
  • [+]Intelligent thumbnail and sprite generation for quick visual browsing and seeking
  • [+]Advanced search engine supporting complex queries across all metadata fields and custom filters

[#]Common Use Cases

  • [1]Personal media server for organizing and streaming large video collections with privacy
  • [2]Content verification and duplicate elimination for media archival projects
  • [3]Research and academic environments requiring detailed media categorization and analysis
  • [4]Digital asset management for content creators tracking source material and references
  • [5]Home media center integration for users seeking advanced organization beyond Plex or Jellyfin
  • [6]Collection management for media enthusiasts requiring detailed performer and studio tracking
  • [7]Automated content processing workflows for organizations managing large video archives

[!]Prerequisites

  • [!]Docker and Docker Compose installed with at least 4GB RAM allocated to containers
  • [!]Sufficient disk space for generated thumbnails and metadata (approximately 10-20% of media size)
  • [!]Port 9999 available on the host system for web interface access
  • [!]Read access to media directories that will be mounted into the container
  • [!]Basic understanding of Docker volume management for backup and data migration
  • [!]Network connectivity for metadata scraping and StashDB integration during setup
[!]

WARNING: For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

[$]docker-compose.yml

[docker-compose.yml]
1services:
2 stash:
3 image: stashapp/stash:latest
4 container_name: stash
5 environment:
6 - STASH_STASH=/data/
7 - STASH_GENERATED=/generated/
8 - STASH_METADATA=/metadata/
9 - STASH_CACHE=/cache/
10 volumes:
11 - stash_config:/root/.stash
12 - /path/to/media:/data
13 - stash_generated:/generated
14 - stash_metadata:/metadata
15 - stash_cache:/cache
16 ports:
17 - "9999:9999"
18 restart: unless-stopped
19 networks:
20 - stash-network
21
22volumes:
23 stash_config:
24 stash_generated:
25 stash_metadata:
26 stash_cache:
27
28networks:
29 stash-network:
30 driver: bridge

[$].env Template

[.env]
1# Stash
2# Configuration via web interface

[i]Usage Notes

  1. [1]Web UI at http://localhost:9999
  2. [2]Initial setup wizard
  3. [3]Automatic metadata scraping
  4. [4]Scene fingerprinting
  5. [5]Plugin support

[>]Quick Start

[terminal]
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 stash:
5 image: stashapp/stash:latest
6 container_name: stash
7 environment:
8 - STASH_STASH=/data/
9 - STASH_GENERATED=/generated/
10 - STASH_METADATA=/metadata/
11 - STASH_CACHE=/cache/
12 volumes:
13 - stash_config:/root/.stash
14 - /path/to/media:/data
15 - stash_generated:/generated
16 - stash_metadata:/metadata
17 - stash_cache:/cache
18 ports:
19 - "9999:9999"
20 restart: unless-stopped
21 networks:
22 - stash-network
23
24volumes:
25 stash_config:
26 stash_generated:
27 stash_metadata:
28 stash_cache:
29
30networks:
31 stash-network:
32 driver: bridge
33EOF
34
35# 2. Create the .env file
36cat > .env << 'EOF'
37# Stash
38# Configuration via web interface
39EOF
40
41# 3. Start the services
42docker compose up -d
43
44# 4. View logs
45docker compose logs -f

[>]One-Liner

Run this command to download and set up the recipe in one step:

[terminal]
1curl -fsSL https://docker.recipes/api/recipes/stash-adult-media/run | bash

[?]Troubleshooting

  • [!]Stash fails to start with permission errors: Ensure media directories have proper read permissions and Docker daemon has access to mounted paths
  • [!]Web interface shows 'Database locked' error: Stop the container cleanly, check for corrupted database files in the config volume, and restart with proper shutdown procedures
  • [!]Scanning stops or freezes during large imports: Increase Docker container memory allocation and ensure sufficient disk space for temporary processing files
  • [!]Thumbnails not generating for certain video formats: Install additional video processing libraries in the container or convert media to supported formats like MP4 or MKV
  • [!]Plugin installation fails with permission errors: Verify the plugins directory has write permissions and restart Stash after plugin installation
  • [!]StashDB scraping returns no results: Check internet connectivity from container and verify StashDB API endpoints are accessible through firewall

Community Notes

Loading...
Loading notes...

## Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

## Components

stash

## Tags

#stash#media-organizer#video#tagging#metadata

## Category

Media & Entertainment