diff --git a/README.md b/README.md index b03b962..1d0f660 100644 --- a/README.md +++ b/README.md @@ -1,198 +1,221 @@ -# đŸŽ” Deezer Downloader for Nextcloud WebDav +# đŸŽ” Deezer Downloader for Nextcloud ## đŸ§© Description -Ce projet a pour objectif d’évoluer en une **application Nextcloud**. -Pour l’instant, il s’agit d’une **application externe utilasant WEBDAV **. +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 de [deezer-downloader](https://github.com/kmille/deezer-downloader). -Un grand merci aux auteurs pour leur excellent travail ! +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 ! -## ❓ Pourquoi +--- -Je souhaitais intĂ©grer Ă  **Nextcloud** un **raccourci** permettant aux utilisateurs de **tĂ©lĂ©charger leur musique, playlists, albums**, etc., directement depuis **Nextcloud**. -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... +## ❓ 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 de Nextcloud** pour obtenir les informations d’identification 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`. -* đŸš« VĂ©rification de la **connexion Ă  Nextcloud** : si non connectĂ© → retour **403 Forbidden**. +- 🔐 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) +# đŸ§± Installation sur Nextcloud (Debian 12) -## Dans le container DeezerDownloader +## ⚙ 1. PrĂ©parer le conteneur DeezerDownloader -### Mettre Ă  jour le container - ``` - apt update - apt upgrade - ``` -### CrĂ©er le point de montage oĂč son stokĂ© les donnĂ©es Nextcloud. +### 🔄 Mise Ă  jour +```bash +apt update && apt upgrade -y +```` -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 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`: ``` +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Ă  + +```bash +id www-data +``` + +S’il n’existe pas : + +```bash groupadd 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/ -> drwxr-xr-x 5 100033 100033 5 Oct 19 14:57 Parent -``` -`100033 100033` est l uid et le gid +# Exemple de sortie : +# drwxr-xr-x 5 100033 100033 5 Oct 19 14:57 Parent ``` + +Ici, l’UID et le GID sont `100033` : + +```bash usermod -u 100033 www-data groupmod -g 100033 www-data ``` -RĂ©sultat: -`id www-data -uid=100033(www-data) gid=100033(www-data) groups=100033(www-data)` - - -### Installer `python` et le `venv` +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` pour `www-data` -``` +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 ``` -**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 chown www-data:www-data /var/www/app - -apt install git - +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Ă©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 yt-dlp -sudo -u www-data /var/www/venv/bin/pip install paramiko -sudo -u www-data /var/www/venv/bin/pip install PyJWT +sudo -u www-data /var/www/venv/bin/pip install yt-dlp paramiko PyJWT ``` -#### Ajouter le fichier de config - -``` +### 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 ``` -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 -``` -nano /etc/systemd/system/deezer_downloader.service +CrĂ©er le fichier `/etc/systemd/system/deezer_downloader.service` : + +```ini [Unit] Description=Deezer Downloader Service After=network.target [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 Group=www-data - -# Variables d’environnement +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 - ``` -Puis l'activer et le lancer: -``` +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 ``` -### Configurer les settings +--- -Dans le container nextcloud: -``` +## 🔧 6. Configurer les permissions Nextcloud + +Dans le conteneur Nextcloud : + +```bash adduser nextclouddeezer 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 ``` -venv activer avec: -``` +Activer le venv : + +```powershell .\.venv\Scripts\Activate.ps1 ``` -Install: -``` +Installer et exĂ©cuter le projet : + +```powershell pip install poetry git clone https://github.com/kmille/deezer-downloader.git cd deezer-downloader @@ -200,7 +223,27 @@ poetry install 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 -``` \ No newline at end of file +``` + +--- + +## 📚 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) +