Skip to content
🚧 These docs are a work in progress and may contain inaccuracies. Content is being actively reviewed and validated.

Storage & Paths

Dubby uses three primary volume mounts. These paths are the same whether you’re running Docker, Docker Compose, Kubernetes, or Unraid.

Container pathPurposePersistence
/dataDatabase, metadata, trickplayPersistent — back this up
/cacheTranscode cacheEphemeral — SSD recommended
/mediaYour media libraryRead-only optional

Back this up. It contains everything Dubby needs to remember:

/data
├── dubby.db # SQLite database (library, users, watch history)
├── .encryption-key # Auto-generated encryption key for sensitive config
├── backups/ # Database backups
├── images/ # Cached artwork from TMDB (posters, backdrops, logos)
└── trickplay/ # Seek preview thumbnail sprites
  • Database: ~50 MB per 1,000 media items
  • Images: 1-5 GB typical, grows with library size (fetched from TMDB on demand)
  • Trickplay: ~50 MB per movie/episode with trickplay enabled

Temporary working space for active playback sessions:

/cache
├── {session-id}/ # HLS segments for active sessions
│ ├── master.m3u8
│ ├── playlist.m3u8
│ ├── segment_0.ts
│ └── {track-id}.vtt
└── ...
  • Can grow to several GB during active playback
  • Cleaned up automatically when sessions end
  • SSD strongly recommended for smooth transcoding
  • Safe to delete when the server is stopped

Mount your existing media directories here. Read-only is fine unless you use features that write to the media directory (subtitle downloads, podcasts).

volumes:
- /mnt/media:/media
volumes:
- /mnt/movies:/media/movies
- /mnt/tv:/media/tv
- /mnt/anime:/media/anime

Downloaded subtitles are saved alongside your media files:

Movie Name (2024)/
├── Movie Name (2024).mkv
├── Movie Name (2024).en.srt # Downloaded subtitle
└── Movie Name (2024).en.forced.srt # Downloaded forced subtitle

Storage directories can be customized with environment variables. In Docker, the Dockerfile sets /data and /cache as defaults — you typically don’t need to change these.

VariableDocker defaultDescription
DUBBY_DATA_DIR/dataBase data directory
DUBBY_CACHE_DIR/cacheGeneral cache
DUBBY_METADATA_CACHE_DIRDUBBY_DATA_DIR/imagesTMDB image cache
DUBBY_TRICKPLAY_CACHE_DIRDUBBY_DATA_DIR/trickplayTrickplay sprites

The transcode working directory defaults to /tmp/dubby/transcode (symlinked to /cache in Docker) and can be changed via the server.transcodeDir config key or DUBBY_SERVER_TRANSCODE_DIR environment variable.

At minimum, back up the /data volume regularly. This contains:

  • Your SQLite database (users, library metadata, watch history, settings)
  • Your encryption key (required to decrypt sensitive config values)
  • Cached artwork (can be re-fetched, but saves bandwidth)
  • Trickplay thumbnails (can be regenerated, but it’s slow)

The /cache volume does not need to be backed up.