OMV + Docker plugin media server (Plex, PlexPy, Ombi, Libresonic, NZBGet, ruTorrent, Sonarr, Radarr, Mylar, and more)

  • Introduction


    Many new users of OpenMediaVault have selected this operating system because they want to run a media server. They expect it to provide functions such as serving media to local or remote clients and downloading and organizing new content. The good news is that OMV can perform all of these tasks! The development team has spent countless hours building plugins for services to fill these needs. However, maintaining and updating these plugins is a never-ending battle, and many of the developers don't even use these plugins themselves, so it can be tricky to troubleshoot and fix bugs. Luckily, they've provided OMV users the perfect framework that allows us to have a full-featured media server that's stable, efficient, and regularly updated: the Docker GUI plugin.


    This guide will walk you through setting up a complete media server using Docker containers provided by Linuxserver.io. Yes, there are probably (many) other containers available that may be better suited to your specific needs. This guide won't cover any of them. Linuxserver containers are widely used and issues will likely be well researched and documented, so we're using them for simplicity. Also, they are generally updated every week. If you want to explore different containers, the great thing about Docker is that you can try them without (much) concern of somehow negatively impacting the base OMV installation.


    First, some disclaimers: I am new to Docker. I am new to OpenMediaVault. I am even new to Linux. You may find throughout this guide that I've done things in a simple way that may not be optimal. I hope that experienced users will point out any vulnerabilities my process may create, or suggest better or more secure, efficient ways to do things. If they do, I will update the OP.


    And, a few assumptions: I assume that you already know how to configure and use the applications once they are running, so I will not cover setting up the applications unless there are tweaks specific to using Docker. I will also assume that you've already installed the omv-extras plugin for your version of OMV, you've enabled the Docker plugin repo, and installed and enabled the Docker GUI plugin. Again, I'm not an expert, and probably won't be able to troubleshoot any issues with getting the Docker plugin running. I assume that any folders that will be accessed by Docker have the correct permissions. Finally, I assume you'll forward any necessary ports in your router. Throughout the process, I will highlight any issues that I found and had to overcome, but it may be different for you depending on many different variables.

  • Docker plugin basics: Getting started


    Step 1: First, you'll want to have a user on your OMV machine specifically for Docker. The containers will "assume" this identity, so this is the user which will need sufficient rights to read/write to the folders. You should NOT allow Docker to run as the root user, and I also prefer to not use my primary user (the one that handles SSH, Samba, etc.). So, go to the Users tab of the OMV interface and create a new user. You'll want to add the user to the "users" group, which is likely done automatically. I'm going to refer to this user by the name "dockerperson," so just substitute your Docker user whenever you see [dockerperson] (making sure to remove the brackets). Before we start, you'll need to know the UID and GID of this user. SSH into your OMV system and run the command:


    Code
    id [dockerperson]


    Make a note of the UID and GID displayed here. Linuxserver also recommends ensuring that this user is the owner of the folders that are being accessed by the container. Personally, I have not done this, and left my directories owned by root.



    2.png3.png4.png




    Step 2: In addition, each container will have a configuration directory which you'll want mapped to a location where it can be easily found. Personally, I made a directory in the home folder for my dockerperson user, and then another folder within called ".config" where these can all be stored. Of course, you can put them wherever you want, but my examples will all use that hierarchy. If you want to use my scheme, SSH into your machine and run the following commands:


    Code
    cd home
    sudo mkdir [dockerperson]
    cd [dockerperson]
    sudo mkdir -p .config/{plex,plexpy,ombi,libresonic,nzbget,rutorrent,sonar,radar,mylar}


    5.png6.png



    Now, let's move on to the containers. I prefer to get the media serving applications running and set up first, then the programs that download, and finally, the automation programs that search for new media and send it to the download agents. For each application you plan to run on your OMV machine, you'll need to download the image and then run a container of that image with specific options defined. You'll notice that the second tab of the Docker plugin page has a built-in repository for many of the plugins that this guide covers. Personally, I find it easier to stay on the main tab and just search by name for what I'm looking for. I've never used the built-in repo, so I'm not sure if the setup of containers is any different there.


    Docker containers, by design, do not allow their running application to have access to anything that's not overtly specified. Without proper configuration, they won't be able to see the media stored on your hard drives or connect to the internet, for example. Most Linuxserver containers options follow a standard pattern which you'll likely learn very quickly.



    7.png

  • Plex
    (https://hub.docker.com/r/linuxserver/plex/)



    Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server.


    Find the Linuxserver/Plex container by searching for "Plex" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run container." Now it's time to configure the container.



    8.png9.png



    Assign a name to the container. Next, you'll want to choose a network type. Plex uses many different ports to do everything it needs to do, so "host" mode will ensure that all required ports are available and mapped from the host machine to the container. Choosing "bridge" mode will be the norm on most other containers, but Linuxserver will not provide any troubleshooting or support unless you use "host" mode for Plex.


    10.png


    Once complete, move to the section called "Environment Variables." EDIT: In order for the automatic updates to be enabled, you will need to add a new variable here. In the left column, type VERSION. To the right, you'll enter either latest, public, or a specific version number. latest will update to the latest version for which you are eligible, whether it is a Plex Pass beta or public release. public will only update to public versions, even if you are a Plex Pass subsrciber. Using a specific version number will allow you to stay only on that exact build, regardless of any future updates. Find the next open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Again, save this row. Currently, there is a bug (https://forum.openmediavault.o…ate-Environment-Variable/) that causes an error with one of the pre-loaded Environment Variables here (this may no longer be necessary). Find the line called "PLEX_INSTALL" and unlock it for editing. Erase the text that's prefilled in the right column and paste "https://plex.tv/downloads/latest/1?channel=8&build=linux-ubuntu-x86_64&distro=ubuntu" in that field. Save that field, and move to the next section. This is where we'll map directories to which Plex should have access.



    11.png



    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section.


    Plex also needs to see all of your media folders. For me, I'll need to select six folders: Movies, Kids' Movies, TV, Kids' TV, Photos, and Music. They'll be easier to find if you nest them behind the same parent folder. I tend to arrange them under "/media." So, the rows will be "/media/movies," "/media/kids movies," and so on.


    Finally, there is an optional transcode directory. If you don't map it, the container will use the system drive. If you want to avoid that, choose a different location here. I have an extra SSD in my live system that I use for this and a few other containers you'll see later on.



    12.png



    That's it! So, click "Save" and the container will start to run with your mapped options. You should be able to visit the Plex server setup page at [serverlocalip]:32400 (for example, 192.168.1.5:32400). Keep in mind that some containers take a longer time to start than others, so if you receive a "page not found" error, just trying waiting 15 seconds and refreshing. As you set up your new Plex server and add the libraries, thhe media folders will follow the same folder hierarchy as how you mapped them. So, for me, they're under "/media."


    One great feature about the Linuxserver Plex container is that once you log in using your Plex credentials the first time, the container will find the newest version of the Plex Media Server software for which you're eligible (Plex Pass vs. free user) and automatically upgrade it when you restart the container. I normally do this immediately after finishing the initial server setup by navigating to the server options and switching the update channel to "Plex Pass." Then, you can go back to the Docker plugin tab, click "restart" on the Plex container, and let it update for you. This is why you had to fix that broken Environment Variable earlier: the container needs to know where to find the compatible release. The container will take a bit longer to start this time since it has to update first. You can click on the "logs" button if you'd like to make sure the process is working and there are no errors. Once you can visit the Plex configuration page again, just verify the version number and that there are no more updates available.

  • PlexPy
    (https://hub.docker.com/r/linuxserver/plexpy/)



    PlexPy Is a Python-based Plex usage tracker that is currently in active development.


    Find the Linuxserver/PlexPy container by searching for "PlexPy" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.



    13.png14.png


    Assign a name to the container. Next, you'll want to choose a network type. PlexPy requires only one port, which is 8181 by default. If this works for you, and there are no conflicts with other services on your machine, select "host" mode. If you'd prefer to change it, choose "bridge" mode and type the port you'd like to use under the "host" column, and select the "8181/tcp" option in the drop-down box. Save this row.



    15.png



    Once complete, move to the section called "Environment Variables." Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field, and move to the next section. This is where we'll map directories to which PlexPy should have access.


    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section.


    You also saw that PlexPy wants access to a "/logs" folder. This is not for logs generated by PlexPy, but actually your Plex container. These will be found in the "/config" directory you mapped while setting up Plex. For me, they are found in "/home/[dockerperson]/.config/plex/Library/Application Support/Plex Media Server/Logs" but yours may vary. Since PlexPy should not be able to modify these logs, you can click the "Read Only" button before saving this row.



    16.png



    Now, run the container and navigate to YOURIP:8181 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports. To simplify things for myself, go into the PlexPy settings and change the port to the port you'd like to use permanently. Then, go and "modify" the PlexPy container. Change the host port to the number you selected and enter the same port for the container on the right side as well. Save these changes and your container will restart automatically. To get back to the UI, make sure you use the new port number or your browser won't be able to locate it.



    17.png

  • Ombi
    (https://hub.docker.com/r/linuxserver/ombi/)



    Ombi is a self-hosted web application that automatically gives your shared Plex or Emby users the ability to request content by themselves! Ombi can be linked to multiple TV Show, Movie and Music DVR tools to create a seamless end-to-end experience for your users.


    Find the Linuxserver/Ombi container by searching for "Ombi" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.



    18.png19.png



    Assign a name to the container. Next, you'll want to choose a network type. Ombi requires only one port, which is 3579 by default. If this works for you and there are no conflicts with other services on your machine, select "host" mode. If you'd prefer to change it, choose "bridge" mode and type the port you'd like to use under the "host" column, and select the "3579/tcp" option in the drop-down box. Save this row.



    20.png



    Once complete, move to the section called "Environment Variables." Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field, and move to the next section. This is where we'll map directories to which Ombi should have access.


    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section. There are no additional directories to which Ombi needs access, so move on.



    21.png



    Run the container and find the Ombi UI at YOURIP:3579 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports to simplify things for myself. Go into the Ombi settings and change the port to the port you'd like to use permanently. Then, go and "modify" the Ombi container. Change the host port to the number you selected and enter the same port for the container on the right side as well. Save these changes and your container will restart automatically. To get back to the UI, make sure you use the new port number or your browser won't be able to locate it.



    22.png

  • LibreSonic
    (https://hub.docker.com/r/linuxserver/libresonic/)



    Libresonic is a free, web-based media streamer, providing ubiquitous access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.


    Find the Linuxserver/Libresonic container by searching for "Libresonic" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.



    23.png24.png



    Assign a name to the container. Next, you'll want to choose a network type. Libresonic requires only one port, which is 4040 by default. If this works for you, and there are no conflicts with other services on your machine, select "host" mode. If you'd prefer to change it, choose "bridge" mode and type the port you'd like to use under the "host" column, and select the "4040/tcp" option in the drop-down box. Save this row.



    25.png



    Once complete, move to the section called "Environment Variables." Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field, and move to the next section. This is where we'll map directories to which Libresonic should have access.


    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right “Container Path” column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section.


    Libresonic also needs to see your music folders. You saw the specific folders when you typed the forward slash, but I personally only use Music, Playlists and Podcasts. If you don’t use the Podcast feature, I assume you can leave that folder out.



    26.png



    Now, run the container and navigate to YOURIP:4040 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports. To simplify things for myself, go into the Libresonic settings and change the port to the port you'd like to use permanently. Then, go and "modify" the Libresonic container. Change the host port to the number you selected and enter the same port for the container on the right side as well. Save these changes and your container will restart automatically. To get back to the UI, make sure you use the new port number or your browser won't be able to locate it.



    27.png

  • NZBGet
    (https://hub.docker.com/r/linuxserver/nzbget/)



    NZBGet is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.


    Find the Linuxserver/NZBGet container by searching for "NZBGet" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.


    Assign a name to the container. Next, you'll want to choose a network type. NZBGet requires only one port, which is 6789 by default. If this works for you and there are no conflicts with other services on your machine, select "host" mode. If you'd prefer to change it, choose "bridge" mode and type the port you'd like to use under the "host" column, and select the "6789/tcp" option in the drop-down box. Save this row.



    28.png29.png



    Once complete, move to the section called "Environment Variables." Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field, and move to the next section. This is where we'll map directories to which NZBGet should have access.



    30.png



    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section. Then, we’ll need to give NZBGet a place to save the files it downloads by mapping “/downloads.” After that, there are no more folders to which NZBGet needs access.



    31.png



    Run the container and find the NZBGet UI at YOURIP:6789 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports to simplify things for myself. Go into the NZBGet settings and change the port to the port you'd like to use permanently. Then, go and "modify" the NZBGet container. Change the host port to the number you selected and enter the same port for the container on the right side as well. Save these changes and your container will restart automatically. To get back to the UI, make sure you use the new port number or your browser won't be able to locate it.



    32.png

  • ruTorrent
    (https://hub.docker.com/r/linuxserver/rutorrent/)



    ruTorrent is a front-end for the popular bittorrent client rtorrent.


    Find the Linuxserver/rutorrent container by searching for "rutorrent" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.



    33.png34.png



    Assign a name to the container. Next, you'll want to choose a network type. ruTorrent requires a few ports: one on which to view the GUI, and others for the bittorrent protocol that facilitates file transfers to other users. Since the default port for the ruTorrent UI is 80, you’ll almost certainly have a conflict, since that is the same port that OMV uses to display its own UI. Therefore, you’ll want to map this to something else. I’ve used port 18080 in my example. You’ll have to manually select a port (or range of ports) for the bittorrent traffic, because no default is available. Choose "bridge" mode and type the ports you'd like to use under the "host" column, and select the corresponding default option in the drop-down box, or type in the port number you’re going to assign to rtorrent. Save these rows.



    35.png



    Once complete, move to the section called "Environment Variables." Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field, and move to the next section. This is where we'll map directories to which ruTorrent should have access.


    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section. Then, we’ll need to give ruTorrent a place to save the files it downloads by mapping “/downloads.” After that, there are no more folders to which ruTorrent needs access.



    36.png



    Run the container and find the ruTorrent UI at YOURIP:18080 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports to simplify things for myself. You will find the rtorrent.rc file (which contains all the configuration for rtorrent) in the mapped /config folder. This is where you’ll go to assign the bittorrent ports, for example. There are many tweaks and changes that can be done in this file, but you’ll have to find that information elsewhere. Make sure to use the same port number or range in this file as what you’ve mapped to the container, or else your container won’t be able to establish a connection to other peers/seeders.


    Also, for those of you that use the unionfilesystem and MergerFS to create a pool, and your /downloads folder is located on this pool, YOU MUST REMOVE THE DIRECT_IO OPTION FROM MERGERFS or else ruTorrent will never be able to write downloaded data and your torrents will remain at 0% permanently.



    37.png

  • Sonarr
    (https://hub.docker.com/r/linuxserver/sonarr/)



    Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.


    Find the Linuxserver/sonarr container by searching for "sonarr" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.



    38.png39.png



    Assign a name to the container. Next, you'll want to choose a network type. Sonarr requires only one port, which is 8989 by default. If this works for you and there are no conflicts with other services on your machine, select "host" mode. If you'd prefer to change it, choose "bridge" mode and type the port you'd like to use under the "host" column, and select the "8989/tcp" option in the drop-down box. Save this row.



    40.png



    Once complete, move to the section called "Environment Variables." Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field, and move to the next section. This is where we'll map directories to which Sonarr should have access.


    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section. Sonarr also needs to know the path to all your TV libraries. I like to use the same paths as I did on Plex, which would be “/media/tv” and “/media/ kids tv.” Finally, once Sonarr has sent a release to your NZBGet or ruTorrent container for download, it needs to be able to automatically place these new media files into your library, which means it needs access to the completed download folders of those applications. This will vary depending on the settings you’ve used inside those applications and whether you are using categories to further separate your downloaded media. As a result, this may take some trial and error. You can see how I’ve mapped my folders in the screenshots below. Also, for the first time, I also use a new category called “Volumes from” that we haven’t discussed before. Here, I select all the other containers with which Sonarr needs to interact. In that case, that is Plex (library locations), ruTorrent and NZBGet (completed download locations). To be fair, I am not sure that you need to map the volumes individually as well as the “Volumes from” section. I initially had trouble with automatically importing content until I did this, but it seems to me that they are redundant. Please chime in if you can provide some clarity in this area.



    41.png42.png



    Run the container and find the Sonarr UI at YOURIP:8989 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports to simplify things for myself. Go into the Sonarr settings and change the port to the port you'd like to use permanently. Then, go and "modify" the Sonarr container. Change the host port to the number you selected and enter the same port for the container on the right side as well. Save these changes and your container will restart automatically. To get back to the UI, make sure you use the new port number or your browser won't be able to locate it.



    43.png

  • Radarr
    (https://hub.docker.com/r/linuxserver/radarr/)



    Radarr is an independent fork of Sonarr reworked for automatically downloading movies via usenet and bittorrent. The project was inspired by other usenet/bittorrent movie downloaders such as CouchPotato.


    Find the Linuxserver/radarr container by searching for "radarr" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.



    44.png45.png



    Assign a name to the container. Next, you'll want to choose a network type. Radarr requires only one port, which is 7878 by default. If this works for you and there are no conflicts with other services on your machine, select "host" mode. If you'd prefer to change it, choose "bridge" mode and type the port you'd like to use under the "host" column, and select the "7878/tcp" option in the drop-down box. Save this row.



    46.png



    Once complete, move to the section called "Environment Variables." Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field, and move to the next section. This is where we'll map directories to which Radarr should have access.


    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section. Radarr also needs to know the path to all your movie libraries. I like to use the same paths as I did on Plex, which would be “/media/movies” and “/media/ kids movies.” Finally, once Radarr has sent a release to your NZBGet or ruTorrent container for download, it needs to be able to automatically place these new media files into your library, which means it needs access to the completed download folders of those applications. This will vary depending on the settings you’ve used inside those applications and whether you are using categories to further separate your downloaded media. As a result, this may take some trial and error. You can see how I’ve mapped my folders in the screenshots below. Once again, I am using the category called “Volumes from,” where I select all the other containers with which Sonarr needs to interact. In that case, that is Plex (library locations), ruTorrent and NZBGet (completed download locations). To be fair, I am not sure that you need to map the volumes individually as well as the “Volumes from” section. I initially had trouble with automatically importing content until I did this, but it seems to me that they are redundant. Please chime in if you can provide some clarity in this area.



    47.png48.png



    Run the container and find the Radarr UI at YOURIP:7878 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports to simplify things for myself. Go into the Radarr settings and change the port to the port you'd like to use permanently. Then, go and "modify" the Radarr container. Change the host port to the number you selected and enter the same port for the container on the right side as well. Save these changes and your container will restart automatically. To get back to the UI, make sure you use the new port number or your browser won't be able to locate it.



    49.png

  • Mylar
    (https://hub.docker.com/r/linuxserver/mylar/)



    Mylaris an automated comic book (cbr/cbz) downloader program heavily-based on theHeadphones template and logic (which is also based on SickBeard).


    Find the Linuxserver/mylar container by searching for "mylar" in the search bar on the Docker plugin. Note that clicking the "i" icon on the dialogue box will open the description and details page of the container, which is nice to have open for reference. Once the image has been downloaded, click "run image." Now it's time to configure the container.



    50.png51.png


    Assign a name to the container. Next, you'll want to choose a network type. Mylar requires only one port, which is 8090 by default. If this works for you and there are no conflicts with other services on your machine, select "host" mode. If you'd prefer to change it, choose "bridge" mode and type the port you'd like to use under the "host" column, and select the "8090/tcp" option in the drop-down box. Save this row.



    52.png



    Once complete, move to the section called "Environment Variables."Find the first open line and enter "PUID" on the left column. To the immediate right, enter the UID number you found earlier for your [dockerperson] user. Save that row and another will appear. Here, you'll enter "PGID" on the left, and enter the GID on the right. Save that field and move to the next section. This is where we'll map directories to which Mylar should have access.


    I have adopted a new system of mapping directories within Docker containers. Visit this post for more information, then come back here to resume setup.


    I like to start under the right column and type a "/" to see what defaults are being expected by the container. Sometimes I'll use them, and sometimes I'll ignore them and do things my way. I always start with the config folder. So, either type "/config" in the right column, or click on it in the dropdown list. To the left, you'll navigate to the config folder you specified in the "Getting Started" section. Mylar also needs to know the path to all your comic book libraries. Finally, once Mylar has sent a release to your NZBGet or ruTorrent container for download, it needs to be able to automatically place these new media files into your library, which means it needs access to the completed download folders of those applications. This will vary depending on the settings you’ve used inside those applications and whether you are using categories to further separate your downloaded media. As a result, this may take some trial and error. You can see how I’ve mapped my folders in the screenshots below. Once again, I am using the category called “Volumes from,” where I select all the other containers with which Mylar needs to interact. In that case, that is ruTorrent and NZBGet (completed download locations). To be fair, I am not sure that you need to map the volumes individually as well as the “Volumes from” section. I initially had trouble with automatically importing content until I did this, but it seems to me that they are redundant. Please chime in if you can provide some clarity in this area.



    53.png54.png


    Run the container and find the Mylar UI at YOURIP:8090 (or whichever port you chose in "bridge" mode). Personally, I have all my containers mapped to a consistent range of ports to simplify things for myself. Go into the Mylar settings and change the port to the port you'd like to use permanently. Then, go and "modify" the Mylar container. Change the host port to the number you selected and enter the same port for the container on the right side as well. Save these changes and your container will restart automatically. To get back to the UI, make sure you use the new port number or your browser won't be able to locate it.



    55.png

  • Alternate method of mapping directories:


    In response to some questions directed to me by OMV users, I've decided to post an update with an alternate way to ensure that all your media server Docker containers have access to all the required directories. Instead of mapping the necessary directories to each individual container, you will create one master storage container and attach it to every application container that you run. This will save you time and headaches, as it will eliminate problems from misspelled or forgotten paths. Also you'll be sure that each and every container will have access to all the necessary locations and not have to go back and edit them when you realize you've forgotten something.


    Before you begin, you'll want to become familiar with EVERY path (except config paths: MAKE SURE YOU READ THE DIRECTIONS FOR MAPPING A /CONFIG FOLDER ON THE POSTS ABOVE) used by ALL of your application images. This single storage container will map every one of them, so it's a good idea to go through each container and make a master list of all the directories that need to be mapped. You can't modify a storage container once it's created, so be extra thorough here. This could easily be 20+ paths depending on what containers you're using. (Personally, I have reduced my storage container to only two paths, contrary to what you see on the pics below. I simply map a /storage location and a /media location. All my folders are nested under these two parents.)


    First, we'll create a storage container by clicking the "Create" button in the lower "Docker Containers" section. You will notice that you HAVE to choose an image in order to create this container, so I chose my smallest image, which is Watchtower at 8.3 MB. I actually don't currently use a Watchtower container at all, but since I still had the image downloaded, I decided to use it for this purpose. Keep in mind that it doesn't really matter what you choose here. Next, you'll enter a name. For simplicity, mine is simply called "Storage."


    Finally, here is where we'll map EVERY folder in our list from earlier. Don't worry about putting them in any particular order, just double and triple check that you haven't missed any. Once you've finished, simple click "Save" and your new storage container will be running.


    Screenshot from 2018-06-04 16-38-34.pngScreenshot from 2018-06-04 16-38-421.png



    Then, you'll go to each application container that's currently running and modify it by removing all the paths in the "Volumes and Bind Mounts" section, with the exception of the config folder. Directly below is a section called "Containers From." It is here that you'll choose your storage container from the drop-down list. Make sure to click the plus sign afterwards, and then save the container. If you've mapped everything identically to the way it was set up previously, you won't need to change anything inside your application.


    Screenshot from 2018-06-04 16-44-44.png

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!