Files
Deezer-Downloader-Nextcloud/README.md
Grizouille 6d0ca200e9 Maj readme
2025-11-10 14:22:05 +01:00

250 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎵 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](https://github.com/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
```bash
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à
```bash
id www-data
```
Sil nexiste pas :
```bash
groupadd www-data
useradd -r -s /usr/sbin/nologin -g www-data www-data
```
### Synchroniser lUID et le GID avec ceux du conteneur Nextcloud
```bash
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` :
```bash
usermod -u 100033 www-data
groupmod -g 100033 www-data
```
Vérifier :
```bash
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 :
```bash
apt install -y python3 python3-venv python3-pip sudo ffmpeg
```
Créer le venv :
```bash
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 :
```bash
sudo -u www-data bash
source /var/www/venv/bin/activate
python --version
pip --version
deactivate
```
---
## 📦 4. Installer DeezerDownloader
### Cloner le dépôt
```bash
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
```bash
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
```bash
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` :
```ini
[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 :
```bash
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 :
```bash
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.
---
# 💻 Développement sous Windows (VS Code)
Autoriser lexécution de scripts PowerShell :
```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
```
Activer le venv :
```powershell
.\.venv\Scripts\Activate.ps1
```
Installer et exécuter le projet :
```powershell
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 :
```powershell
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](https://git.bonisco.fr/Grizouille)
💡 Basé sur le travail de [kmille/deezer-downloader](https://github.com/kmille/deezer-downloader)