Maj readme

This commit is contained in:
Grizouille
2025-11-10 14:22:05 +01:00
parent 4feda2d8de
commit 6d0ca200e9

239
README.md
View File

@@ -1,198 +1,221 @@
# 🎵 Deezer Downloader for Nextcloud WebDav # 🎵 Deezer Downloader for Nextcloud
## 🧩 Description ## 🧩 Description
Ce projet a pour objectif dévoluer en une **application Nextcloud**. Ce projet a pour objectif dévoluer vers une **application Nextcloud native**.
Pour linstant, il sagit dune **application externe utilasant WEBDAV **. 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 de [deezer-downloader](https://github.com/kmille/deezer-downloader). Le projet est basé sur le dépôt GitHub original : [kmille/deezer-downloader](https://github.com/kmille/deezer-downloader).
Un grand merci aux auteurs pour leur excellent travail ! 👉 Un grand merci à ses auteurs pour leur excellent travail !
## ❓ Pourquoi ---
Je souhaitais intégrer à **Nextcloud** un **raccourci** permettant aux utilisateurs de **télécharger leur musique, playlists, albums**, etc., directement depuis **Nextcloud**. ## ❓ Objectif
Les téléchargement sont directement accessible des **Fichiers** de Nextcloud. Vous pouvez aussi choisir un répertoire situé dans le dossier de syncronisation de l'application interne **Musique** pour profiter directement du téléchargement sur une appli de streaming style subsonic...
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 ## 🔧 Modifications apportées par rapport au dépôt original
* 🔐 Utilisation du **JWT de Nextcloud** pour obtenir les informations didentification de lutilisateur connecté. - 🔐 Utilisation du **JWT Nextcloud** pour récupérer les informations de lutilisateur connecté.
* 📂 Téléchargement des fichiers dans le **dossier personnel** de lutilisateur connecté, dans un répertoire créé à la racine : `Music/DeezerDl`. - 📂 Téléchargement dans le **dossier personnel** de lutilisateur : `Music/DeezerDl`.
* 🚫 Vérification de la **connexion à Nextcloud** : si non connecté → retour **403 Forbidden**. - 🚫 Vérification de la **connexion Nextcloud** : si non connecté → retour **403 Forbidden**.
---
# Installation sur NextCloud (Debian 12) # 🧱 Installation sur Nextcloud (Debian 12)
## Dans le container DeezerDownloader ## ⚙️ 1. Préparer le conteneur DeezerDownloader
### Mettre à jour le container ### 🔄 Mise à jour
``` ```bash
apt update apt update && apt upgrade -y
apt upgrade ````
```
### Créer le point de montage où son stoké les données Nextcloud.
J'ai créé un point de montage directement vers les fichiers de nextcloud: ### 📁 Monter le dossier Nextcloud
`mp0: /Data/NAS/nextcloud/data_directory/data/,mp=/nextcloud_user_data` Créer un point de montage vers le répertoire de données Nextcloud :
### Créer un utilisateur `www-data` pour faire tourner le service.
Verifier si deja existant: `id www-data`
Si vous obtenez des informations sur lutilisateur et le groupe, il existe déjà.
Sinon, vous aurez un message du type no such user.
Créer lutilisateur et le groupe `www-data`:
``` ```
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 groupadd www-data
useradd -r -s /usr/sbin/nologin -g www-data www-data useradd -r -s /usr/sbin/nologin -g www-data www-data
``` ```
### Donner à l'utilisateur `www-data` le meme `uid` user et group que celui de `www-data` du contenair Nextcloud. ### Synchroniser lUID et le GID avec ceux du conteneur Nextcloud
``` ```bash
ls -ln /nextcloud_user_data/ ls -ln /nextcloud_user_data/
> drwxr-xr-x 5 100033 100033 5 Oct 19 14:57 Parent # Exemple de sortie :
``` # drwxr-xr-x 5 100033 100033 5 Oct 19 14:57 Parent
`100033 100033` est l uid et le gid
``` ```
Ici, lUID et le GID sont `100033` :
```bash
usermod -u 100033 www-data usermod -u 100033 www-data
groupmod -g 100033 www-data groupmod -g 100033 www-data
``` ```
Résultat: Vérifier :
`id www-data
uid=100033(www-data) gid=100033(www-data) groups=100033(www-data)`
### Installer `python` et le `venv`
```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 apt install -y python3 python3-venv python3-pip sudo ffmpeg
``` ```
Créer le `venv` pour `www-data` Créer le venv :
```
```bash
mkdir -p /var/www/venv mkdir -p /var/www/venv
chown www-data:www-data /var/www/venv chown www-data:www-data /var/www/venv
chmod 750 /var/www/venv chmod 750 /var/www/venv
sudo -u www-data python3 -m venv /var/www/venv sudo -u www-data python3 -m venv /var/www/venv
```
Vérifier le fonctionnement :
```bash
sudo -u www-data bash sudo -u www-data bash
source /var/www/venv/bin/activate source /var/www/venv/bin/activate
python --version python --version
pip --version pip --version
deactivate deactivate
``` ```
**Pour désactiver le venv** `deactivate`
### Installer le site DeezerDownloader ---
``` ## 📦 4. Installer DeezerDownloader
### Cloner le dépôt
```bash
sudo mkdir -p /var/www/app sudo mkdir -p /var/www/app
sudo chown www-data:www-data /var/www/app sudo chown www-data:www-data /var/www/app
apt install -y git
apt install git
sudo -u www-data git clone https://git.bonisco.fr/Grizouille/Deezer-Downloader-Nextcloud.git /var/www/app sudo -u www-data git clone https://git.bonisco.fr/Grizouille/Deezer-Downloader-Nextcloud.git /var/www/app
```
``` ### Installer les dépendances
#### Installer les dépandences: ```bash
```
sudo -u www-data /var/www/venv/bin/pip install /var/www/app 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 sudo -u www-data /var/www/venv/bin/pip install yt-dlp paramiko PyJWT
sudo -u www-data /var/www/venv/bin/pip install paramiko
sudo -u www-data /var/www/venv/bin/pip install PyJWT
``` ```
#### Ajouter le fichier de config ### Générer et modifier le fichier de configuration
```
```bash
sudo -u www-data bash sudo -u www-data bash
source /var/www/venv/bin/activate source /var/www/venv/bin/activate
deezer-downloader --show-config-template > /var/www/app/config.ini deezer-downloader --show-config-template > /var/www/app/config.ini
deactivate deactivate
``` ```
Rester sous `www-data` et aller éditer le fichier `config.ini`, les explication son à l'interieur... 📝 Ensuite, édite `/var/www/app/config.ini` (les explications sont dans le fichier).
---
### Créer le service pour qu'il soit autonome ## ⚙️ 5. Créer un service systemd
``` Créer le fichier `/etc/systemd/system/deezer_downloader.service` :
nano /etc/systemd/system/deezer_downloader.service
```ini
[Unit] [Unit]
Description=Deezer Downloader Service Description=Deezer Downloader Service
After=network.target After=network.target
[Service] [Service]
# Répertoire de travail (là où est ton config.ini)
WorkingDirectory=/var/www/app
# Commande de lancement (binaire du venv)
ExecStart=/var/www/venv/bin/deezer-downloader --config /var/www/app/config.ini
# Redémarrage automatique en cas derreur
Restart=on-failure
# Exécution sous root (puisque ton venv est dans /root)
User=www-data User=www-data
Group=www-data Group=www-data
WorkingDirectory=/var/www/app
# Variables denvironnement 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="PATH=/var/www/venv/bin:/usr/bin"
Environment=PYTHONUNBUFFERED=1 Environment=PYTHONUNBUFFERED=1
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
``` ```
Puis l'activer et le lancer: Activer et démarrer le service :
```
```bash
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo systemctl enable deezer_downloader.service sudo systemctl enable deezer_downloader.service
sudo systemctl start deezer_downloader.service sudo systemctl start deezer_downloader.service
sudo journalctl -u deezer_downloader.service -f sudo journalctl -u deezer_downloader.service -f
``` ```
### Configurer les settings
---
Dans le container nextcloud: ## 🔧 6. Configurer les permissions Nextcloud
```
Dans le conteneur Nextcloud :
```bash
adduser nextclouddeezer adduser nextclouddeezer
apt install sudo apt install sudo
nano visudo nano /etc/sudoers
``` ```
ajouter en fin de fichier la ligne: Ajouter à la fin du fichier :
``` ```
nextclouddeezer ALL=(www-data) NOPASSWD: /usr/bin/php nextclouddeezer ALL=(www-data) NOPASSWD: /usr/bin/php
``` ```
cela permet d'executer des command php avec l'utilisateur `nextclouddeezer`
Dans le confg.ini dans la container deezer-dowloader, ajouter le mdp de l'utilisateur ue vous venez de dréer. 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.
# Dev sous windows (vsCode): ---
Pour que powershell accepte d'exécuter des scripts: # 💻 Développement sous Windows (VS Code)
```
Autoriser lexécution de scripts PowerShell :
```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
``` ```
venv activer avec: Activer le venv :
```
```powershell
.\.venv\Scripts\Activate.ps1 .\.venv\Scripts\Activate.ps1
``` ```
Install: Installer et exécuter le projet :
```
```powershell
pip install poetry pip install poetry
git clone https://github.com/kmille/deezer-downloader.git git clone https://github.com/kmille/deezer-downloader.git
cd deezer-downloader cd deezer-downloader
@@ -200,7 +223,27 @@ poetry install
poetry run deezer-downloader --show-config-template > settings.ini poetry run deezer-downloader --show-config-template > settings.ini
``` ```
run du srv en ligne de cmd: Lancer le serveur :
```
```powershell
poetry run deezer-downloader --config .\deezer_downloader\settings.ini 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)