PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Jeyg : ownCloud + Transmission

lundi 11 mai 2015 à 14:17

Transmission est un client Bittorrent disponible sur Linux et Mac. Il a la particularité de proposer une base commune pour différentes interfaces: Qt, GTK, console ou client web.

Cela rend donc possible l'installation du démon Transmission ainsi que son interface web sur un serveur. Via une simple page web, il devient ainsi possible de gérer vos torrents:

Clutch-LargeS'il est un excellent client Bittorrent, l’absence de quelques fonctionnalités se fait cruellement sentir sur cette interface web. Il est notamment impossible de récupérer vos fichiers téléchargés sur votre machine (direct download du serveur vers le client). Impossible également de déplacer les fichiers reçus dans autre dossier de votre serveur.

Ça tombe bien, tout cela, ownCloud sait parfaitement le faire. Il peut donc être intéressant de coupler ces deux logiciels. Les téléchargements seront toujours a gérer depuis Transmission, mais les fichiers téléchargés pourront être gérés depuis ownCloud. En bonus, nous verrons aussi qu'il est possible d’accéder a l'interface de Transmission directement depuis celle d'ownCloud.

Installez ownCloud, via les dépôts par exemple:
http://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud

Une fois ownCloud installé et votre compte configuré, créez un dossier Downloads. Puis, trouvez l'emplacement de ce dossier nouvellement créé dans votre système de fichier. Par exemple, /var/www/owncloud/data/user/Downloads. L'emplacement dépend de votre configuration ownCloud.
Installez transmission-daemon, par exemple via les dépôts Debian:

# aptitude install transmission-cli transmission-common transmission-daemon

Maintenant, il ne vous reste plus qu’à attribuer les droits nécessaires au dossier qui va être partagé entre transmission et apache (owncloud).

Direction le fichier de configuration de transmission:

/etc/transmission-daemon/settings.json

Modifiez le paramètre "download-dir" pour le faire pointer vers le dossier Downloads que vous avez créé plus tôt sur ownCloud. Vous pouvez également (je trouve que c'est mieux) ne pas modifier le paramètre par défaut (qui est "/home/debian-transmission") et simplement supprimer ce dossier, puis créer un lien symbolique pointant vers le dossier Downloads. Comme ceci:

# rm -r /home/debian-transmission
# ln -l /var/www/owncloud/data/user/Downloads /home/debian-transmission

Ensuite, nous allons SGID le dossier Downloads.

# chmod 2774 /var/www/owncloud/data/user/Downloads

Pour ceux qui se disent:

"chmod 2774 ?! Pardon ? Je croyais qu'il n'y avait que 3 chiffres (user, group, other) ! On m'aurait menti ?!"

Il fallait lire le manuel:

La valeur pour le mode numérique est constituée de 1 à 4 chiffres en octal (0 à 7), calculés en additionnant les bits de valeurs 4, 2 et 1, tout bit non mentionné étant considéré comme des zéros en début de chaîne. Le premier chiffre correspond aux attributs identifiant de l'utilisateur (4), identifiant du groupe (2) et suppression restreinte ou bit sticky (1). Le second chiffre correspond aux autorisations de lecture (4), écriture (2) et exécution (1) pour l'utilisateur propriétaire du fichier. Les troisième et quatrième chiffres correspondent respectivement aux autorisations d'accès pour les membres du groupe du fichier, et pour les autres utilisateurs. Les valeurs ont les mêmes significations que pour le deuxième chiffre.

Ici, l'identifiant de groupe (SGID) appliqué au dossier permet de s'assurer que tous les fichiers crées au sein de ce dossier auront pour groupe propriétaire le groupe du dossier parent. C'est extrêmement utile dans notre cas, car l'utilisateur debian-transmission va créer des fichiers. Par défaut, ces fichiers appartiendraient a debian-transmission:debian-transmission (user:group). Grâce au SGID, les fichiers appartiendront a debian-transmission:www-data (en supposant que www-data est le groupe propriétaire de Downloads). Ceci permet donc à la fois à Apache et Transmission de posséder les fichiers.

Il n'y a plus qu'à modifier le umask de transmission dans son fichier de configuration (/etc/transmission-daemon/settings.json). Habituellement, les umask sont représentés en octal (base 8). Malheureusement, json ne supporte pas cela, donc nous devons le convertir en décimal (base 10).

Ici nous avons de la chance, vu que nous souhaitons donner tous les droits a l'utilisateur et groupe propriétaire, cela nous donne un umask de 002. Le chiffre 2 s'écrit de la même façon en base 8 et 10... C'est à dire, 2.

Juste pour la culture, il est possible d'effectuer ce genre de conversion via bash:

$ echo $(( 8#002 ))
2
$ echo $(( 8#022 ))
18

Bref, on change le paramètre "umask" à 2. On reload transmission-daemon pour appliquer tous les changements.

# service transmission-daemon reload

Dernière étape, optionnelle, à effectuer seulement si vous aviez déjà des fichiers présents dans Downloads. On va juste s'assurer que les permissions sont bonnes, et actualiser l'index d'ownCloud, afin qu'il actualise les permissions à son niveau. En effet, malgré tous mes efforts, j'obtenais toujours le message "You don’t have permission to upload or create files here". C'était tout simplement dû à cet index qu'il fallait rafraichir.

# cd /var/www/owncloud/data/user/Downloads
# chmod -R g+w *
# usermod -s /bin/bash www-data
# su - www-data
$ cd /var/www/owncloud/
$ php console.php files:scan --all
$ logout
# usermod -s /usr/sbin/nologin www-data

Et voilà ! Vous pouvez à présent télécharger un iso de la toute fraiche Debian Jessie sur votre serveur Bittorrent, puis le récupérer sur votre client via ownCloud.

transmission-dl-debian

owncloud-debian-jessie

Credit:
Upload/Download picture by John Trainor, under Creative Commons BY 2.0.

Gravatar de Jeyg
Original post of Jeyg.Votez pour ce billet sur Planet Libre.