All apps · 0 apps
Mydia
Docker app from grtgbln's Repository
Overview
Readme
View on GitHubMydia
Your personal media companion, built with Phoenix LiveView
A modern, self-hosted media management platform for tracking, organizing, and monitoring your movies and TV shows.
Warning: Mydia is in early development (0.x.x). Expect breaking changes. Report issues or request features.
Quick Start
1. Generate secrets:
openssl rand -base64 48 # SECRET_KEY_BASE
openssl rand -base64 48 # GUARDIAN_SECRET_KEY
2. Create docker-compose.yml:
services:
mydia:
image: ghcr.io/getmydia/mydia:latest
container_name: mydia
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
- SECRET_KEY_BASE=your-secret-key-base-here
- GUARDIAN_SECRET_KEY=your-guardian-secret-key-here
- PHX_HOST=localhost
- MOVIES_PATH=/media/library/movies
- TV_PATH=/media/library/tv
volumes:
- ./config:/config
- /path/to/media:/media
ports:
- 4000:4000
restart: unless-stopped
3. Start and access:
docker compose up -d
Open http://localhost:4000 and create your admin account.
Features
- Unified Media Management - Movies + TV shows with TMDB/TVDB metadata
- Automated Downloads - Monitored search, quality profiles, automatic upgrades
- Release Ranking - Picks the right release for you: the right episode, your languages, your quality profile and custom formats
- Download Clients - qBittorrent, Transmission, rqbit, SABnzbd, NZBGet, debrid providers
- Indexers - Prowlarr, Jackett, built-in Cardigann (experimental)
- Multi-User - Admin/guest roles with request workflow
- SSO - Local auth + OIDC/OpenID Connect
- Import Lists - Sync from TMDB watchlists, popular, trending (experimental)
- Real-Time UI - Phoenix LiveView with instant updates
How Mydia Picks a Release
Automatic and manual search rank releases the same way. Automatic search grabs the top one; manual search shows you the list in that order.
flowchart TD
A[Releases found by your indexers] --> B[Drop wrong and unwanted releases]
B --> C[Order the rest by what you asked for]
C --> D{Who is choosing}
D -->|Automatic search| E[Grab the top release]
D -->|You, in manual search| F[See the same order and pick]
Dropped before ranking
- Fake or malformed release names
- A different title than the one searched *
- Tags you blocked
- Custom formats your profile rejects
- Sources your profile excludes, such as cam rips *
- Resolutions below your profile's minimum *
- Usenet posts too new to be complete
* Manual search keeps these at the bottom of the list instead.
Ranking order, each step only breaking ties left by the one above
- Right season and episode
- Preferred audio language
- Resolution, in your profile's order; unlisted resolutions last
- Number of preferred audio languages
- Custom format score
- Quality score: about 60% profile fit (resolution, codec, audio, source, size, HDR), plus seeders or Usenet completeness, plus name match. Torrents with 0 seeders lose 30%.
Upgrades
- Found with the same ranking
- Must beat your current file by the profile's upgrade margin, or add a preferred audio language
- Checked twice: the release before download, the real file after
- Your old file is kept until the new one passes
More detail: Why Mydia Picked That Release and Custom Formats.
Mydia Player
A cross-platform app that streams your library from anywhere over an encrypted peer-to-peer connection. No port forwarding, no VPN.
It can also browse and play from Plex, Jellyfin and Stash servers. This is experimental: Connect Plex, Jellyfin or Stash.
| Home | Shows |
|---|---|
![]() |
![]() |
| Platform | Get it | Notes |
|---|---|---|
| Android | Download APK | Allow installs from unknown sources; updates itself afterward, track chosen in Settings |
| iOS | Install via TestFlight | Needs the TestFlight app |
| macOS | Download .dmg | Notarized, updates itself |
| Windows | irm https://mydia.dev/install.ps1 | iex in PowerShell, or download installer |
Per-user install. The command avoids the SmartScreen prompt the unsigned installer gets |
| Linux | Flatpak or .tar.gz | Flatpak recommended |
| Web | Served by your own Mydia server at /player |
Nothing to install |
All platforms and install instructions
Documentation
Full documentation available at docs.mydia.dev
- Tutorials - get Mydia running from scratch
- How-to guides - install, connect clients and indexers, deploy
- Reference - environment variables, configuration, database, API
- Explanation - how Mydia works and why
- Contributing - development setup
Screenshots
Shown in the dark theme. Mydia ships light, dark and follow-your-system, and the dashboard above switches with your GitHub theme.
| Movies | TV Shows | Series | Calendar |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Contributing
./dev up -d # Start development environment
./dev mix ecto.migrate # Run migrations
./dev mix test # Run tests
./dev mix precommit # Run all checks
See the Development Guide for details.
Documentation
Docs are built with MkDocs and Material for MkDocs. Requires uv.
uv sync --project docs # Install dependencies
uv run --project docs mkdocs serve # Serve at http://localhost:8000
uv run --project docs mkdocs build # Build static site to /site
License
Built with Elixir & Phoenix
Media gallery
1 / 5Requirements
Additional configuration options documented here: https://github.com/getmydia/mydia#-environment-variables-reference
Related apps
Explore more like this
Explore allDetails
ghcr.io/getmydia/mydia:latestRuntime arguments
- Web UI
http://[IP]:[PORT:4000]/- Network
bridge- Privileged
- false
Template configuration
Container Port: 4000
- Target
- 4000
- Default
- 4000
- Value
- 4000
Generate with 'openssl rand -base64 48'
- Target
- SECRET_KEY_BASE
Generate with 'openssl rand -base64 48'
- Target
- GUARDIAN_SECRET_KEY
Change to your domain or IP address
- Target
- PHX_HOST
- Default
- localhost
- Value
- localhost
Path to your movies folder on the host system
- Target
- /media/movies
Path to your TV shows folder on the host system
- Target
- /media/tv
Path to your downloads folder on the host system
- Target
- /media/downloads
Path to the configuration folder
- Target
- /config
- Default
- /mnt/user/appdata/mydia/config
- Value
- /mnt/user/appdata/mydia/config
Internal application port. Not recommended to change.
- Target
- PORT
- Default
- 4000
- Value
- 4000
Internal path to movies folder. Not recommended to change.
- Target
- MOVIES_PATH
- Default
- /media/movies
- Value
- /media/movies
Internal path to TV shows folder. Not recommended to change.
- Target
- TV_PATH
- Default
- /media/tv
- Value
- /media/tv
Internal path to the database file. Not recommended to change.
- Target
- DATABASE_PATH
- Default
- /config/mydia.db
- Value
- /config/mydia.db





