How to install Readarr on Ubuntu
Readarrrrrrrrrrrrr. I am using a container created by https://hub.docker.com/r/hotio/readarr for my Readarr setup. This setup utilizes SMB shares for storing eBooks, Deluge for downloading and Watchtower to automate updates of the hotio/readarr container. All visible through Portainer (optional).
Table of contents
Getting started
Prerequisites
- Proxmox 6.1
- Ubuntu 20.04
- https://hub.docker.com/r/hotio/readarr
- Docker
- portainer-ce
- watchtower
Set your time zone
read@arr:~$ date
Sat 11 Jan 21:22:53 GMT 2020
per@sson:~$ sudo dpkg-reconfigure tzdata
Current default time zone: 'Europe/Paris'
Local time is now:      Sat Jan 11 22:24:07 CET 2020.
Universal Time is now:  Sat Jan 11 21:24:07 UTC 2020.
read@arr:~$ $ date
Sat 11 Jan 22:24:16 CET 2020
Disable IPv6
read@arr:~$ sudo nano /etc/default/grub
(...)
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity"
GRUB_CMDLINE_LINUX=""
Change to:
(...)
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
Then run:
read@arr:~$ sudo update-grub
Change NTP server
read@arr:~$ nano /etc/systemd/timesyncd.conf 
(...)
[Time]
#NTP=
(...)
Change to
(...)
[Time]
NTP=192.168.44.1 pool.ntp.org
(...)
Restart NTP service
read@arr:~$ sudo systemctl restart systemd-timesyncd
qemu-guest-agent
read@arr:~$ sudo apt update
read@arr:~$ sudo apt upgrade
read@arr:~$ sudo apt install qemu-guest-agent
Shut down the VM. Enable Qemu Guest Agent in Proxmox and start the VM.
Prerequisites for Readarr
- SMB Shares
- Deluge SSL
- Portainer
SMB Shares
Create mount point
I’ll store the books on another server which will be shared to our Readarr installation through SMB.
read@arr:~$  sudo apt install cifs-utils
Make a folder which we will use to mount:
read@arr:~$  cd /mnt
sudo mkdir SMB
cd SMB
sudo mkdir Readarr
sudo mkdir Torrents
Add user group
read@arr:/etc/ssl/certs$ sudo groupadd -g 922 deluge
read@arr:/etc/ssl/certs$ groups read
read: read adm cdrom sudo dip plugdev lxd
read@arr:/etc/ssl/certs$ sudo usermod -a -G deluge readarr
read@arr:/etc/ssl/certs$ groups read
read : read adm cdrom sudo dip plugdev lxd deluge
Automatic mount
sudo nano /etc/fstab
#Torrents
//10.10.10.13/Torrents /mnt/SMB/Torrents cifs uid=1000,gid=1000,credentials=/root/.smbpasswd 0 0 
# Readarr
//10.10.10.13/Readarr /mnt/SMB/Readarr cifs uid=1000,gid=1000,credentials=/root/.smbpassword 0 0
Create credentials file:
read@arr:~$ sudo -i
[sudo] password for readarr: 
root@arr:~# cd ~
vim .smbpasswd
username=readarr
password=PASSWORD
root@arr:~$ sudo chmod 600 .smbpasswd
root@arr:~$ exit
View mounts:
read@arr:/mnt/SMB$ df -H
Filesystem                         Size  Used Avail Use% Mounted on
udev                               998M     0  998M   0% /dev
tmpfs                              188M  1.2M  187M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   22G  6.4G   14G  32% /
tmpfs                              563M     0  563M   0% /sys/fs/cgroup
tmpfs                              113M     0  113M   0% /run/user/1000
read@arr:/mnt/SMB$ 
Mount all:
sudo mount -a
View mounts:
read@arr:~$ df -H
Filesystem                         Size  Used Avail Use% Mounted on
udev                               998M     0  998M   0% /dev
tmpfs                              188M  1.2M  187M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   22G  6.4G   14G  32% /
tmpfs                              563M     0  563M   0% /sys/fs/cgroup
tmpfs                              113M     0  113M   0% /run/user/1000
/dev/sda2                          1.1G  207M  747M  22% /boot
//10.10.10.13/Torrents              0G    0G   47M 100% /mnt/SMB/Torrents
//10.10.10.13/Readarr             188G  1.1G  187G   1% /mnt/SMB/Readarr
Manual mount SMB shares
read@arr:~$  sudo mount -t cifs -o username=readarr,uid=1000,gid=1000 //10.10.10.13/Readarr /mnt/SMB/Readarr
read@arr:~$ sudo mount -t cifs -o username=rradaer,uid=1000,gid=1000 //10.10.10.13/Torrents /mnt/SMB/Torrents
Password for rradaer@//10.10.10.13/Torrents: 
    volumes:  
      - /mnt/SMB/Readarr:/mnt/Readarr
Deluge
Custom SSL
View your custom certificate authority with more.
don@pablo:~/easy-rsa/pki$ more custom_ca.crt
Paste the information in a file called custom_ca.crt on our host:
read@arr:~$ cd /etc/ssl/certs
read@arr:/etc/ssl/certs$ sudo nano custom_ca.crt
    volumes:  
      - /etc/ssl/certs:/etc/ssl/certs:ro
First, copy your CA to /usr/local/share/ca-certificates`
sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
then, update CA store
sudo update-ca-certificates
That’s all. You should get this output:
Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....
Adding debian:foo.pem
done.
done.
Docker
We install the necessary packages to be able to install Docker:
read@arr:~$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
We add the official Docker GPG key:
read@arr:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
We activate Docker repository and update it:
read@arr:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
read@arr:~$ sudo apt update
We install the latest Docker version:
read@arr:~$ sudo apt install docker-ce
Portainer
I use Portainer for managing Docker containers. Installing Portainer is very simple since it works in a Docker container, for this we will execute:
read@arr:~$ sudo docker volume create portainer_data
read@arr:~$ sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
read@arr:~$ sudo docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                              NAMES
83078d35b6a2        portainer/portainer-ce   "/portainer"        4 seconds ago       Up 2 seconds        8000/tcp, 0.0.0.0:9000->9000/tcp   keen_robinson
read@arr:~$ sudo docker update --restart unless-stopped 83078d35b6a2
Admin user
Create an admin user through interface http://ip-address:90000, after which you have opted for Connect local.
Connect locally.
Readarr
Install Readarr:
sudo docker volume create readarr_data
First time run to see if everything checks out OK:
sudo docker run -p 8787:8787 -e PUID=1000 -e PGID=1000 -e UMASK=002 -e TZ="Etc/UTC" -v readarr_data:/config -v /mnt/SMB/Torrents:/mnt/Torrents -v /etc/ssl/certs:/etc/ssl/certs -v /mnt/SMB/Readarr:/mnt/Readarr -v /usr/local/share/ca-certificates:/usr/local/share/ca-certificates --restart unless-stopped hotio/readarr:nightly 
Daemonize it (-d):
sudo docker run -d -p 8787:8787 -e PUID=1000 -e PGID=1000 -e UMASK=002 -e TZ="Etc/UTC" -v readarr_data:/config -v /mnt/SMB/Torrents:/mnt/Torrents -v /etc/ssl/certs:/etc/ssl/certs -v /mnt/SMB/Readarr:/mnt/Readarr -v /usr/local/share/ca-certificates:/usr/local/share/ca-certificates --restart unless-stopped hotio/readarr:nightly 
Certificate
Have to do some more research here.
General > Security > Certificate Validation * DISABLED *
Remote Path Mappings
- Host: 10.10.10.13
- Remote Path: mnt/Torrents/Finished/
- Local Path: /mnt/SMB/Torrents/Finished/
Watchtower
Auto update specific container readarr:
read@arr:~$ sudo docker pull containrrr/watchtower
Using default tag: latest
latest: Pulling from containrrr/watchtower
9b3d60226310: Pull complete 
b20cee7b2b25: Pull complete 
78104bd4b0bf: Pull complete 
Digest: sha256:d0331edc5b1c5bbf18a92fc27c50f32e8bb894cf67a06cbd33d04eb40d5c8cc2
Status: Downloaded newer image for containrrr/watchtower:latest
docker.io/containrrr/watchtower:latest
read@arr:~$ sudo docker run -d --restart=always --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower readarr watchtower --stop-timeout 300s
Fault finding
CLI
Log in to your container through CLI:
read@arr:~$ sudo docker ps
CONTAINER ID   IMAGE                   COMMAND   CREATED         STATUS         PORTS                                       NAMES
8fc303220eeb   hotio/readarr:nightly   "/init"   5 minutes ago   Up 5 minutes   0.0.0.0:8787->8787/tcp, :::8787->8787/tcp   practical_colden
sudo docker exec -it 8fc303220eeb /bin/bash
Make portainer start at boot
Go to Containers, select the portainer container and under Container details, select Restart policies and use Unless stopped and press Update.
Authors
Mr. Johnson
Acknowledgments
- https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate
- https://www.reddit.com/r/sonarr/comments/jpkf5c/deluge_error_in_sonarr_after_upgrade_to_version/
- https://phoenixnap.com/kb/update-docker-image-container
- https://github.com/Readarr/Readarr/wiki/Docker
- https://docs.docker.com/config/containers/start-containers-automatically/
- https://linoxide.com/how-tos/howto-mount-smb-filesystem-using-etcfstab/
- https://askubuntu.com/questions/1245825/cant-write-to-smbclient-mounted-network-disk-without-sudo
- https://www.caretech.io/2019/06/06/how-to-install-a-custom-certificate-authority-for-the-linux-command-line/
- https://documentation.storj.io/setup/cli/storage-node
- https://github.com/containrrr/watchtower
- http://timlehr.com/auto-mount-samba-cifs-shares-via-fstab-on-linux/