getmydia/mydia

Your personal media companion, built with Phoenix LiveView

Elixir

784

6,944 commits

updated Oct 2, 2026

See the code

See what people are saying

SourceMessageScoreDate

Mydia 0.15 (r/selfhosted)

Hey everyone, I've posted before about Mydia, it's an all-in-one media manager (yeah, another one), it's been somewhat popular, at least some people are downloading it. I'm using it everyday and the feature I'm most proud about is the Mydia Player. It's a cross-platform app written in Flutter and…

2

Oct 2, 2026

README

Mydia

CI Documentation Code health repowise TestFlight

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.

Mydia Dashboard

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

  1. Right season and episode
  2. Preferred audio language
  3. Resolution, in your profile's order; unlisted resolutions last
  4. Number of preferred audio languages
  5. Custom format score
  6. 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.

Mydia Player on the desktop

HomeShows
Mydia Player homeMydia Player shows library
PlatformGet itNotes
AndroidDownload APKAllow installs from unknown sources; updates itself afterward, track chosen in Settings
iOSInstall via TestFlightNeeds the TestFlight app
macOSDownload .dmgNotarized, updates itself
Windowsirm https://mydia.dev/install.ps1 | iex in PowerShell, or download installerPer-user install. The command avoids the SmartScreen prompt the unsigned installer gets
LinuxFlatpak or .tar.gzFlatpak recommended
WebServed by your own Mydia server at /playerNothing to install

All platforms and install instructions

Documentation

Full documentation available at docs.mydia.dev

Screenshots

Shown in the dark theme. Mydia ships light, dark and follow-your-system, and the dashboard above switches with your GitHub theme.

MoviesTV ShowsSeriesCalendar
MoviesTV ShowsSeriesCalendar

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

Significant stargazers

Daniel Bretoi

50 followers · starred Aug 2026

Santiago Fraire Willemoes

117 followers · starred Nov 2025

J0J0 Todos

75 followers · starred Nov 2025

Rémy Boulanouar

34 followers · starred Mar 2026

getmydia/mydia

Your personal media companion, built with Phoenix LiveView

Elixir

784

6,944 commits

updated Oct 2, 2026

See the code

See what people are saying

SourceMessageScoreDate

Mydia 0.15 (r/selfhosted)

Hey everyone, I've posted before about Mydia, it's an all-in-one media manager (yeah, another one), it's been somewhat popular, at least some people are downloading it. I'm using it everyday and the feature I'm most proud about is the Mydia Player. It's a cross-platform app written in Flutter and…

2

Oct 2, 2026

README

Mydia

CI Documentation Code health repowise TestFlight

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.

Mydia Dashboard

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

  1. Right season and episode
  2. Preferred audio language
  3. Resolution, in your profile's order; unlisted resolutions last
  4. Number of preferred audio languages
  5. Custom format score
  6. 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.

Mydia Player on the desktop

HomeShows
Mydia Player homeMydia Player shows library
PlatformGet itNotes
AndroidDownload APKAllow installs from unknown sources; updates itself afterward, track chosen in Settings
iOSInstall via TestFlightNeeds the TestFlight app
macOSDownload .dmgNotarized, updates itself
Windowsirm https://mydia.dev/install.ps1 | iex in PowerShell, or download installerPer-user install. The command avoids the SmartScreen prompt the unsigned installer gets
LinuxFlatpak or .tar.gzFlatpak recommended
WebServed by your own Mydia server at /playerNothing to install

All platforms and install instructions

Documentation

Full documentation available at docs.mydia.dev

Screenshots

Shown in the dark theme. Mydia ships light, dark and follow-your-system, and the dashboard above switches with your GitHub theme.

MoviesTV ShowsSeriesCalendar
MoviesTV ShowsSeriesCalendar

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

Significant stargazers

Daniel Bretoi

50 followers · starred Aug 2026

Santiago Fraire Willemoes

117 followers · starred Nov 2025

J0J0 Todos

75 followers · starred Nov 2025

Rémy Boulanouar

34 followers · starred Mar 2026

Languages

Elixir

63.8%

Dart

26.3%

Rust

4.8%

HTML

1.9%