Laisser son PC branché la nuit pour récupérer des données, ce n’est pas très écolo. Pourquoi ne pas mettre à profit un RaspBerry Pi (j’ai le 3 Model B) pour faire cela, sans écran, avec juste ce qu’il faut en puissance de calcul et RAM ? Dans ce tutoriel nous allons:
- Configurer le Raspberry Pi pour y faire tourner une interface graphique de gestion des téléchargements, accessible à distance.
- Partager le dossier de téléchargement des données pour les récupérer depuis les ordinateurs en réseau
1) Prérequis
- Avoir installé Raspbian sur le Raspberry pi (tuto en anglais)
- Pouvoir s’y connecter en SSH ou via VNCViewer (option à cocher au premier boot du Pi) sauf si vous avez un écran, clavier et souris pour travailler en direct sur le Raspberry Pi
2) Installer PyLoad, un petit soft de gestion des téléchargements en Python
On met à jours les dépots :
>sudo apt-get update
On installe les dépendances de PyLoad
sudo apt-get install python-support python-crypto python-pycurl tesseract-ocr tesseract-ocr-eng python-imaging -y
On télécharge PyLoad (changer la version par la plus récente en allant voir sur le site de Pyload)
wget --no-check-certificate https://github.com/pyload/pyload/releases/download/v0.4.9/pyload-cli_0.4.9_all.deb
On l’installe :
sudo dpkg -i pyload*
On peut supprimer les fichiers d’installation :
rm pyload*.deb
On installe les paquet OpenSSL et leurs dépendances, Rhino pour le Javascript et les sites en Clic and Load :
sudo apt-get install python-pip python-dev -y
sudo pip install pyopenssl
sudo apt-get install rhino
-y
On lance PyLoad et on le configure :
pyLoadCore -s
Voici les paramètres que j’ai utilisés :
Choose your language : fr Continuer la configuration ? ([o]/n): o Modifier le dossier de configuration ? (o/[n]): n Mettre en place la configuration de base ? ([o]/n): o Nom d'utilisateur [User]: pyload Mot de passe : ton mot de passe Enable remote access ([o]/n): o Langage ([en], de, fr, it, es, nl, sv, ru, pl, cs, sr, pt_BR): fr Dossier de téléchargement [Downloads]: /home/pi/Download/ Téléchargements parallèle maximum [3]: 3 Utiliser reconnexion ? (o/[n]): n Paramétrer ssl ? (o/[n]): n Souhaitez vous configurer l'interface web ? ([o]/n): o Activer l'interface web ? ([o]/n): o Adresse [0.0.0.0]: Port [8000]: Serveur ([builtin], threaded, fastcgi, lightweight): Configuration définie avec succès. Appuyez sur entrée et redémarrer pyLoad...
Si vous avez besoin de relancer PyLoad faites :
sudo service pyload restart
On modifie les paramètres pour que PyLoad se lance au démarrage du Raspberry Pi :
sudo update-rc.d pyload defaults
Pour le désinstaller faites :
sudo dpkg -r pyload-cli
Pour lancer l’interface graphique, rendez vous dans votre navigateur web sur le RaspberryPi ou sur une machine distante si vous avez activé cette possibiltié lors de la config de PyLoad. Pour se faire rentrer localhost:8000 dans la barre d’adresse et se connecter avec les ID/mdp choisis.
3) Monter un disque dur externe sur le RaspberryPi au démarrage
Télécharger sur la carte SD du RaspberryPi va vite devenir limitant (et cher pour les grosses capacités) et abime précocément la carte SD. On privilégie un disque dur externe autoalimenté, avec une bonne alim sur le Raspberry ça passe largement. On a préalablement formaté dans le format de votre choix. J’ai pour ma part pris NTFS pour gérer les gros fichiers et le monter sous WIndows une fois mes téléchargements terminés.
Linux ne le gérant pas en natif, on installe le paquet NTFS-3g :
apt-get install ntfs-3g
Dans la console on va chercher le UUID du disque externe,
blkid
Ca nous donne par exemple : /dev/sda1: LABEL="NICOLAS" UUID="0A3430A934309A21" TYPE="ntfs" PARTUUID="994501bc-01"
Ici le UUID est 0A3430A934309A21, on le copie pour s’en servir juste après. On va éditer le fichier gérant le montage des disques au démarrage pour s’assurer que le DD Externe ait toujours le même chemin de montage.
On ouvre le fichier fstab avec l’éditeur de texte Nano :
sudo nano /etc/fstab
et on ajoute la ligne suivante (tabulation entre chaque bloc de texte, texte en bleu à remplacer par votre UUID de disque dur) :
UUID="0A3430A934309A21" /media/Disque1 ntfs defaults,nofail 0 2
On sauvegarde et on redémarre le RaspberryPi. Au prochain boot aller vérifier dans /media que le disque dur est bien monté dans le dossier Disque1 (vous pouvez le renommer d’ailleurs)
4) Enregistrer les téléchargements sur le disque dur externe
On relance une console pour modifier les paramètres de PyLoad (ou direct dans les options si vous utilisez l’interface web) :
pyLoadCore -s
On revalide les mêmes paramètres que lors de la première config sauf :
Dossier de téléchargement [Downloads]: /media/Disque1/DL
5) Partager le contenu du disque externe sur Samba pour récupérer ses téléchargements depuis d’autres postes
On lance l’installation de Samba :
sudo apt-get install samba samba-common-bin
On ajoute un utilisateur « guest » :
sudo adduser guest --home=/home/public --shell=/bin/false --disabled-password
On change les droits de la zone de partage correspondant à notre disque dur externe :
chown -R guest:guest /media/Disque1
On va sauvegarder le fichier config de Samba au cas où, puisque nous allons le modifier :
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.save
Aller dans /etc/samba et éditer le fichier smb.conf en y rajoutant à la fin (tout à la fin):
[Partage] comment = Partage Samba sur Raspberry Pi path = /home/pi/partage writable = yes guest ok = yes guest only = yes create mode = 0777 directory mode = 0777 share modes = yes
Sauvegarder et remplacer le fichier smb.conf dans etc/samba.
Redémarrer Samba :
sudo systemctl restart smbd.service
Dans Windows, on peut maintenant aller dans le réseau et trouver notre disque partagé, le mapper pour avoir un raccourci dans Poste de Travail :
[Sources : HTPC Guides (en), PiHomeServer (fr), Framboise314 (fr)]
Bonjour, super tuto mais je bloque au moment de l’acces localhost, j’ai pourtant paramétré toutes les IP avec 0.0.0.0 mais je n’y ai pas acces, ni en local ni en réseau. Cela se passe sur un RPI0W configuré en IP statique sous Pixel. Une idée de l’erreur ?
Bonjour Dan,
Chez moi, 0.0.0.0 fonctionne parfaitement par défaut. Je suis avec un Raspberry Pi 3 B sous Raspbian par contre, je ne sais pas si cela change quelquechose.
Bonsoir,
je bloque sur cette commande:
sudo pip install pyopenssl
j ai ce message d erreur quelqu un a une idée ?
Si je fais un -upgrade rien ne se passe non plus …
Je ne sais pas si ca vient de la mais du coup je n arrive pas a me connecter a distance ….
Requirement already satisfied (use –upgrade to upgrade): pyopenssl in /usr/lib/python2.7/dist-packages
Si problème là :
$ sudo dpkg -i pyload*
Ma solution :
$ sudo dpkg –configure -a
$ sudo apt-get install python-qt4
$ sudo apt –fix-broken install
$ sudo dpkg -i pyload*
Si problème là :
$ sudo pip install pyopenssl
Ma solution :
$ sudo apt-get install libssl-dev python-dev libffi-dev
$ sudo pip install pyopenssl
Bonjour,
Je ne comprends pas. Je viens d’installer raspbian version strecth sur mon rasp et ensuite je tente l’instalation de pyload et voici les erreurs que je rencontre :
—————
## Vérification du Système ##
Version de Python : OK
pycurl : OK
sqlite3 : OK
pycrypto : OK
py-OpenSSL : OK
py-imaging : absent
tesseract : absent
PyQt4 : absent
Vous avez installé jinja2 version 2.8, elle semble trop ancienne.
Vous pouvez continuer en toute sécurité mais si l’interface web ne fonctionne pas,
mettez à jour ou désinstallez la, pyLoad inclus une librairie jinja2 suffisante.
jinja2 : absent
beaker : OK
moteur JS : OK
Vérification du système fini, appuyer sur entrée pour voir votre rapport de status.
## Status ##
Fonctions disponibles : décryptage des conteneurs, connexion ssl, Interface web, extension Click’N’Load
Fonctions indisponibles :
La Reconnaissance des catchas n’est pas disponible
Ceci est nécessaire uniquement pour certains hôtes en tant qu’utilisateur gratuit.
Interface graphique non disponible
L’Interface Graphique.
———————
Je ne comprends pas pourquoi Jinja2 est absent d’alors qu’il détecte une version Jinja 2.8 ?
Pourquoi l’interface graphique est indisponible ?
Merci de votre aide
Même problème ! Si quelqu’un a une solution, je suis preneur!
Il vous manque peut etre quelques trucs :
sudo apt-get install libssl-dev python-dev libffi-dev
Bonjour,
je ne sais pas si quelqu’un passe encore par la mais je rencontre un soucis -> sudo pip install pyopenssl me retourne l’erreur -> sudo: pip : commande introuvable
j’ai bien suivis les étapes –
Hello,
Tout fonctionne bien c’est super merci !
Seul souci, lorsque je D/L, ça s’enregistre sur ma carte SD et non sur mon DD externe, je ne comprends pas …
Quelqu’un peut-il m’aider svp ?
J’ai trouvé la Solution, mon HDD était en vfat
https://www.raspberrypi.org/documentation/configuration/external-storage.md
Bonjour,
Bien vu !
Bonjour,
Lorsque je termine la conf de Pyload en distant (car je n’ai pas la main sur un 2nd ecran pour vérifier en local) le site ne démarre pas : connexion refused
Lorsque je regarde le fichier de conf, je n’ai pas toute la conf (j’ai l’impression)
Je n’ai pas la partie : Web interface pourtant que j’ai activé
d’ailleurs j’ai également l’erreur JINJA2 absent
Merci pour votre aide
Séb
download – « Download »:
int chunks : « Max connections for one download » = 3
str interface : « Download interface to bind (ip or Name) » = None
bool ipv6 : « Allow IPv6 » = False
bool limit_speed : « Limit Download Speed » = False
int max_downloads : « Max Parallel Downloads » = 3
int max_speed : « Max Download Speed in kb/s » = -1
bool skip_existing : « Skip already existing files » = False
downloadTime – « Download Time »:
time end : « End » = 0:00
time start : « Start » = 0:00
general – « General »:
bool checksum : « Use Checksum » = False
bool debug_mode : « Debug Mode » = False
folder download_folder : « Download Folder » = /home/pi/nas
bool folder_per_package : « Create folder for each package » = True
en;de;fr;it;es;nl;sv;ru;pl;cs;sr;pt_BR language : « Language » = en
int min_free_space : « Min Free Space (MB) » = 200
int renice : « CPU Priority » = 0
log – « Log »:
bool file_log : « File Log » = True
int log_count : « Count » = 5
folder log_folder : « Folder » = Logs
bool log_rotate : « Log Rotate » = True
int log_size : « Size in kb » = 100
permission – « Permissions »:
bool change_dl : « Change Group and User of Downloads » = False
bool change_file : « Change file mode of downloads » = False
bool change_group : « Change group of running process » = False
bool change_user : « Change user of running process » = False
str file : « Filemode for Downloads » = 0644
str folder : « Folder Permission mode » = 0755
str group : « Groupname » = users
str user : « Username » = user
proxy – « Proxy »:
str address : « Address » = « localhost »
password password : « Password » = None
int port : « Port » = 7070
bool proxy : « Use Proxy » = False
http;socks4;socks5 type : « Protocol » = http
str username : « Username » = None
reconnect – « Reconnect »:
bool activated : « Use Reconnect » = False
time endTime : « End » = 0:00
en complément, ci dessous le check de la config :
## System Check ##
Python Version: OK
pycurl: OK
sqlite3: OK
pycrypto: OK
py-OpenSSL: OK
py-imaging: OK
tesseract: missing
PyQt4: missing
Your installed jinja2 version 2.11.2 seems too old.
You can safely continue but if the webinterface is not working,
please upgrade or deinstall it, pyLoad includes a sufficient jinja2 libary.
jinja2: missing
beaker: OK
JS engine: OK
System check finished, hit enter to see your status report.
## Status ##
Features available: container decrypting, ssl connection, Webinterface, extended Click’N’Load
Featues missing:
** no Captcha OCR Recognition available **
Only needed for some hosters and as freeuser.
** Gui not available **
The Graphical User Interface.
Bon finalement, j’ai retrouvé la conf complète de PYLOAD par contre, le site est toujours en connex_refused
192.168.0.130 n’autorise pas la connexion.
Voici quelques conseils :
Vérifier la connexion
Vérifier le proxy et le pare-feu
ERR_CONNECTION_REFUSED
reconnect – « Reconnect »:
bool activated : « Use Reconnect » = True
time endTime : « End » = 0:00
str method : « Method » = ./reconnect.sh
time startTime : « Start » = 0:00
remote – « Remote »:
bool activated : « Activated » = True
ip listenaddr : « Adress » = 192.168.0.130
bool nolocalauth : « No authentication on local connections » = True
int port : « Port » = 7227
ssl – « SSL »:
bool activated : « Activated » = False
file cert : « SSL Certificate » = ssl.crt
file key : « SSL Key » = ssl.key
webinterface – « Webinterface »:
bool activated : « Activated » = True
bool basicauth : « Use basic auth » = False
ip host : « IP » = 192.168.0.130
bool https : « Use HTTPS » = False
int port : « Port » = 8000
str prefix : « Path Prefix » =
builtin;threaded;fastcgi;lightweight server : « Server » = builtin
classic;modern;pyplex template : « Template » = modern
Bonjour,
Lorsque je termine l’installation, configuration de Pyload et que je lance une commande status , j’obtiens le message d’erreur ci dessous . J’ai beau faire un « restart » le service démarre mais repasse en « inactive »
Auriez vous une idée sur le sujet ? En vous remerciant par avance.
Sébastien
● pyload.service – Python Downloader
Loaded: loaded (/etc/systemd/system/pyload.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2020-04-22 12:24:09 CEST; 1h 29min ago
Process: 388 ExecStart=/usr/bin/python /opt/pyload/pyLoadCore.py (code=exited, status=0/SUCCESS)
Main PID: 388 (code=exited, status=0/SUCCESS)
avril 22 12:24:09 raspberrypi python[388]: File « /opt/pyload/pyLoadCore.py », line 285, in start
avril 22 12:24:09 raspberrypi python[388]: res = s.start()
avril 22 12:24:09 raspberrypi python[388]: File « /opt/pyload/module/setup.py », line 40, in start
avril 22 12:24:09 raspberrypi python[388]: lang = self.ask(u »Choose your Language / Wähle deine Sprache », « en », langs)
avril 22 12:24:09 raspberrypi python[388]: File « /opt/pyload/module/setup.py », line 489, in ask
avril 22 12:24:09 raspberrypi python[388]: input = raw_input(qst + » %s: » % info)
avril 22 12:24:09 raspberrypi python[388]: EOFError: EOF when reading a line
avril 22 12:24:09 raspberrypi python[388]: This is your first start, running configuration assistent now.
avril 22 12:24:09 raspberrypi python[388]: Choose your Language / Wähle deine Sprache ([en], de, fr, it, es, nl, sv, ru, pl, cs, sr, pt_BR): Setup failed
avril 22 12:24:09 raspberrypi systemd[1]: pyload.service: Succeeded.
root@raspberrypi:/home/pi#
Bonjour, j’ai exactement le même problème, avez-vous trouvé une solution?
Ps: Merci pour le Tuto.
Bonjour Nicolas.
Merci pour ce tuto que j’ai suivi pas à pas, newbee que je suis dans le domaine.
J’ai quelques propositions, suite à mon expérience sur:
– Rapsberry Pi OS (Raspbian v10, version mars 2021, avec VNC server activé dans le menu du Pi)
– Lubuntu 20.04 (pour le PC distant qui pilote le Pi3b, via VNC-viewer).
Voici:
– python-imaging aurait été remplacé par python-pil
– peut-être préciser comment « insérer » le lien depuis le site de GitHub pour récupérer la dernière version de pyload-cli pour pouvoir executer wget à l’issue…?
– alors, c’est très con je sais, mais préciser « sudo blkid » pour trouver l’UUID du HDD branché en USB… J’ai bien cherché comme un idiot pendant 15 bonnes minutes car je ne voyais pas mon HDD USB via la commande blkid alors que mon HDD s’était automatiquement monté dans l’interface graphique du Pi (on ne se moque pas, merci).
Pour le reste, nickel: les étapes sont bien détaillées, chronologiquement et illustrées au besoin.
Un grand merci, je me répète.
Bonne journée.