dorkhub

midarr-server

🔥Midarr, the minimal lightweight media server.

midarrlabs
Elixir1.4k38 forksMITupdated 5 months ago
git clone https://github.com/midarrlabs/midarr-server.gitmidarrlabs/midarr-server

logo

Your media enjoyed with a minimal lightweight media server

Build Status Code Coverage GitHub license GitHub release (latest by date) Open Issues Closed Issues

Free and open source (and always will be), Midarr aims to provide a tailored experience for you and your users:

  • Beautifully crafted user interface
  • Real-time online statuses
  • Simple and easy invite system
  • Integrates with your existing services, Radarr and Sonarr

Preview

What is this?

This is a lightweight (albeit companion) media server to the likes of Radarr and Sonarr. Your media is left untouched and unscathed as it is served through a simple (yet familiar) web interface that puts your media front and center for you and your users to enjoy.

While other media solutions look to re-index, re-fetch and re-double handle your media library, Midarr simply leverages your pre-existing services to delight and enhance your media experience.

Preview

How is this lightweight?

  • Direct streaming. Your media served fresh off the metal.
  • Smart caching. Your media smartly kept in sync with your integrations.
  • Integrated experience. Your media kept the way you like it.

What else does this do?

Your media is served through a slick web interface providing:

  • User authentication
  • User profile settings
  • User online statuses

with more features planned ahead.

Usage

Docker compose

volumes:
  database-data:

services:
  
  midarr:
    container_name: midarr
    image: ghcr.io/midarrlabs/midarr-server:latest
    ports:
      - 4000:4000
    volumes:
      - /path/to/media:/media
    environment:
#       App config
      - APP_URL=http://midarr:4000

#       Database config
      - DB_USERNAME=my_user
      - DB_PASSWORD=my_password
      - DB_DATABASE=my_database
      - DB_HOSTNAME=postgresql

#       Admin account
      - SETUP_ADMIN_EMAIL=admin@email.com
      - SETUP_ADMIN_NAME=admin
      - SETUP_ADMIN_PASSWORD=somepassword # minimum length 12

#       Radarr integration
      - RADARR_BASE_URL=radarr:7878
      - RADARR_API_KEY=someApiKey

#       Sonarr integration
      - SONARR_BASE_URL=sonarr:8989
      - SONARR_API_KEY=someApiKey

    depends_on:
      postgresql:
        condition: service_healthy

  postgresql:
    container_name: postgresql
    image: postgres
    volumes:
      - database-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=my_user
      - POSTGRES_PASSWORD=my_password
      - POSTGRES_DB=my_database
    healthcheck:
      test: "exit 0"

Admin account

To initialise this, please provide the following environment variables. This will allow you to configure your server at the settings page.

environment:
  - SETUP_ADMIN_EMAIL=admin@email.com
  - SETUP_ADMIN_NAME=admin
  - SETUP_ADMIN_PASSWORD=somepassword # minimum length 12

Invite system

To send invitations, please provide the following environment variables. Access the settings page to invite users to your server.

environment:
  - APP_MAILER_FROM=example@email.com
  - SENDGRID_API_KEY=someApiKey

OIDC / OAuth 2.0

To use your own identity provider like Authentik, please provide the following environment variables. Go to /auth to initiate the auth flow.

environment:
  - OAUTH_CLIENT_ID=someClientId
  - OAUTH_CLIENT_SECRET=someClientSecret
  - OAUTH_ISSUER_URL=http://some-provider.url
  - OAUTH_AUTHORIZE_URL=http://some-provider.url/authorize
  - OAUTH_TOKEN_URL=http://some-provider.url/token
  - OAUTH_REDIRECT_URI=http://some-provider.url/auth/callback
  - OAUTH_USER_URL=http://some-provider.url/user

Support

Videos

  • H.264 / H.265 codec
  • AAC / MP3 audio
  • MP4 / MKV container

FAQ

Why won't my media play?

Midarr looks to your integrations to resolve your media locations. Midarr is not aware of where your media lives! A common way to mount a media library is to mount the root directory where both movies and series reside:

services:

  midarr:
    volumes:
      - /path/to/media:/media

  radarr:
    volumes:
      - /path/to/media:/media

  sonarr:
    volumes:
      - /path/to/media:/media

Why won't my media sync?

To keep your media in sync, webhook urls are required in your integrations. Midarr accepts a POST request from your integrations with your unique API Token (found on the Midarr Settings page).

Add these webhook urls to Radarr / Sonarr under Settings -> Connect -> Webhook:

Radarr example

http://midarr:4000/api/webhooks/movie?token=some-api-token

Sonarr example

http://midarr:4000/api/webhooks/series?token=some-api-token

What integrations does this support?

We support the following integration versions:

  • Radarr v5.x
  • Sonarr v4.x

Contributing

Thank you for all your contributions! Big or small - all is welcome!

Local development

  1. Fork and git clone the repository
git clone https://github.com/{ YOUR-ACCOUNT }/midarr-server.git
  1. Docker compose up the stack
cd midarr-server && docker compose up -d
  1. Service locations:

License

Midarr is open-sourced software licensed under the MIT license.

Preview

Preview Preview Preview Preview

more like this

frirss

A modern, self-hosted, customizable web frontend for FreshRSS.

TypeScript51

emby-watchparty

A synchronized watch party application for Emby media servers. Watch videos together with friends in real-time, no matt…

Python51

YiMao

YiMao · 云海求片助手 — 双核心 Telegram 影视求片机器人。订阅模式:TMDB 智能搜索一键订阅 / 趣味求片模式:AI 生成五层地狱闯关,通关解锁优先求片。深度集成 MoviePilot + Emby/Jellyfin。…

Go52

search

search projects, people, and tags