Skip to content

Instantly share code, notes, and snippets.

@IvanArjona
Last active February 21, 2024 12:27
Show Gist options
  • Save IvanArjona/34cd1ae0b863f5f18cb84e860ab33e74 to your computer and use it in GitHub Desktop.
Save IvanArjona/34cd1ae0b863f5f18cb84e860ab33e74 to your computer and use it in GitHub Desktop.
Configuración mediacenter raspberry pi con Plex, Sonarr y Jackett

Flashear SD

Descargar imagen Raspbian Lite.

Flashear imagen a la SD con Balena Etcher (Windows).

Activar ssh

Añadir carpeta /ssh a la raíz de la sd.

Acceder mediante ssh sh ssh pi@192.168.1.100

Contraseña por defecto raspberry

Cambiar contraseña passwd

Actualización

sudo apt-get update
sudo apt-get upgrade

Cambiar IP estática

Editar dhcpcd.conf sudo nano /etc/dhcpcd.conf

#static IP configuration
interface eth0
static ip_address=192.168.1.15/24
static routers=192.168.1.1
# Cloudflare dns
static domain_name_servers=1.1.1.1 1.0.0.1

[Solved] Raspbian Stretch: Setting a static IP

Instalar dependencias

sudo apt-get install apt-transport-https
sudo apt-get install git

Montar disco duro

Encontrar partición sudo fdisk –l

Crear directorio

sudo mkdir /media/hdd
sudo chown pi:pi /media/hdd

Añadir a /etc/fstab

/dev/sda1 /media/hdd ext4 defaults 0 0

Montar

sudo mount /media/hdd

How to Mount an External Hard Drive on the Raspberry Pi - Raspian

DNS dinámicas con Cloudflare

Crear registro A en el dominio.

Obtener la clave Global API Key Cloudflare.

Clonar el repositorio yulewang/cloudflare-api-v4-ddns.

git clone https://github.com/yulewang/cloudflare-api-v4-ddns.git
chmod +x cloudflare-api-v4-ddns/cf-v4-ddns.sh

Añadir una tarea programada crontab -e

0 */3 * * * ~/cloudflare-api-v4-ddns/cf-v4-ddns.sh -k APIKEY -u user@example.com -h host.example.com -z example.com > /dev/null 2>&1

Plex

Descargar Plex Media Server Linux Debian ARM v7.

wget https://downloads.plex.tv/plex-media-server-new/1.16.5.1554-1e5ff713d/debian/plexmediaserver_1.16.5.1554-1e5ff713d_armhf.deb
sudo dpkg -i plexmediaserver_1.16.5.1554-1e5ff713d_armhf.deb
rm plexmediaserver_1.16.5.1554-1e5ff713d_armhf.deb

Configurar servidor 192.168.1.100:32400/web

Desactivar DLNA.

Plex cleaner

Clonar el respositorio ngovil21/Plex-Cleaner

git clone https://github.com/ngovil21/Plex-Cleaner.git
Configuración Cleaner.conf
{
  "test": false,
  "Host": "127.0.0.1",
  "Port": "32400",
  "SectionList": [],
  "IgnoreSections": [],
  "LogFile": "",
  "LogFileMode": "",
  "trigger_rescan": true,
  "EmailLog": false,
  "EmailServer": "",
  "EmailServerPort": 0,
  "EmailServerUseTLS": false,
  "EmailUsername": "",
  "EmailPassword": "",
  "EmailRecipient": "",
  "Token": "",
  "Username": "",
  "Password": "",
  "Shared": false,
  "DeviceName": "raspberrypi",
  "RemoteMount": "",
  "LocalMount": "/media/hdd",
  "plex_delete": false,
  "similar_files": true,
  "cleanup_movie_folders": true,
  "minimum_folder_size": 0,
  "default_episodes": 0,
  "default_minDays": 0,
  "default_maxDays": 0,
  "default_action": "delete",
  "default_watched": true,
  "default_progressAsWatched": 0,
  "default_location": "",
  "default_onDeck": true,
  "default_homeUsers": "",
  "Version": 1.95,
  "Client_ID": ""
}

Añadir una tarea programada crontab -e

0 5 * * * python ~/Plex-Cleaner/PlexCleaner.py

Transmission

sudo apt-get -y install transmission-daemon
sudo systemctl stop transmission-daemon
cp /lib/systemd/system/transmission-daemon.service ~/
cat ~/transmission-daemon.service | sed s/User=debian-transmission/User=pi/g | sudo tee /lib/systemd/system/transmission-daemon.service > /dev/null
rm ~/transmission-daemon.service
sudo systemctl daemon-reload
sudo systemctl start transmission-daemon
sudo systemctl stop transmission-daemon

Editar user, password, directorios y esas cosas /home/pi/.config/transmission-daemon/settings.json.

sudo systemctl start transmission-daemon

Acceso desde 192.168.1.100:9091.

MEDIACENTER MANUAL EN RASPBERRY PI 4 (KODI + TRANSMISSION + SICKCHILL + SONARR + JACKETT)

Sonarr

Instalar libmono-cil-dev y mono 3.10

sudo apt-get install libmono-cil-dev
wget http://sourceforge.net/projects/bananapi/files/mono_3.10-armhf.deb
sudo dpkg -i mono_3.10-armhf.deb

Instalar Sonarr

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0xA236C58F409091A18ACA53CBEBFF6B99D9B78493
echo "deb http://apt.sonarr.tv/ master main" | sudo tee /etc/apt/sources.list.d/sonarr.list
sudo apt-get update
sudo apt-get install nzbdrone
sudo chown -R pi:pi /opt/NzbDrone

Script autoinicio. /etc/systemd/system/sonarr.service

sudo tee /etc/systemd/system/sonarr.service <<EOF
[Unit]
Description=Sonarr Daemon
After=network.target

[Service]
User=pi
Group=pi

Type=simple
ExecStart=/usr/bin/mono /opt/NzbDrone/NzbDrone.exe -nobrowser
TimeoutStopSec=20
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl start sonarr
sudo systemctl enable sonarr

Configurar en 192.168.1.100:8989

Sonarr Installation

Install Sonarr Raspberry Pi with Mono 3.10

Jackett

Descargar última release de Jackett

wget -c https://github.com/Jackett/Jackett/releases/download/v0.11.643/Jackett.Binaries.LinuxARM32.tar.gz
tar zxvf Jackett.Binaries.LinuxARM32.tar.gz 
sudo mv Jackett /opt/

Archivo de inicio /lib/systemd/system/jackett.service.

sudo tee /lib/systemd/system/jackett.service <<EOF
[Unit]
Description=Jackett Daemon
After=network.target

[Service]
SyslogIdentifier=jackett
Restart=always
RestartSec=5
Type=simple
User=pi
Group=pi
WorkingDirectory=/opt/Jackett
ExecStart=/opt/Jackett/jackett --NoRestart
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl start jackett
sudo systemctl enable jackett

Acceso desde 192.168.1.100:9117.

MEDIACENTER MANUAL EN RASPBERRY PI 4 (KODI + TRANSMISSION + SICKCHILL + SONARR + JACKETT)

Samba

sudo apt-get install samba samba-common-bin

/etc/samba/smb.conf

[hdd]
Comment = hdd
Path = /media/hdd
Browseable = yes
Writeable = yes
only guest = no
create mask = 0777
directory mask = 0777
Public = yes
Guest ok = yes
sudo smbpasswd -a pi
sudo /etc/init.d/smbd restart

Instalar SAMBA : preparando un NAS o servidor casero 3

Transmussion purge completed

import subprocess

#TRANSMISSION_SERVER = '9091 --auth USER:PASSWORD'

connection = 'transmission-remote {}'.format(TRANSMISSION_SERVER)
command = "{} --list | sed -e '1d;$d;s/^ *//' | cut -s -d ' ' -f 1" \
          .format(connection)
torrent_list = list(subprocess.check_output(command, shell=True)
                    .replace('*', '').split('\n')[:-1])

print(torrent_list)

for torrent in torrent_list:
    command = '{} --torrent {} --info | grep "Percent Done: 100%"' \
              .format(connection, torrent)
    try:
        download_completed = subprocess.check_output(command, shell=True)
        if download_completed:
            command = "{} --torrent {} --remove".format(connection, torrent)
            subprocess.call(command, shell=True)
    except subprocess.CalledProcessError:
        pass

Añadir una tarea programada crontab -e

0 6 * * * python ~/transmission-purge-completed.py

Guide : Auto removal of downloads from transmission 2.82

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment