Table of Contents

Media Server

Uses Swizzin to setup a media server with Plex and various downloaders

Setup

First, install a minimal installation of Debian 10 with the following changes:

Install Debian 10

  • Download the latest 64-bit PC netinst iso file from debian.org
  • In ESXi:
    • Upload the iso to the iso folder in the datastore
    • Create/Register VM:
      • Create a new virtual machine
      • Name the VM, and choose Linux and Debian GNU/Linux <xx> (64-bit)
      • Specify the desired Target Datastore
      • Customise:
        • CPU:
          • Use the full amount of cores per socket to end up with one socket
        • If using NVMe storage for the datastore:
          • Add other device > NVMe controller
          • Hard Disk 1 > Controller location > NVMe controller 0
          • Remove SCSI controller 0
        • VM Options > Boot Options > Enable Force BIOS setup
        • Select other appropriate VM settings depending on desired applications
      • Confirm settings and Finish
    • If autostart is desired for this machine go to Host > Manage > System > Autostart:
      • Click on the current VM
      • Enable
      • Use Start earlier and Start later to set the desired order
    • Go to Virtual Machines on the sidebar and click on the current VM
      • Run and then stop the VM, it should have booted to its BIOS
      • Give the VM a static IP address from your router using the generated MAC address (found under Hardware Configuration > Network adapter 1) and desired hostname
      • Power on the VM
      • Go through the Debian setup process
        • Give an empty password for root to disable root login and setup sudo
        • In software selection, selecting only the SSH server and Standard system utilities
      • Once setup is finished and it has booted
        • Log in as the created user
        • Run:
          # Install VMWare tools if not already
          sudo apt install open-vm-tools
           
          # Change the SSH port to 50001:
          sudo sed -i "s/#Port 22/Port 50001/" /etc/ssh/sshd_config
          # Optionally enable root SSH login
          sudo sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/" /etc/ssh/sshd_config
           
          # Optionally set the timezone to UTC:
          timedatectl set-timezone UTC
           
          exit
    • Shut down the VM
    • Edit VM note to be the following:
      Minimal server installation of Debian <xx>
      
      Ports:
      50001/tcp SSH
    • Save a snapshot called Base Install
2020/12/22 08:35 · derek

Install Swizzin

Setup Base Things

sudo apt install cifs-utils
 
# Setup mount points
mkdir /mnt/Music /mnt/Video
chmod 777 /mnt/Music /mnt/Video
rm -r /home/derek/torrents/deluge # Check using ls -a for hidden files first
 
# Using this command, add the following lines to fstab:
sudo nano /etc/fstab
# Lines to add (replace the password):
//FileServer/Downloads /home/derek/torrents cifs user=Media,password=<password>,x-systemd.automount,rw,dir_mode=0777,file_mode=0777,uid=1000,gid=1000  0  0
//FileServer/Music     /mnt/Music           cifs user=Media,password=<password>,x-systemd.automount,rw,dir_mode=0777,file_mode=0777,uid=1000,gid=1000  0  0
//FileServer/Video     /mnt/Video           cifs user=Media,password=<password>,x-systemd.automount,rw,dir_mode=0777,file_mode=0777,uid=1000,gid=1000  0  0
 
# Allow CIFS mounts to show in the panel admin page
# Using this command, change the ''get_mounts()'' function to match the function below
sudo -u swizzin nano /opt/swizzin/core/util.py
 
# Restart
sudo shutdown 0

The resulting get_mounts() function (added the two lines between the octothorpes):

def get_mounts():
    mounts = []
    with open("/proc/mounts") as mount:
        for line in mount:
            fields = line.strip().split()
            if fields[0].startswith("/dev"):
                if ("boot" in fields[1]) or ("fuse" in fields) or ("/snap/" in fields[1]) or ("/loop" in fields[0]):
                    continue
                else:
                    mounts.append(fields[1])
            ###
            elif fields[0].startswith("//"):
                mounts.append(fields[1])
            ###
    with open("/etc/fstab") as fstab:
        for line in fstab:
            fields = line.strip().split()
            if "bind" in str(fields):
                try:
                    mounts.remove(fields[1])
                except:
                    pass
    return mounts

Configure Services

FIXME: setup any other upgrade things?

# Follow the setup from the following, using defaults except for daily updates selecting no
sudo box upgrade plex

FIXME: Figure out Lidarr process

Deluge Chrome Integration

Set up Remote Torrent Adder (Github) for Chrome:

Update

FIXME: Finish writing update process

  • If desired, Log in to ESXi, navigate to the docker VM and create new snapshot
  • Using an SSH client, connect to <hostname>:50001 then run:
    sudo apt update
    sudo apt upgrade
    sudo reboot  # If desired/needed
2020/12/22 08:35 · derek

FIXME: Deluge

sudo box upgrade plex

* Sonarr, Radarr, and Lidarr all update from their respective pages

Sources

Notes

Folder format

~
  torrents          (mapped to //fileserver/Downloads)
    deluge          (Deluge target)
    Music           (symlink on smb server)
      Add to Music
        Lidarr      (Lidarr target)
    Videos          (symlink on smb server)
      Movies        (Radarr target)
      TV Shows      (Sonarr target)
/mnt
  Music             (//fileserver/Music)
    iTunes
      iTunes Media  
        Music       (Plex Library)
  Video             (//fileserver/Video)
    Movies          (Plex Library)
    TV Shows        (Plex Library)

Quality Settings

FIXME: Lidarr qualities

Alternatives

TODO