Aller au contenu

Langer

Membres
  • Compteur de contenus

    87
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par Langer

  1. Hello, mon NAS est de nouveau parfaitement fonctionnel. J'avais juste les Users a recreer finalement. La config était encore intacte, et mes dockers aussi. Assez surprenant. Bon, jai annulé la commande en moins de 10 secondes, ayant réalisé ma bétise 🙂 Merci pour le suivi !!
  2. Salut, Apres un reboot, on m'a proposé la migration du serveur. J'ai perdu quelques morceaux de ma configuration, mais les dossiers partagés sont encore présents. Pour l'instant je vois seulement que mes users ont été effacés, sans toucher à leur dossier home La commande était récursive, je l'ai stoppé au bout de 10sec, réalisant mon erreur... Merci à tous de votre aide.
  3. Merci Mic, Je vais passer quelques heures a tout reconfigurer haha. Ca vaudra la peine de faire une sauvegarde de la config après coup!
  4. Hello, j'ai fait un ENORME boulette les amis. Je voulais supprimer un gros dossier avec la commande $ rm dossier/* mais je n'ai pas pointé le dossier. Résultat, j'ai perdu bcp de fichiers paramètres et fichiers de config. Je n'ai malheureusement pas de sauvegarde pour ma configuration actuelle. Par chance, mes dockers fonctionnent encore et je suis entrain de faire quelques sauvegardes avec Syncthing, pour sauver les meubles. Y a t il un moyen de récupérer la config ou de réinitialiser le DSM sans toucher aux dossiers partagés? Je n'ai plus d'accès en SSH, ni sur IP:5001, ni sur mon nom de domaine. Est ce que le bouton reset sur mon DS412+ va me formater tous les dossiers partagés aussi? Merci, je n'ose plus rien toucher pour l'instant..
  5. Salut, j’ai exactement ce même problème vers mon serveur Kimsufi avec Yunohost. Ça fait des mois que je cherche sans solution... jai réinstaller mon serveur Synology et pour serveur Kimsufi mais rien n'y fait. J'ai aussi essayé la manip avec réactiver le compte admin, donner les droits Lecture/Ecriture aux admins, etc. Et pourtant, ça marchait jadis😅 Avez vous d'autres idées? je suis sans recours Merci,
  6. Salut, as tu réussi à solutionner le problème ? J'ai réinstaller mon serveur distant sous DEBIAN 11 et j'ai exactement le même souci que toi avec les privilèges insuffisants. EDIT : J'ai meme reinstaller mon Synology, toujours pareil ... Merci,
  7. Objectif : Récupération automatique des fichier sur un serveur distant avec rsync, du style Seedbox ou autres Prérequis : Synology avec droits administrateurs / rsync activé / ssh activé Serveur distant sous distribution linux avec droits administrateurs 1. Connexion au Synology On commence par se loguer au Synology avec son compte ADMIN pour générer des clés SSH de connexions : on se connecte en root sudo -i génération des clés SSH, faire 3x entrer pour mettre les clés dans /root/.ssh ssh-keygen -t rsa on vérifie si les clés sont bien générées cd .ssh ls -l Vous devriez voir les clés comme ceci -rw------- 1 root root 1675 May 31 20:09 id_rsa -rw-r--r-- 1 root root 397 May 31 20:09 id_rsa.pub Il faudra importer la clé vers votre serveur distant. Mais tout d'abord, on va se loguer à notre serveur distant avec un autre Putty et paramétrer un USER pour récupérer les fichiers. 2. Connexion au Serveur distant Après s'être loggué, on créer le dossier .ssh mkdir .ssh Puis on donne accès en lecture au USER pour accéder au dossier de la Seedbox par exemple. Dans mon cas, j'ai ajouté mon USER au groupe www-data qui a le droit de lecture sur mon dossier de la Seedbox adduser USER www-data Le côté serveur distant est configuré, on retourne sur la console de gestion du Synology 3. Copie des clés SSH Dans la console du Synology, on va importer la clé SSH par le protocole SCP scp -p /root/.ssh/id_rsa.pub USER@IP.IP.IP.IP:/home/USER/.ssh/ On rentre le mot de passe du USER, et normalement le transfert est effectué. Pour tester si la connexion par clé fonctionne bien à présent, on rentre ssh -p 22 -i /root/.ssh/id_rsa USER@IP.IP.IP.IP Vous devriez être présentement dans la console de gestion du serveur distant, sans avoir eu à rentrer de mot de passe. Le plus dur est fait 🙂 Les manipulations en console sont maintenant terminées. 3. Création de la tâche de rapatriement automatique On va dans la page de gestion du Synology, en se loguant avec son compte admin, et on se dirige vers la planification de tâches On va créer une tâche de travail : CRÉER / Tâche planifiée / Script défini par l'utilisateur Dans l'onglet Général, il faut impérativement mettre l'utilisateur root Dans l'onglet Programmer, on met la fréquence que l'on veut activer la récupération, personnellement j'ai mis toutes les 5 minutes Dans Paramètres de tâche, on va rentrer le script RSYNC Pour ne pas télécharger toutes les 5 minutes le même fichier, il y a des paramètres à ajouter à la commande RSYNC. Aussi, j'ai ajouté un paramètre pour ne pas retransférer un fichier qui a été déplacer du fichier de destination, dans le cas d'un reclassement dans mon Synology bash /root/scripts/rsync.sh rsync -av --inplace --exclude-from transfered_files.txt --log-format='%n' >> transfered_files.txt --rsh='ssh -p22' USER@IP.IP.IP.IP:/chemin de la seedbox// /volume1/chemin de destination/ il y a d'autres paramètres disponibles pour RSYNC, notamment supprimé les fichiers transférés, mais cela ne correspond pas à mes besoins. OPTIONNEL : les fichiers transférées seront la propriété de root, donc on va changer le propriétaire des fichiers dans ce même script, par un USER2, présent sur le Synology chown -R USER2:users /volume1/dossier de destination/ Voici le rendu de la tâche complétée, reste plus qu'à lancer, et ne plus y penser 😄 CHEERS 😉
  8. Salut, Tes clés de ton NAS vers ton serveur distant ne doivent plus fonctionner. Il faut refaire la liaison, faire un test et copier les clés dans le dossier de ton Nas suivant /var/packages/HyperBackup/target/.ssh/ Je viens de refaire le tuto, après avoir réinstaller mon serveur distant, j'ai du refaire mes clés ssh 🙂
  9. Hello, j'ai supprimé la partie du script qui était inutile pour moi, et dé commenté après renommage, et ca refonctionne !!! Le plus gros des mercis !!! @Vinky Voici le script : <?php //Utilisation : <-----------URL------------>/rss.php?dossier=<NOM_DU_DOSSIER> //Si le paramêtre dossier n'est pas mis, le dossier par défaut est listé. /********************************/ /* CONFIGURATION */ /********************************/ $physical_path = '/home/yunohost.transmission/completed'; // Dossier à lister par défaut (ex : /var/www/download) $max = 20; //Nombre de fichiers à afficher dans le flux RSS $site = 'sftp://XXX:XXX@XXXX.org:22'; // IP ou NDD (http://<IP> ou https://<IP> ou ftp://<IP> etc... utilisé pour télécharger les fichiers) $nomDePage = 'Seedbox Langer';// Nom affiché $lienInterne = ''; //position non affiché dans l'url (ex : /var/www/download/fichier.ext et url = http://<IP>/download/fichier.ext, mettre /var/www/ dans ce champs car non présent dans l'url) $tempsAttente = 100; //Temps (en s) sans que le fichier soit modifié avant de le lister. (si trop rapide, il peut apparaître alors que le fichier n'est pas fini de téléchargé). //VOIR LIGNE 100 POUR INDIQUER LES EXTENSIONS AUTORISES : // Ajouter '|| get_file_icon($file)=="ext"' (sans les '') avant la fin de la parenthèse avec ext, l'extension que l'on veut qui soit listé /********************************/ /* FONCTIONS */ /********************************/ $excludeFiles = array(".", "..", ".htaccess", ""); // Liste des fichiers ignorés dans le listing /** * Récupère récursivement le contenu d'un répertoire * et le retourne sous forme d'array * @param $directory Le répertoire à traiter **/ function recursive_directory_tree($directory = null) { global $excludeFiles; //If $directory is null, set $directory to the current working directory. if ($directory == null) { $directory = getcwd(); } //declare the array to return $return = array(); //Check if the argument specified is an array if (is_dir($directory)) { //Scan the directory and loop through the results foreach(scandir($directory) as $file) { //. = current directory, .. = up one level. We want to ignore both. if ($file[0] == ".") { continue; } //Exclude some specified files if (in_array($file, $excludeFiles)) { continue; } //Check if the current $file is a directory itself. //The appending of $directory is necessary here. if (is_dir($directory."/".$file)) { //Create a new array with an index of the folder name. $return[$directory."/".$file] = recursive_directory_tree($directory."/".$file); } else { //If $file is not a directory, just add it to th return array. $return[] = $directory."/".$file; } } } else { $return[] = $directory; } return $return; } /** * Stock dans un tableau tous les fichiers video présents dans le repertoire mis en pareamètre **/ function liste($dossier) { global $tabTrie; foreach ($dossier as $file) { if ( is_array($file) ) { liste($file); } else { # if(get_file_icon($file)=="mp4" || get_file_icon($file)=="mkv" || get_file_icon($file)=="avi" ) { array_push($tabTrie, $file); } } } } /** * Convertit la taille en Xo * @param $fs La taille à convertir */ function convert_size($fs) { if ($fs >= 1073741824) $fs = round($fs / 1073741824 * 100) / 100 . " Go"; elseif ($fs >= 1048576) $fs = round($fs / 1048576 * 100) / 100 . " Mo"; elseif ($fs >= 1024) $fs = round($fs / 1024 * 100) / 100 . " Ko"; else $fs = $fs . " o"; return $fs; } /** * Retourne l'extention d'un fichier en fonction de son type * @filename Le nom du fichier à considérer */ function get_file_icon($filename) { return pathinfo($filename, PATHINFO_EXTENSION); } /** * Retourne le mime d'un fichier * @filename Le nom du fichier à considérer */ function mime_file($filename) { $finfo = finfo_open(FILEINFO_MIME_TYPE); // Retourne le type mime à la extension mimetype $mime=finfo_file($finfo, $filename); finfo_close($finfo); return $mime; } /********************************/ /* FONCTIONS */ /********************************/ #ISO-8859-1 $entete = '<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <atom:link href="'.$site.'/rss.php" rel="self" type="application/rss+xml" /> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <title>'.$nomDePage.'</title> <link>'.$site.'</link> <language>fr-FR</language> <description>Liste des nouveaux fichiers</description> '; $pied = '</channel> </rss>'; if(isset ($_GET['dossier'])) $physical_path = $physical_path.'/'.$_GET['dossier']; $current_dir = array(); $tab= array(); $tabSize = array(); $tabTrie= array(); $current_dir = recursive_directory_tree($physical_path); liste($current_dir); foreach ($tabTrie as $key => $fichier) { $time = filemtime($fichier); $actualTime = time(); $date = date("F d Y H:i:s.", filemtime($fichier)); if($fichier != '.' && $fichier != '..' && $fichier != 'index.php') { $tab["$fichier"] = $time; $taille=filesize($fichier); $tabSize["$fichier"] = $taille; } } array_multisort($tab, SORT_DESC, $tabSize); echo $entete; $nombre = 1; foreach ($tab as $fichier => $heure) { $nom = basename($fichier); $extension = get_file_icon($fichier,TRUE); $nom = str_replace(".$extension", "" , $nom); $nom = str_replace(".", " " , $nom); /********************************/ /* RENOMMAGE */ /********************************/ if(($actualTime-$heure) > $tempsAttente) { if ($nombre <= $max) { echo(' <item> <title>'.$nom.'</title> <description>'.$nombre.' | Format : '.$extension.' | Date d\'ajout : '. date("d/m/Y H:i:s", $heure).' | Taille : '.convert_size($tabSize["$fichier"]).'</description> <pubDate>'.date("D, d M Y H:i:s", $heure).'</pubDate> <link>'.$site.str_replace($lienInterne, "" ,$fichier).'</link> <enclosure length="'.$tabSize[$fichier].'" type="'.mime_file($fichier).'" url="'.$site.str_replace($lienInterne, "" ,$fichier).'" /> </item> '); $nombre++; } } } echo $pied; ?>
  10. Salut @Vinky, J'ai dé-commenté les sections de Renommage, mais cela ne change rien. Ma dernière mise à jour du flux RSS avec succès remonte à octobre de l'an passé. Après une réinstallation complète du serveur sous Debian 9.x et Yunohost 3.x. Yunohost utilse Nginx et non pas Apache. est ce que cela a un lien ? As tu ton script sous la main, J'ai peut être fait la manip de trop ? Merci,
  11. Salut à tous, J'espère que @Vinky passe encore la dessus. J'ai le même problème que @Mouflo depuis quelques temps... Le script php ne génère que le début d'identification, il ne vient pas chercher les fichiers par la suite. J'ai essayé quelques trucs sans succès. Je suis sur Debian 9.4 Stretch (stable) (64bits) avec YUNOHOST qui roule avec nginx et php7.0 J'ai réussi à installer php5.6 en suivant ce tuto https://stackoverflow.com/questions/46378017/install-php56-in-debian-9, mais le problème persiste. Je ne sais plus trop ou regarder, je n'ai pas les connaissances suffisantes pour trouver une solution. Avez vous vu quelque chose qui cloche ? Voici mon script : <?php //Utilisation : <-----------URL------------>/rss.php?dossier=<NOM_DU_DOSSIER> //Si le paramêtre dossier n'est pas mis, le dossier par défaut est listé. /********************************/ /* CONFIGURATION */ /********************************/ $physical_path = '/home/yunohost.transmission/completed'; // Dossier à lister par défaut (ex : /var/www/download) $max = 20; //Nombre de fichiers à afficher dans le flux RSS $site = 'sftp://XXX:XXXXX@XXXX.org:22'; // IP ou NDD (http://<IP> ou https://<IP> ou ftp://<IP> etc... utilisé pour télécharger les fichiers) $nomDePage = 'Seedbox Langer';// Nom affiché $lienInterne = ''; //position non affiché dans l'url (ex : /var/www/download/fichier.ext et url = http://<IP>/download/fichier.ext, mettre /var/www/ dans ce champs car non présent dans l'url) $tempsAttente = 100; //Temps (en s) sans que le fichier soit modifié avant de le lister. (si trop rapide, il peut apparaître alors que le fichier n'est pas fini de téléchargé). //VOIR LIGNE 100 POUR INDIQUER LES EXTENSIONS AUTORISES : // Ajouter '|| get_file_icon($file)=="ext"' (sans les '') avant la fin de la parenthèse avec ext, l'extension que l'on veut qui soit listé /********************************/ /* FONCTIONS */ /********************************/ $excludeFiles = array(".", "..", ".htaccess", ""); // Liste des fichiers ignorés dans le listing /** * Récupère récursivement le contenu d'un répertoire * et le retourne sous forme d'array * @param $directory Le répertoire à traiter **/ function recursive_directory_tree($directory = null) { global $excludeFiles; //If $directory is null, set $directory to the current working directory. if ($directory == null) { $directory = getcwd(); } //declare the array to return $return = array(); //Check if the argument specified is an array if (is_dir($directory)) { //Scan the directory and loop through the results foreach(scandir($directory) as $file) { //. = current directory, .. = up one level. We want to ignore both. if ($file[0] == ".") { continue; } //Exclude some specified files if (in_array($file, $excludeFiles)) { continue; } //Check if the current $file is a directory itself. //The appending of $directory is necessary here. if (is_dir($directory."/".$file)) { //Create a new array with an index of the folder name. $return[$directory."/".$file] = recursive_directory_tree($directory."/".$file); } else { //If $file is not a directory, just add it to th return array. $return[] = $directory."/".$file; } } } else { $return[] = $directory; } return $return; } /** * Stock dans un tableau tous les fichiers video présents dans le repertoire mis en pareamètre **/ function liste($dossier) { global $tabTrie; foreach ($dossier as $file) { if ( is_array($file) ) { liste($file); } else { # if(get_file_icon($file)=="mp4" || get_file_icon($file)=="mkv" || get_file_icon($file)=="avi" ) { array_push($tabTrie, $file); } } } } /** * Convertit la taille en Xo * @param $fs La taille à convertir */ function convert_size($fs) { if ($fs >= 1073741824) $fs = round($fs / 1073741824 * 100) / 100 . " Go"; elseif ($fs >= 1048576) $fs = round($fs / 1048576 * 100) / 100 . " Mo"; elseif ($fs >= 1024) $fs = round($fs / 1024 * 100) / 100 . " Ko"; else $fs = $fs . " o"; return $fs; } /** * Retourne l'extention d'un fichier en fonction de son type * @filename Le nom du fichier à considérer */ function get_file_icon($filename) { return pathinfo($filename, PATHINFO_EXTENSION); } /** * Retourne le mime d'un fichier * @filename Le nom du fichier à considérer */ function mime_file($filename) { $finfo = finfo_open(FILEINFO_MIME_TYPE); // Retourne le type mime à la extension mimetype $mime=finfo_file($finfo, $filename); finfo_close($finfo); return $mime; } /********************************/ /* FONCTIONS */ /********************************/ #ISO-8859-1 $entete = '<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <atom:link href="'.$site.'/rss.php" rel="self" type="application/rss+xml" /> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <title>'.$nomDePage.'</title> <link>'.$site.'</link> <language>fr-FR</language> <description>Liste des nouveaux fichiers</description> '; $pied = '</channel> </rss>'; if(isset ($_GET['dossier'])) $physical_path = $physical_path.'/'.$_GET['dossier']; $current_dir = array(); $tab= array(); $tabSize = array(); $tabTrie= array(); $current_dir = recursive_directory_tree($physical_path); liste($current_dir); foreach ($tabTrie as $key => $fichier) { $time = filemtime($fichier); $actualTime = time(); $date = date("F d Y H:i:s.", filemtime($fichier)); if($fichier != '.' && $fichier != '..' && $fichier != 'index.php') { $tab["$fichier"] = $time; $taille=filesize($fichier); $tabSize["$fichier"] = $taille; } } array_multisort($tab, SORT_DESC, $tabSize); echo $entete; $nombre = 1; foreach ($tab as $fichier => $heure) { $nom = basename($fichier); $extension = get_file_icon($fichier,TRUE); $nom = str_replace(".$extension", "" , $nom); $nom = str_replace(".", " " , $nom); // /********************************/ // /* RENOMMAGE */ // /********************************/ // if(substr_count(strtoupper($nom), strtoupper(" epz")) > 0) // { // $nom = str_replace("epz-", "" , $nom); // } // if(substr_count(strtoupper($nom), strtoupper(" HDTV")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("VTDH"))+5)); // } // if(substr_count(strtoupper($nom), strtoupper(" PDTV")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("VTDP"))+5)); // } // if(substr_count(strtoupper($nom), strtoupper(" WEB")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("BEW"))+4)); // } // if(substr_count(strtoupper($nom), strtoupper(" XVID")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("DIVX"))+5)); // } // if(substr_count(strtoupper($nom), strtoupper(" LD")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("DL"))+3)); // } // if(substr_count(strtoupper($nom), strtoupper(" DC")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("CD"))+3)); // } // if(substr_count(strtoupper($nom), strtoupper(" x264")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("462x"))+3)); // } // if(substr_count(strtoupper($nom), strtoupper(" bluray")) > 0) // { // $nom = strrev($nom); // $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("yarulb"))+7)); // } // $nom = ucwords(mb_strtolower($nom)); // $nom = str_replace ( "French" , "FRENCH", $nom); // $nom = str_replace ( "Vostfr" , "VOSTFR", $nom); // $nom = str_replace ( "e0" , "E0", $nom); // $nom = str_replace ( "e1" , "E1", $nom); // $nom = str_replace ( "e2" , "E2", $nom); // $nom = $nom." [$extension]"; // /********************************/ // /* RENOMMAGE */ // /********************************/ // if(($actualTime-$heure) > $tempsAttente) // { // if ($nombre <= $max) // { // echo(' // <item> // <title>'.$nom.'</title> // <description>'.$nombre.' | Format : '.$extension.' | Date d\'ajout : '. date("d/m/Y H:i:s", $heure).' | Taille : '.convert_size($tabSize["$fichier"]).'</description> // <pubDate>'.date("D, d M Y H:i:s", $heure).'</pubDate> // <link>'.$site.str_replace($lienInterne, "" ,$fichier).'</link> // <enclosure length="'.$tabSize[$fichier].'" type="'.mime_file($fichier).'" url="'.$site.str_replace($lienInterne, "" ,$fichier).'" /> // </item> // '); // $nombre++; // } // } } echo $pied; ?>
  12. Langer

    [TUTO] VPN Server

    Salut, j'ai souci pour accéder à mes dossiers locaux (du syno) avec le protocole SMB au travers du VPN, depuis un rasberry pi. j'ai l'impression que tout les paramètres sont OK, la connection VPN est active, et je peux naviguer dans les dossiers avec le protocole Webdav. Le PI, avec OSMC m'affiche "Operation not permitted" quand j'essaye d'accéder au Nas avec le protocole SMB Des suggestions ? Je n'ai plus trop d'idées là 😕 Merci
  13. En réinstallant tout le bouzin, je voulais faire un test avec le SMB au travers du VPN. Je n arrive pas à me connecter sur le NAS depuis le Pi, malgré les parametres samba activé et le VPN connecté. Le webdav marche impeccable tout de même. Des idées ?
  14. Salut, désolé j'avais pas vu ta réponse. la base de donnée Mysql permet de scraper seulement 1 fois ta médiathèque par un des appareils sous Kodi de ton réseau. A l'inverse de le faire sur chaque machine
  15. Ouais, c'est ce que j'ai fait par la suite. Je n'avais jamais installé Photostation avant... Peut être lors d'une mise à jour il a considérer le dossier partagé photo comme lié avec Photostation...
  16. ok, j'ai trouvé... le dossier était le répertoire "photo", puis il fallait que j'installe PhotoStation pour jouer dans les droits d'administration. Très con... J'en ai pas besoin de photostation
  17. le problème c'est que même en me logguant avec un compte admin, je suis incapable de changer les privilèges des utilisateurs de ce dossier partagé...
  18. Je suis incapable de changer quoi que ce soit. Si je change les droits, cela reste à "pas d'accès". J'ai même essayer de me connecter en root pour copier le contenu dans un autre dossier mais sans succès...
  19. Bonjour, Je ne suis pas capable d'accéder à un de mes dossier partagé malgré les autorisations activées, avec des comptes admin ou utilisateur. Par défaut il donne aucun accès pour tous les utilisateurs et admin. J'ai fouillé dans tout le DSM mais je ne trouve pas... Avez vous des idées ? Merci
  20. J'ai commencé à écrire le tutoriel ici : Il doit certainement être validé avant d'être visible
  21. Bonjour, j'ai offert un raspberry pi à ma belle famille pour se connecter sur mon NAS et avoir accès à son contenu de manière sécurisée, avec la possibilité de synchroniser directement les métadonnées des médias depuis une base de donnée MySQL tockée sur le NAS. Ce tuto va se dérouler en 3 étapes : 1. Se connecter au NAS avec une connexion VPN 2. Monter une base de données centralisée MySQL 3. Se connecter à la base de donnée MySQL depuis le raspberry distant Difficulté : Facile Temps de mise en œuvre : 45 min Prérequis : - Un raspberry pi (2 ou 3, le 1 je n'ai pas testé) avec OSMC installé dessus et la connexion SAMBA activée (voir dans Programmes / My OSMC / Paquets / Samba) Voici la version officielle : https://osmc.tv/ Personnellement, j'utilise un dual boot avec Retropie, pour jouer aux jeux rétros. Dans ce cas, il est nécessaire de mettre à jour OSMC avant de commencer l'étape 1 : http://www.multibootpi.com/builds/retropie-v4-0-2-osmc-2016-07-1-dual-boot/ - Le logiciel Putty pour se connecter en SSH - Un NAS Synology à jour avec les droits d'administration - Un compte utilisateur ayant accès au NAS Synology et aux différents dossiers auxquels il aura accès 1. Se connecter au NAS avec une connexion VPN Se logguer en tant qu'administrateur pour pouvoir installer des paquets Synology. Dans le centre de paquets, installer «WebDAV Serveur» pour que le NAS gère les transferts avec le protocole WebDav. S'assurer que le HTTPS est activé, on va conserver le port 5006 dans le tuto. S'assurer aussi que le nouvel utilisateur a accès à l'application «WebDAV Serveur» dans les privilèges Dans le centre de paquets, installer «VPN Serveur» pour que le NAS deviennent une plateforme serveur de connexion VPN. S'assurer que le nouvel utilisateur a accès à la connection OpenVPN dans la partie privilèges de l'application. Ensuite, activer le serveur OpenVPN dans la partie paramètres de l'application avec l'autorisation d'accès au server LAN activée. Le reste des paramètres est selon vos préférences. Exporter la configuration sur votre PC. Pour que la connexion fonctionne, il est nécessaire d'ouvrir les ports dans le pare feu du NAS et de votre routeur. Panneau de configuration / Sécurité / Pare-feu / Modifier les règles, et ouvrir les ports 1194 et 5006 dans mon cas. Pour le routeur, seul le port du VPN est nécessaire. La configuration sur le NAS est désormais terminée. Aller dans l'explorateur windows puis Réseau et le Raspberry devrait s'afficher. Si non, taper le nom que vous avez donné dans les paramètres SAMBA du Pi, avec \\ avant le nom. Aller ensuite dans le répertoire «OSMC». Créer le dossier «openvpn» et copier-y le fichier VPNConfig.ovpn. Éditer ce fichier pour intégrer l'adresse IP de votre connexion internet http://monip.org/ et changer l'adresse du fichier d'authentification à ligne 44 . Dans le même dossier, il est nécessaire maintenant de créer un fichier .txt qui indique l'utilisateur et le mot de passe. Se connecter en SSH sur le Pi avec le logiciel PUTTY. Par défaut, le user et mot de passe sont osmc:osmc Ajouter tout d'abord une petite sécurité sur le fichier auth.txt : osmc@OSMC-PI:~$ chmod 600 /home/osmc/openvpn/auth.txt Mettre à jour la liste des paquets puis installer le service OpenVPN sur le Pi : osmc@OSMC-PI:~$ sudo apt-get update osmc@OSMC-PI:~$ sudo apt-get install openvpn Ensuite copier et renommer le fichier de configuration VPNConfig dans le répertoire /etc/openvpn : osmc@OSMC-PI:~$ sudo cp /home/osmc/openvpn/VPNConfig.ovpn /etc/openvpn/vpn.conf Activer et lancer le service OpenVPN : osmc@OSMC-PI:~$ sudo systemctl enable openvpn@vpn.service osmc@OSMC-PI:~$ sudo systemctl start openvpn@vpn.service Puis redémarrer le Raspberry Pi : osmc@OSMC-PI:~$ sudo reboot Une fois le Pi redémarrer, aller dans la console du NAS, dans l'application «VPN Serveur» pour vérifier si la connexion a bien été faite. Pour simuler une connexion à distance, utiliser votre téléphone et faite un partage de connexion, puis connecter le Pi au réseau Wifi du téléphone. La connexion passera donc pour le réseau cellulaire. Désormais, il est possible de chercher les répertoires partagés du NAS dans OSMC, comme si le Pi était dans le réseau local. Après quelques tests, il s'avère que le WebDAV est le protocole le plus rapide dans le VPN... Fin de la partie 1. 2. Monter une base de données centralisée MySQL Se logguer en tant qu'administrateur pour pouvoir installer des paquets Synology. Dans le centre de paquets, installer «MariaDB 10» et «phpMyAdmin». Vérifier ensuite le port de MariaDB en cliquant sur l’icône du bureau DSM et son ouverture dans le pare-feu du Synology Se rendre ensuite dans l'application «phpmyadmin» et se logguer en tant que root. Il n'y a pas de mot de passe par défaut. Creér un nouvel utilisateur "kodi" avec le mot de passe "kodi" , et cocher les privilèges globaux Une fois la base de donnée paramétrée, il faut encore pouvoir mettre des choses dedans. Créer un fichier advancedsettings.xml avec le code suivant : <advancedsettings> <videodatabase> <type>mysql</type> <name>KODI-Video</name> <host>IP DU NAS</host> <port>3307</port> <user>kodi</user> <pass>kodi</pass> </videodatabase> <musicdatabase> <type>mysql</type> <name>KODI-Music</name> <host>IP DU NAS</host> <port>3307</port> <user>kodi</user> <pass>kodi</pass> </musicdatabase> <videolibrary> <importwatchedstate>true</importwatchedstate> <importresumepoint>true</importresumepoint> </videolibrary> </advancedsettings> Ce fichier se place dans le userdata de OSMC/KODI pour chaque appareil que l'on souhaite lier à la base de données centralisée. Personnellement, j'utilise Kodi sur mon PC pour scrapper et gérer tous les médias disponibles sur mon NAS. Le Raspberry ne verra que le résultat de ce travail, en se synchronisant à chaque démarrage à la base de données. Voici les différent liens où copier le fichier : Sur le Raspberry : \\NOM DU PI\osmc\.kodi\userdata Sur le PC : C:\Users\NOM USER\AppData\Roaming\Kodi\userdata Une fois le fichier copié et Kodi/OSMC lancés, on peut voir que des tables ont été ajoutées dans la base de données. Il ne reste plus qu'à la remplir avec les informations disponibles en faisant scrapper les répertoires avec TheTVDB par exemple Normalement, ces informations seront disponibles sur toute autre machine sous Kodi/OSMC avec le advancedsettings.xml depuis le réseau local. Cependant, avec un Pi à distance et une connexion VPN, cela ne fonctionne pas encore. Fin de la partie 2. 3. Se connecter à la base de donnée MySQL depuis le raspberry distant Pour que le Raspberry hors du réseau local puisse avec accès à la base de données MySQL stockée sur le NAS, il faut que ce dernier se connecte au VPN avant que l'application OSMC ne se lance pendant le démarrage. Pour ce faire, on retourne dans PUTTY en SSH sur le PI, puis on va créer un dossier : osmc@OSMC-PI:~$ sudo mkdir /lib/systemd/system/mediacenter.service.d Puis créer le fichier suivant : osmc@OSMC-PI:~$ sudo nano /lib/systemd/system/mediacenter.service.d/wait-for-tun0.conf Et insérer : [Service] ExecStartPre = /usr/local/bin/wait-for-tun0.sh Sauver avec CTRL+X puis Y puis enter Ensuite, créer le script : osmc@OSMC-PI:~$ sudo nano /usr/local/bin/wait-for-tun0.sh Et insérer le code suivant pour que l'application OSMC démarre 60 secondes plus tard que la connexion VPN pour qu'elle est le temps d'être active : #!/bin/bash count=60 while [ $count -gt 0 ]; do if $(ip link show tun0 >/dev/null 2>&1); then break; fi sleep 1 let count-=1 done sleep 5 Sauver avec CTRL+X puis Y puis enter, et lancer le script : osmc@OSMC-PI:~$ sudo chmod u+x /usr/local/bin/wait-for-tun0.sh Redémarrer le Pi et normalement le démarrage sera plus long que d'habitude, permettant d'être connecté en VPN avant que OSMC ne se lance. Les informations de la base de données devraient s'afficher à l'écran, comme dans le réseau local. Voilà, c'est fini :D PS : Le point négatif de cette méthode est que tout le flux du Pi passe par le VPN. Je cherche encore un moyen de ne pas faire passer par exemple le flux de youtube ou d'autres Addons de streaming pour ne pas surcharger le UP de la connexion au NAS inutilement. Si quelqu'un à une solution pour ça je suis preneur. Sources : https://www.youtube.com/watch?v=5MLDDg87Oqk https://technotips.fr/132-kodi-xbmc-creer-base-donnees-centralisee/#prettyPhoto http://kodi.wiki/view/Userdata_folder https://discourse.osmc.tv/t/osmc-mysql-going-through-a-vpn-to-a-remote-server/54853
  22. Salut, J'ai posé la question sur le forum OSMC, puis cela fonctionne sur une version clean d'OSMC. La je cherche a le faire marcher avec le dual boot OSMC-Retropie. https://discourse.osmc.tv/t/osmc-mysql-going-through-a-vpn-to-a-remote-server/54853/19
  23. Après plusieurs tests; le combo VPN+WEBDAVS a de belles performances. LE VPN+SMB lag énormément. Je souhaites aussi lire ma base de données centralisée mysql à distance. Cependant, lorsque je redémarre le PI le fichier advancedsettings.xml fait planter le démarrage car il ne trouve pas l'IP du serveur mySQL, aui est disponible après s'être connecté en VPN. Est ce qu'il existe une ligne de code pour retarder de quelques secondes la recherche de la base de donnée mySQL ? Je ne trouve rien sur le web... Merci
  24. Hello, je souhaite offrir un Rpi avec osmc à des proches pour qu'ils aient accès à mes dossiers sur mon NAS sans trop d'effort. La connexion VPN est déjà activé entre OSMC + addon "VPN Manager for OpenVPN" et le NAS avec VPN Serveur. Par la suite, quel est le protocole que je puisse utiliser pour voir les dossiers sur le NAS ? SMB ? WEBDAV ? NFS ? Comment est ce que je configure ça ? Le VPN est il vraiment utile pour des accès en lecture seule? Je souhaiterai que le Rpi soit comme si j'étais dans mon réseau local. Merci, à vous
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.