Skip to content
This repository has been archived by the owner on Jul 20, 2023. It is now read-only.

Commit

Permalink
Update for DSM 7
Browse files Browse the repository at this point in the history
  • Loading branch information
loicdugay committed Jul 13, 2021
1 parent 20f6fd8 commit af326b3
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 49 deletions.
42 changes: 13 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,31 @@
# Auto-Update your Plex Media Server on your Synology NAS [French Edition]
# Auto-Update your Plex Media Server on your DMS 7 Synology NAS [French Edition]

## Description
Maintenez automatiquement votre serveur Plex à jour sur votre NAS Synology.
Maintenez automatiquement votre serveur Plex à jour sur votre NAS Synology DSM 7 uniquement.

## Remerciements
Ce script est basé sur les travaux de [martinorob](https://github.com/martinorob/plexupdate) que j'ai traduit en français et où j'ai ajouté des améliorations mineures pour administrer l'accès au volume d'installation de Plex automatiquement. Merci à lui de partager son travail sur [le forum de Plex](https://forums.plex.tv/t/script-to-auto-update-plex-on-synology-nas-rev6/479748).
Ce script est basé sur les travaux de [mj0nsplex](https://forums.plex.tv/u/j0nsplex), [martinorob](https://github.com/martinorob/plexupdate) et de [michealespinola](https://github.com/michealespinola/syno.plexupdate). J'ai traduit et modifié leurs scripts pour mettre à jour automatiquement Plex sur DSM 7. Dans un futur proche je ferai certainement un fork du script de [michealespinola](https://github.com/michealespinola/syno.plexupdate) pour le rendre multi-version de DSM.

## Pré-requis
1. Ajouter la clé publique de signature de paquets de Plex au Synology NAS Package Center. Pour cela, je vous invite à suivre [le tutoriel sur le site de Plex.](https://support.plex.tv/articles/205165858-how-to-add-plex-s-package-signing-public-key-to-synology-nas-package-center/) Sans cela, vous obtiendrez une erreur [289] lors de la mise à jour automatique.

1. Modifier le paramètre de ```Niveau de confiance``` de l'onglet ```Général``` des ```Paramètres``` du ```Centre de paquets``` sur la valeur ```Synology Inc. et les éditeurs de confiance```.


![Centre de paquets - Accueil](image/package-center.jpg) | ![Centre de paquets - Niveau de confiance](image/package-center-confidence.jpg)
------------ | -------------

3. Prendre note des groupes utilisateurs que vous souhaitez qui accèdent ou non au volume d'installation de Plex (pour ma part, j'autorise seulement les groupes administrators et video à accéder à ce volume). Ce volume est strictement utilisé pour le fonctionnement du serveur Plex et non pour l'accès à vos fichiers via votre client Plex. C'est pourquoi il est strictement recommandé que seul les utilisateurs avertis puissent y accéder.

3. Préparer un emplacement sur le NAS où stocker le fichier du script.
1. Préparer un emplacement sur le NAS où stocker le fichier du script.

## Utilisation
1. Télécharger le script sur votre ordinateur.

1. Ouvir le script avec votre éditeur de fichier préféré puis, modifier ```*YOUR_UNAUTHORIZED_USERS_GROUP*``` par les groupes d'utilisateurs dont **vous ne souhaitez pas autoriser** l'accéder au volume d'installation du NAS.

1. Modifier ```*YOUR_AUTHORIZED_USERS_GROUP*``` par les groupes d'utilisateurs dont **vous souhaitez autoriser** l'accéder au volume d'installation du NAS.

*Notez que les groupes commencent par un @, tandis que les utilisateurs non. Chaque groupe et utilisateur doivent être séparés d'une virgule et d'un espace. Ex. : ```@groupe1, @groupe2, utilisateur1, utilisateur2```*

4. Déposer votre script à l'emplacement que vous aurez précédemment défini sur votre NAS.
1. Déposer votre script à l'emplacement que vous aurez précédemment défini sur votre NAS.

4. Ouvrir ```Planificateur de tâches``` via le ```Panneau de configuration``` *(uniquement visible en mode avancé)*.
1. Ouvrir ```Planificateur de tâches``` via le ```Panneau de configuration``` *(uniquement visible en mode avancé)*.

4. Cliquer sur ```Créer``` > ```Tâche planifiée``` > ```Script défini par l'utilisateur```
1. Cliquer sur ```Créer``` > ```Tâche planifiée``` > ```Script défini par l'utilisateur```

4. Dans l'onglet ```Général```, nommer votre tâche et définissez l'utilisateur sur ```root```.
1. Dans l'onglet ```Général```, nommer votre tâche et définissez l'utilisateur sur ```root```.

4. Dans l'onglet ```Programmer```, choissisez la fréquence d'éxécution de votre tâche.
1. Dans l'onglet ```Programmer```, choissisez la fréquence d'éxécution de votre tâche.

4. Dans l'onglet ```Paramètres de tâche```, coller le code suivant ```bash /*SCRIPT_EMPLACEMENT*/plex_update.sh```.
1. Dans l'onglet ```Paramètres de tâche```, coller le code suivant ```bash /*SCRIPT_EMPLACEMENT*/plex_update.sh```.

4. Remplacer ```*SCRIPT_EMPLACEMENT*``` par l'emplacement de votre script sur votre NAS et cliquer sur OK.
1. Remplacer ```*SCRIPT_EMPLACEMENT*``` par l'emplacement de votre script sur votre NAS et cliquer sur OK.

4. Si vous souhaitez recevoir des courriels à chaque execution du script, cochez la case ```Envoyer les détails d'exécution par e-mail```.
1. Si vous souhaitez recevoir des courriels à chaque execution du script, cochez la case ```Envoyer les détails d'exécution par e-mail```.

4. Enjoy !
1. Enjoy !
68 changes: 48 additions & 20 deletions plex_update.sh
Original file line number Diff line number Diff line change
@@ -1,31 +1,59 @@
#!/bin/bash

# @source @martinorob https://github.com/martinorob/plexupdate
# @author @loicdugay https://github.com/loicdugay
# Author @loicdugay https://github.com/loicdugay
# Instruction sur https://github.com/loicdugay/synology-plex-auto-update
#
# Merci à
# @mj0nsplex https://forums.plex.tv/u/j0nsplex
# @martinorob https://github.com/martinorob/plexupdate
# @michealespinola https://github.com/michealespinola/syno.plexupdate

# Vérification ROOT
if [ "$EUID" -ne "0" ];
then
printf " %s\n" "Ce script DOIT être exécuté avec les persmissions root."
/usr/syno/bin/synonotify PKGHasUpgrade '{"%PKG_HAS_UPDATE%": "Le script de mise à jour automatique de Plex Media Server a échoué.\n\nCe script DOIT être exécuté avec les persmissions root."}'
printf "\n"
exit 1
fi

# Vérification de la version de DSM
DSMVersion=$(cat /etc.defaults/VERSION | grep -i 'majorversion=' | cut -d"\"" -f 2)
/usr/bin/dpkg --compare-versions 7 gt "$DSMVersion"
if [ "$?" -eq "0" ];
then
printf " %s\n" "Ce script nécessite DSM 7 pour être installé."
/usr/syno/bin/synonotify PKGHasUpgrade '{"%PKG_HAS_UPDATE%": "Le script de mise à jour automatique de Plex Media Server a échoué.\n\nCe script nécessite DSM 7 pour être installé."}'
printf "\n"
exit 1
fi

# Recherche de la version de Plex Media Server
mkdir -p /tmp/plex/ > /dev/null 2>&1
token=$(cat /volume1/Plex/Library/Application\ Support/Plex\ Media\ Server/Preferences.xml | grep -oP 'PlexOnlineToken="\K[^"]+')
token=$(cat /volume1/@apphome/PlexMediaServer/Plex\ Media\ Server/Preferences.xml | grep -oP 'PlexOnlineToken="\K[^"]+')
url=$(echo "https://plex.tv/api/downloads/5.json?channel=plexpass&X-Plex-Token=$token")
jq=$(curl -s ${url})
newversion=$(echo $jq | jq -r .nas.Synology.version)
newversion=$(echo $jq | jq -r '.nas."Synology (DSM 7)".version')
newversion=$(echo $newversion | grep -oP '^.+?(?=\-)')
curversion=$(synopkg version "PlexMediaServer")
curversion=$(echo $curversion | grep -oP '^.+?(?=\-)')

echo Version disponible : $newversion
curversion=$(synopkg version "Plex Media Server")
echo Version installée :    $curversion
echo Version installée : $curversion

if [ "$newversion" != "$curversion" ]
then
echo Nouvelle version disponible, installation en cours :
/usr/syno/bin/synonotify PKGHasUpgrade '{"[%HOSTNAME%]": $(hostname), "[%OSNAME%]": "Synology", "[%PKG_HAS_UPDATE%]": "Plex", "[%COMPANY_NAME%]": "Synology"}'
CPU=$(uname -m)
url=$(echo "${jq}" | jq -r '.nas.Synology.releases[] | select(.build=="linux-'"${CPU}"'") | .url')
/bin/wget $url -P /tmp/plex/
/usr/syno/bin/synopkg install /tmp/plex/*.spk
sleep 30
/usr/syno/bin/synopkg start "Plex Media Server"
rm -rf /tmp/plex/*
synoshare --setuser Plex NA = @*YOUR_UNAUTHORIZED_USERS_GROUP* >/dev/null
synoshare --setuser Plex RW = @*YOUR_AUTHORIZED_USERS_GROUP*,@video >/dev/null
else
echo Pas de nouvelle version à installer.
then
echo Nouvelle version disponible, installation en cours :
CPU=$(uname -m)
url=$(echo "${jq}" | jq -r '.nas."Synology (DSM 7)".releases[] | select(.build=="linux-'"${CPU}"'") | .url')
/bin/wget $url -P /tmp/plex/
/usr/syno/bin/synopkg install /tmp/plex/*.spk
sleep 30
/usr/syno/bin/synopkg start "PlexMediaServer"
rm -rf /tmp/plex/*
/usr/syno/bin/synonotify PKGHasUpgrade '{"%PKG_HAS_UPDATE%": "Le script de mise à jour automatique de Plex Media Server a installé la dernière version disponible."}'
else
echo Pas de nouvelle version à installer.
/usr/syno/bin/synonotify PKGHasUpgrade '{"%PKG_HAS_UPDATE%": "Le script de mise à jour automatique de Plex Media Server ne détecte pas de nouvelle version à installer."}'
fi
exit

0 comments on commit af326b3

Please sign in to comment.