Luctia / ezarr

Ezarr aims to make it as easy as possible to setup an entire Servarr/Jackett/BitTorrent/Usenet/PleX/Jellyfin mediacenter stack using Docker
MIT License
672 stars 73 forks source link
docker docker-compose jackett jellyfin lidarr mylar3 overseerr plex plex-media-server prowlarr qbittorrent radarr readarr sabnzbd servarr sonarr tautulli torrent usenet

EZARR

Check running

Ezarr is a project built to make it EZ to deploy a Servarr mediacenter on an Ubuntu server. The badge above means that the shell script and docker-compose file in this repository at least don't crash. It doesn't necessarily mean it will run well on your system ;) It's set up to follow the TRaSH guidelines so it should at least perform optimally. It features:

Requirements

Currently this script only works on Linux. There is a chance that the sample docker compose file will work on Windows, although untested. The only requirements other than that are Python 3 and docker with docker-compose-v2. While this script may work on docker-compose-v1 it's made to be and highly recommended to be run using v2. The easiest way to install these dependencies on Ubuntu and other Debian-based distors is by running:

sudo apt-get install python3 docker.io docker-compose-v2

For other Linux distros you may have to use a different package manager or download directly from docker's website.

Using

Using the CLI

To make things easier, a CLI has been developed. First, clone the repository in a directory of your choosing. You can run it by entering python3 main.py and the CLI will guide you through the process. This is the recommended method if you're setting this up for the first time on a new system. Please take a look at important notes before you continue. NOTE: This script will create users for each container with IDs ranging from 13001 to 13014. If you want to choose your own IDs (or some of them are occupied) you have to go through the manual install.

Manually

If you're installing this for the first time simply follow these steps. If you're coming from an older version or reinstalling with different IDs, run remove_old_users.sh to clean up old users and then follow these steps.

  1. To get started, clone the repository in a directory of your choosing. git clone https://github.com/Luctia/ezarr.git
  2. Copy .env.sample to a real .env by running $ cp .env.sample .env.
  3. Set the environment variables to your liking. Pay special attention ROOT_DIR as this is where everything is going to be stored in. The path in this value needs to be absolute. If you leave it empty it's going to install in the directory the .env file is currently in. UID should be set to the ID of the user that you want to run docker with. You can find this by running id -u from that user's shell.
  4. Run setup.sh as superuser. This will set up your users, a system of directories and ensure permissions are set correctly.
  5. Copy docker-compose.yml.sample to a real docker-compose.yml by running $ cp docker-compose.yml.sample docker-compose.yml.
  6. Take a look at the docker-compose.yml file. If there are services you would like to ignore (for example, running PleX and Jellyfin at the same time is a bit unusual), you can comment them out by placing # in front of the lines. This ensures they are ignored by Docker compose. Double check that your .env file is set up properly.
  7. Run docker compose up -d to start the containers. If it complains about permissions run the following commands to add your current user to the docker group and apply changes:
    sudo groupadd docker
    sudo usermod -aG docker $USER
    newgrp docker

    If it still doesn't work reboot your system.

That's it! Your containers are now up and you can continue to set up the settings in them. Please take a look at important notes before you continue.

Important notes

IMPORTANT IF USING NFS SHARES

SABnzbd External internet access denied message

When you're trying to access SABnzbd the first time you'll come across the message External internet access denied. To fix this simple modify the sabnzbd.ini and change inet_exposure to 4, restart the docker container for sabnzbd (docker restart sabnzbd) and now you can access the UI of SABnzbd (note: you may get a Access denied - Hostname verification failed, to fix this, simply go to the IP of your server directly instead of the hostname). After accessing the UI don't forget to set a username and password (https://sabnzbd.org/wiki/configuration/3.7/general, section Security).

For more instructions or help see also https://sabnzbd.org/wiki/extra/access-denied.html on the official SABnzbd website.

FAQ

How to update containers

There is an update_containers.sh script that takes care of this. Simply run it and it updates all containers and removes old images. If you want to keep them, simply comment out the last line of the script. It's essentially the following steps but automated: If you'd like to it manually, go to the directory of your docker-compose.yml file and run (sudo) docker compose pull. This pulls the newest versions of all images (blueprints for containers) listed in the docker-compose.yml file. Then, you can run (sudo) docker compose up -d. This will deploy the new versions without losing uptime. Afterwards, you can run (sudo) docker image prune to remove the old images, freeing up space.

Why do I need to set some settings myself, can that be added?

Some settings, particularly for the Servarr suite, are set in databases. While it might be possible to interact with this database after creation, I'd rather not touch these. It's not that difficult to set them yourself, and quite difficult to do it automatically. For other containers, configuration files are automatically generated, so these are more easily edited, but I currently don't believe this is worth the effort.

On top of the above, connecting the containers above would mean setting a password and creating an API key for all of them. This would lead to everyone using Ezarr having the same API key and user/ password combination. Personally, I'd rather trust users to figure this out on their own rather than trusting them to change these passwords and keys.