2025-11-20 16:20:57 +01:00
2025-11-06 22:42:49 +01:00
2025-11-20 16:20:57 +01:00
2025-11-06 22:42:49 +01:00
2025-11-06 22:42:49 +01:00
2025-11-06 22:42:49 +01:00
2025-11-06 22:42:49 +01:00
2025-11-06 22:42:49 +01:00
2025-11-06 22:42:49 +01:00
2025-11-06 22:42:49 +01:00
2025-11-06 22:42:49 +01:00
2025-11-12 21:35:06 +00:00

🎵 Deezer Downloader for Nextcloud

🧩 Description

Ce projet a pour objectif dévoluer vers une application Nextcloud native.
Pour le moment, il sagit dune 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

Lidée est dinté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 lapplication 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 lutilisateur connecté.
  • 📂 Téléchargement dans le dossier personnel de lutilisateur : 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 lutilisateur www-data

Vérifier sil existe déjà

id www-data

Sil nexiste pas :

groupadd www-data
useradd -r -s /usr/sbin/nologin -g www-data www-data

Synchroniser lUID 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, lUID 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

🔧 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 à lutilisateur nextclouddeezer dexécuter des commandes PHP sous www-data.

➡️ Ensuite, dans le config.ini du conteneur DeezerDownloader, renseigne le mot de passe de cet utilisateur.

Pour avoir la clé public pour décrypter le JWT tapé la ligne suivante sur le container nextcloud et ajouter le au fichier de config.

sudo -u www-data php occ config:app:get external jwt_token_pubkey_es256

⚙️ 7. Activer et démarrer le service

🔁 Recharge systemd, active le service au démarrage et lance-le immédiatement :

sudo systemctl daemon-reload
sudo systemctl enable deezer_downloader.service
sudo systemctl start deezer_downloader.service

📋 Pour vérifier les logs en direct :

sudo journalctl -u deezer_downloader.service -f

🌐 8. Intégrer Deezer Downloader dans linterface Nextcloud

  1. Ouvre Paramètres dadministrationSites externes dans Nextcloud.

  2. Clique sur Ajouter un nouveau site.

  3. Renseigne lURL suivante :

    https://votre.url.fr/deezer/?jwt={jwt}
    

    (Remplace votre.url.fr par ton domaine ou IP publique.)

  4. (Optionnel) Ajoute une icône personnalisée pour le menu : 🖼️ Limage se trouve ici → doc/deezerDownloader.png

💡 Une fois ajouté, le lien apparaîtra directement dans la barre latérale de Nextcloud pour tous les utilisateurs autorisés.


🧠 9. Bonus : configuration du reverse proxy Nginx

💡 Pour éviter de gérer un énième nom de domaine et contourner les problèmes de CORS, jai simplement ajouté un bloc de configuration dans le reverse proxy Nginx qui gère déjà les certificats SSL de Nextcloud.

Voici le bloc ajouté à la configuration Nginx de Nextcloud :

location /deezer/ {
    set_real_ip_from 192.168.10.8/24;
    real_ip_header proxy_protocol;
    proxy_pass http://192.168.10.12:5000/;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Forwarded-Server $host;
}

🔀 Explication rapide :

  • location /deezer/ → redirige toutes les requêtes Nextcloud vers ton conteneur DeezerDownloader.
  • proxy_pass http://192.168.10.12:5000/ → correspond à ladresse interne de ton service Python.
  • Les directives proxy_set_header assurent la transmission correcte des en-têtes HTTP et des IP réelles.

Résultat : tu peux accéder à DeezerDownloader directement depuis ton domaine Nextcloud, par exemple :

https://cloud.mondomaine.fr/deezer/

…sans erreur CORS, ni besoin dun certificat supplémentaire.


💻 Développement sous Windows (VS Code)

Autoriser lexé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

✍️ Auteur : Grizouille 💡 Basé sur le travail de kmille/deezer-downloader

Description
Fork de deezer-downloader pour en faire une app externe Nextcloud
Readme MIT 1.5 MiB
Languages
Python 74.2%
JavaScript 13.5%
HTML 9.8%
CSS 1.4%
Dockerfile 1.1%