5.8 KiB
🎵 Deezer Downloader for Nextcloud
🧩 Description
Ce projet a pour objectif d’évoluer vers une application Nextcloud native.
Pour le moment, il s’agit d’une application externe avec dossier partagé et commande SSH pour interagir avec Nextcloud.
Le projet est basé sur le dépôt GitHub original : kmille/deezer-downloader.
👉 Un grand merci à ses auteurs pour leur excellent travail !
❓ Objectif
L’idée est d’intégrer à Nextcloud un raccourci permettant aux utilisateurs de télécharger leurs musiques, albums et playlists directement depuis leur espace Nextcloud.
Les téléchargements sont accessibles depuis la section Fichiers.
Il est également possible de choisir un répertoire dans le dossier de synchronisation de l’application interne Musique, afin d’écouter les morceaux depuis une appli compatible Subsonic ou équivalent.
🔧 Modifications apportées par rapport au dépôt original
- 🔐 Utilisation du JWT Nextcloud pour récupérer les informations de l’utilisateur connecté.
- 📂 Téléchargement dans le dossier personnel de l’utilisateur :
Music/DeezerDl. - 🚫 Vérification de la connexion Nextcloud : si non connecté → retour 403 Forbidden.
🧱 Installation sur Nextcloud (Debian 12)
⚙️ 1. Préparer le conteneur DeezerDownloader
🔄 Mise à jour
apt update && apt upgrade -y
📁 Monter le dossier Nextcloud
Créer un point de montage vers le répertoire de données Nextcloud :
mp0: /Data/NAS/nextcloud/data_directory/data/,mp=/nextcloud_user_data
👤 2. Créer l’utilisateur www-data
Vérifier s’il existe déjà
id www-data
S’il n’existe pas :
groupadd www-data
useradd -r -s /usr/sbin/nologin -g www-data www-data
Synchroniser l’UID et le GID avec ceux du conteneur Nextcloud
ls -ln /nextcloud_user_data/
# Exemple de sortie :
# drwxr-xr-x 5 100033 100033 5 Oct 19 14:57 Parent
Ici, l’UID et le GID sont 100033 :
usermod -u 100033 www-data
groupmod -g 100033 www-data
Vérifier :
id www-data
# uid=100033(www-data) gid=100033(www-data) groups=100033(www-data)
🐍 3. Installer Python et créer le venv
Installer Python et ses dépendances :
apt install -y python3 python3-venv python3-pip sudo ffmpeg
Créer le venv :
mkdir -p /var/www/venv
chown www-data:www-data /var/www/venv
chmod 750 /var/www/venv
sudo -u www-data python3 -m venv /var/www/venv
Vérifier le fonctionnement :
sudo -u www-data bash
source /var/www/venv/bin/activate
python --version
pip --version
deactivate
📦 4. Installer DeezerDownloader
Cloner le dépôt
sudo mkdir -p /var/www/app
sudo chown www-data:www-data /var/www/app
apt install -y git
sudo -u www-data git clone https://git.bonisco.fr/Grizouille/Deezer-Downloader-Nextcloud.git /var/www/app
Installer les dépendances
sudo -u www-data /var/www/venv/bin/pip install /var/www/app
sudo -u www-data /var/www/venv/bin/pip install yt-dlp paramiko PyJWT
Générer et modifier le fichier de configuration
sudo -u www-data bash
source /var/www/venv/bin/activate
deezer-downloader --show-config-template > /var/www/app/config.ini
deactivate
📝 Ensuite, édite /var/www/app/config.ini (les explications sont dans le fichier).
⚙️ 5. Créer un service systemd
Créer le fichier /etc/systemd/system/deezer_downloader.service :
[Unit]
Description=Deezer Downloader Service
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/app
ExecStart=/var/www/venv/bin/deezer-downloader --config /var/www/app/config.ini
Restart=on-failure
Environment="PATH=/var/www/venv/bin:/usr/bin"
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
Activer et démarrer le service :
sudo systemctl daemon-reload
sudo systemctl enable deezer_downloader.service
sudo systemctl start deezer_downloader.service
sudo journalctl -u deezer_downloader.service -f
🔧 6. Configurer les permissions Nextcloud
Dans le conteneur Nextcloud :
adduser nextclouddeezer
apt install sudo
nano /etc/sudoers
Ajouter à la fin du fichier :
nextclouddeezer ALL=(www-data) NOPASSWD: /usr/bin/php
Cela permet à l’utilisateur nextclouddeezer d’exécuter des commandes PHP sous www-data.
➡️ Ensuite, dans le config.ini du conteneur DeezerDownloader, renseigne le mot de passe de cet utilisateur.
💻 Développement sous Windows (VS Code)
Autoriser l’exécution de scripts PowerShell :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Activer le venv :
.\.venv\Scripts\Activate.ps1
Installer et exécuter le projet :
pip install poetry
git clone https://github.com/kmille/deezer-downloader.git
cd deezer-downloader
poetry install
poetry run deezer-downloader --show-config-template > settings.ini
Lancer le serveur :
poetry run deezer-downloader --config .\deezer_downloader\settings.ini
📚 Résumé rapide
| Étape | Action principale |
|---|---|
| 1 | Mettre à jour le conteneur |
| 2 | Créer et configurer www-data |
| 3 | Installer Python + venv |
| 4 | Cloner et installer DeezerDownloader |
| 5 | Créer le service systemd |
| 6 | Configurer les permissions Nextcloud |
✍️ Auteur : Grizouille 💡 Basé sur le travail de kmille/deezer-downloader