Maj readme
This commit is contained in:
227
README.md
227
README.md
@@ -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 l’instant, il s’agit d’une **application externe utilasant WEBDAV **.
|
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 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...
|
|
||||||
|
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
|
## 🔧 Modifications apportées par rapport au dépôt original
|
||||||
|
|
||||||
* 🔐 Utilisation du **JWT de Nextcloud** pour obtenir les informations d’identification de l’utilisateur connecté.
|
- 🔐 Utilisation du **JWT Nextcloud** pour récupérer les informations de l’utilisateur connecté.
|
||||||
* 📂 Téléchargement des fichiers dans le **dossier personnel** de l’utilisateur connecté, dans un répertoire créé à la racine : `Music/DeezerDl`.
|
- 📂 Téléchargement dans le **dossier personnel** de l’utilisateur : `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
|
||||||
|
|
||||||
|
### 🔄 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 :
|
||||||
|
|
||||||
### Mettre à jour le container
|
|
||||||
```
|
```
|
||||||
apt update
|
mp0: /Data/NAS/nextcloud/data_directory/data/,mp=/nextcloud_user_data
|
||||||
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:
|
---
|
||||||
|
|
||||||
`mp0: /Data/NAS/nextcloud/data_directory/data/,mp=/nextcloud_user_data`
|
## 👤 2. Créer l’utilisateur `www-data`
|
||||||
|
|
||||||
### Créer un utilisateur `www-data` pour faire tourner le service.
|
### Vérifier s’il existe déjà
|
||||||
|
|
||||||
Verifier si deja existant: `id www-data`
|
```bash
|
||||||
|
id www-data
|
||||||
Si vous obtenez des informations sur l’utilisateur et le groupe, il existe déjà.
|
|
||||||
Sinon, vous aurez un message du type no such user.
|
|
||||||
|
|
||||||
Créer l’utilisateur et le groupe `www-data`:
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
S’il n’existe 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 l’UID 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, l’UID 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épandences:
|
### 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 /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 d’erreur
|
|
||||||
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 d’environnement
|
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 à 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.
|
||||||
|
|
||||||
# Dev sous windows (vsCode):
|
---
|
||||||
|
|
||||||
Pour que powershell accepte d'exécuter des scripts:
|
# 💻 Développement sous Windows (VS Code)
|
||||||
```
|
|
||||||
|
Autoriser l’exé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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user