Skip to content

đŸ”¥Midarr, the minimal lightweight media server.

License

Notifications You must be signed in to change notification settings

dannydanchev/midarr-server

 
 

Repository files navigation

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
      - [email protected]
      - SENDGRID_API_KEY=someApiKey

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

#       Admin account
      - [email protected]
      - 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

#       OIDC / OAuth 2.0 integration
      - 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

    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:
  - [email protected]
  - SETUP_ADMIN_NAME=admin
  - SETUP_ADMIN_PASSWORD=somepassword # minimum length 12

Support

Videos

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

Subtitles

A single .srt file in the root directory of the video is currently supported. With this setup a subtitle / caption option will be available in the player view.

library/video
          └──video.srt
          └──video.mp4

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, Midarr webhooks are required in your integrations. Any updates to your media library via your integrations, a POST request will be made to the following endpoints to update your Midarr cache.

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

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 v4.x
  • Sonarr v3.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 Preview

About

đŸ”¥Midarr, the minimal lightweight media server.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 76.4%
  • HTML 19.6%
  • CSS 2.2%
  • Other 1.8%