- Modifié
Sickrage Multi-Utilisateurs
Il y a quelques temps, je suis tombé sur sickrage, via le tutoriel créé sur ce forum par adaur. Sickrage est presque parfait, la seul chose qui lui manque (à mon avis), est le fait qu'il ne sois pas multi-utilisateurs, j'ai donc trouvé une solution pour pouvoir le faire, et je viens donc vous la partager.
Afin de ne pas refaire la même présentation de sickrage que adaur, je vous renvoie plutôt sur son sujet. Je mets également quelques citations de lui pour reprendre l'installation de base. Sur ce tuto je me base sur sickrage, mais ceci fonctionne parfaitement sur la version originale de sickbeard.
Installation des prérequis
On commence par installer python, son module cheetah et git. Si vous ne les avez pas, ça donne ça:
$ apt-get install git-core python python-cheetah
Installation de sickbeard
On télécharge et installe sickbeard:
$ git clone https://github.com/SickRage/SickRage /opt/sickrage
$ cd /opt/sickrage
Personnellement je le mets dans opt, mais à vous de choisir.
On lui donne les droits de l'utilisateur principal (pour moi c'est xataz, c'est moi l'admin ) :
$ chown -R xataz:xataz /opt/sickrage
De cette manière seul vous pourrez mettre à jour sickbeard, les autres utilisateurs aurons par contre des messages dans la logs, mais rien de méchants.
Jusque là pas de changement par rapport au tutoriel de adaur, mais c'est la que ça change.
Le multi-utilisateurs:
Celui ci resemble au multi-utilisateurs de rtorrent/rutorrent, un fichier d'execution par utilisateur, un fichier de configuration par utilisateur, et une authentification nginx (plus proxypass, rien de compliqué).
Pour pouvoir faire du multi user, j'ai modifié le script init.ubuntu :
Donc on crée notre fichier pour notre utilisateur :
$ nano /etc/init.d/sickrage_xataz
et on copie ceci :
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: sickrage_xataz
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Should-Start: $NetworkManager
# Should-Stop: $NetworkManager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemon pour sickbeard
# Description: Permets le lancement de sickbeard en multi-utilisateurs
### END INIT INFO
# A modifier
SR_USER=xataz
SR_INSTALL=/opt/sickrage
# Pas touche
NAME=sickbeard_$SR_USER
DESC="SickBeard pour $SR_USER"
SR_HOME=$SR_INSTALL
SR_DATA=$SR_HOME/data/$SR_USER
SR_OPTS=--config=$SR_DATA/config.ini
SR_PIDFILE=$SR_DATA/sickrage.pid
# default
RUN_AS=${SR_USER-sickrage}
APP_PATH=${SR_HOME-/opt/sickrage}
DATA_DIR=${SR_DATA-/opt/sickrage}
PID_FILE=${SR_PIDFILE-/var/run/sickrage/sickrage.pid}
DAEMON=${PYTHON_BIN-/usr/bin/python}
EXTRA_DAEMON_OPTS=${SR_OPTS-}
EXTRA_SSD_OPTS=${SSD_OPTS-}
PID_PATH=`dirname $PID_FILE`
DAEMON_OPTS=" SickBeard.py -q --daemon --nolaunch --pidfile=${PID_FILE} --datadir=${DATA_DIR} ${EXTRA_DAEMON_OPTS}"
test -x $DAEMON || exit 0
set -e
if [ ! -d $PID_PATH ]; then
mkdir -p $PID_PATH
chown $RUN_AS $PID_PATH
fi
if [ ! -d $DATA_DIR ]; then
mkdir -p $DATA_DIR
chown $RUN_AS $DATA_DIR
fi
if [ -e $PID_FILE ]; then
PID=`cat $PID_FILE`
if ! kill -0 $PID > /dev/null 2>&1; then
echo "Removing stale $PID_FILE"
rm $PID_FILE
fi
fi
d_start() {
echo "Starting $DESC"
start-stop-daemon -d $APP_PATH -c $RUN_AS $EXTRA_SSD_OPTS --start --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
}
d_stop() {
echo "Stopping $DESC"
start-stop-daemon --stop --pidfile $PID_FILE --retry 15
}
d_status() {
if [ -e $PID_FILE ]
then
if [ $(cat $PID_FILE) -eq $(ps -ef | grep $PID_FILE | grep -v grep | awk '{print $2}') ]
then
echo "$DESC is running"
else
echo "$DESC is stopping"
fi
else
echo "$DESC is stopping"
fi
}
case "$1" in
start)
d_start
;;
stop)
d_stop
;;
restart|force-reload)
d_stop
sleep 2
d_start
;;
status)
d_status
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|status|force-reload}" >&2
exit 1
;;
esac
exit 0
Les seuls choses à modifier sont :
# Provides: sickrage_xataz
SR_USER=xataz
SR_INSTALL=/opt/sickrage
SR_USER est le nom de votre utilisateur, et SR_INSTALL est le répertoire d'installation, si vous avez mis un répertoire différent au mien.
Un petit chmod pour le rendre exécutable :
$ chmod +x /etc/init.d/sickrage_xataz
Ce qu'on va faire, c'est lancer ce script, cela permettra de créé les fichiers pour votre utilisateur, et on l'arrête aussi tôt :
$ /etc/init.d/sickrage_xataz start && /etc/init.d/sickrage_xataz stop
Voila les fichiers de configuration ce sont créé tous seul dans /opt/sickrage/data/xataz (si vous avez le même répertoire d'installation que moi).
On ouvre le fichier config.ini pour apporté quelques modification :
$ nano /opt/sickrage/data/xataz/config.ini
et on modifie ceci :
web_root = "/sickrage" # Pour un accès par http://monip/sickrage
web_port = 20001 # personnellement j'ai commencé à 20001, ne laisser pas 8081, car c'est le port par défault de sickbeard, donc a chaque nouvelle utilisateurs, il recréra le fichier avec ce port, et ceci bloquera le démarrage de l'application
torrent_dir = /home/xataz/downloads/.watch/ # le répertoire watch de rtorrent, la ou sickbeard téléchargera les .torrents
Et c'est tous.
Maintenant on ajoute le démarrage automatique de l'application au démarrage du serveur :
$ update-rc.d sickrage_xataz defaults
Et voila, l'étape 3 est à faire pour chaque utilisateurs.
Configuration de nginx :
Afin de pouvoir y accéder directement via l'url (https://monip/sickrage), il va falloir modifier la configuration de nginx, rien de bien méchants.
Nous allons utilisé l'authentification de nginx, plûtot que celle de sickrage.
Pour ce faire rien de bien compliqué, il suffit de modifier le fichier /etc/nginx/sites-enabled/rutorrent.conf :
$ nano /etc/nginx/sites-enabled/rutorrent.conf
Et d'ajouter après :
location ^~ /rutorrent {
root /var/www;
include /etc/nginx/conf.d/php.conf;
include /etc/nginx/conf.d/cache.conf;
location ~ /\.svn {
deny all;
}
location ~ /\.ht {
deny all;
}
}
Ceci :
location /sickrage {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_redirect off;
if ($remote_user = "xataz") {
proxy_pass http://127.0.0.1:20001;
break;
}
if ($remote_user = "test") {
proxy_pass http://127.0.0.1:20002;
break;
}
}
Pour vous expliquer rapidement, si l'utilisateur tape dans son navigateur http://monip/sickrage, Nginx vérifie l'utilisateur connecté, en fonction de l'utilisateur, il "redirige" vers le bon port.
Si mon utilisateur est xataz, il redirige vers le port 20001, précédemment configurer. Si l'utilisateur est test, vers le port 20002, etc ....
Puis on relance nginx :
$ /etc/init.d/nginx restart
Donc voila pour ce tutoriel.
Je rappel que la configuration de base (partie 1 et 2) sont totalement tiré du tutoriel de adaur, pour le reste c'est bien de moi.
Contribution
Toute contribution est la bienvenue.
N'hésitez pas à contribuer au Tutoriel, ajout d'information, correction de fautes (et il y en a), amélioration etc ...
Ça se passe ici
Questions
Toute question sur la discussion ou sur github