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.
1. Generate secrets:
openssl rand -base64 48 # SECRET_KEY_BASE
openssl rand -base64 48 # GUARDIAN_SECRET_KEY2. 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-stopped3. Start and access:
docker compose up -dOpen http://localhost:4000 and create your admin account.
- 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
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.
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
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
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 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
./dev up -d # Start development environment
./dev mix ecto.migrate # Run migrations
./dev mix test # Run tests
./dev mix precommit # Run all checksSee the Development Guide for details.
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 /siteBuilt with Elixir & Phoenix






