From a78e200ea1925cacbdce48f933d2d6a63594bff4 Mon Sep 17 00:00:00 2001 From: Grizouille Date: Mon, 10 Nov 2025 13:54:35 +0100 Subject: [PATCH] Ajout du readme install --- README.md | 192 +++++++++++++++--- .../cli/deezer-downloader.ini.template | 16 +- 2 files changed, 171 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 46f0f38..52ea142 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,170 @@ Les téléchargement sont directement accessible des **Fichiers** de Nextcloud. ## 🔧 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 : `DeezerDl`. -* 🍪 Utilisation d’un **cookie** pour sauvegarder le répertoire de destination choisi par l’utilisateur. +* 📂 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**. -## Dev sous windows (vsCode): + +# Installation sur NextCloud (Debian 12) + +## Dans le container DeezerDownloader + +### Mettre à jour le container + ``` + apt update + 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` + +### 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`: +``` +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. + +``` +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 +``` +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` + +``` +apt install -y python3 python3-venv python3-pip sudo ffmpeg +``` + +Créer le `venv` pour `www-data` +``` +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 + +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 + +``` +sudo mkdir -p /var/www/app +sudo chown www-data:www-data /var/www/app + +apt install git + +sudo -u www-data git clone -b cleanAndCustom --single-branch https://git.bonisco.fr/Grizouille/Deezer-Downloader-Nextcloud.git /var/www/app + +``` + +#### Installer les dépandences: +``` +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 +``` + +#### Ajouter le fichier de config + +``` + +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... + + +### Créer le service pour qu'il soit autonome + +``` +nano /etc/systemd/system/deezer_downloader.service +[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 +Environment="PATH=/var/www/venv/bin:/usr/bin" +Environment=PYTHONUNBUFFERED=1 + +[Install] +WantedBy=multi-user.target + +``` + +Puis l'activer et le lancer: +``` +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: +``` +adduser nextclouddeezer +apt install sudo +nano visudo +``` + +ajouter en fin de fichier la ligne: +``` +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. + + +# Dev sous windows (vsCode): Pour que powershell accepte d'exécuter des scripts: ``` @@ -44,29 +203,4 @@ poetry run deezer-downloader --show-config-template > settings.ini run du srv en ligne de cmd: ``` poetry run deezer-downloader --config .\deezer_downloader\settings.ini -``` - -# Installation sur NextCloud (Debian 12) - -Dans le container nextcloud: -``` -adduser nextclouddeezer -``` - -installer `sudo`, puis taper `visudo`, -ajouter en fin de fichier la ligne: -``` -nextclouddeezer ALL=(www-data) NOPASSWD: /usr/bin/php -``` -cela permet d'executer des command php avec l'utilisateur `nextclouddeezer` - -Dans le container DeezerDownloader - -* Créer le point de montage où son stoké les données Nextcloud. -* Créer un utilisateur `www-data` pour faire tourner le service. -* Donner à l'utilisateur `www-data` le meme `uid` user et group que celui de `www-data` du contenair Nextcloud. - * `ls -ln /nextcloud_user_data/` -* Installer `python` et le `venv` -* Installer le site DeezerDownloader -* Créer le service pour qu'il soit autonome -* Configurer les settings \ No newline at end of file +``` \ No newline at end of file diff --git a/deezer_downloader/cli/deezer-downloader.ini.template b/deezer_downloader/cli/deezer-downloader.ini.template index 3249072..2e319df 100644 --- a/deezer_downloader/cli/deezer-downloader.ini.template +++ b/deezer_downloader/cli/deezer-downloader.ini.template @@ -10,13 +10,13 @@ port = 6600 music_dir_root = /tmp/deezer-downloader [download_dirs] -base = /tmp/deezer-downloader +base = /nextcloud_user_data -songs = %(base)s/songs -albums = %(base)s/albums -zips = %(base)s/zips -playlists = %(base)s/playlists -youtubedl = %(base)s/youtube-dl +songs = %(base)s/{uid}/files/Music/DeezerDl/songs +albums = %(base)s/{uid}/files/Music/DeezerDl/albums +zips = %(base)s/{uid}/files/Music/DeezerDl/zips +playlists = %(base)s/{uid}/files/Music/DeezerDl/playlists +youtubedl = %(base)s/{uid}/files/Music/DeezerDl/youtube-dl [debug] ; debug output used for /debug @@ -54,7 +54,7 @@ quality = mp3 [youtubedl] ; you are responsible for keeping yt-dlp up-to-date (https://github.com/yt-dlp/yt-dlp) ; command = /home/kmille/projects/deezer-downloader/app/venv/bin/yt-dlp -command = /usr/bin/yt-dlp +command = /var/www/venv/bin/yt-dlp [nextcloud] @@ -73,7 +73,7 @@ port = 22 ; username ssh nextcloud server username = nextclouddeezer ; password ssh nextcloud server -password = Q8QbqQru3hRc16vK +password = dqflfgkfgmvgv615vs ; occ path nextcloud server occ_path = /var/www/nextcloud/occ