<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Nas on Pascal&#39;s weblog</title>
        <link>https://pled.fr/categories/nas/</link>
        <description>Recent content in Nas on Pascal&#39;s weblog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr</language>
        <lastBuildDate>Sun, 28 Jun 2026 15:22:44 +0000</lastBuildDate><atom:link href="https://pled.fr/categories/nas/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Vorta for Borg Backup</title>
            <link>https://pled.fr/vorta-for-borg-backup/</link>
            <pubDate>Sun, 28 Jun 2026 15:22:44 +0000</pubDate>
            <guid>https://pled.fr/vorta-for-borg-backup/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;vorta.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce matin, pris d&amp;rsquo;une inspiration subite, j&amp;rsquo;ai décidé de faire une nouvelle sauvegarde de mon dossier Home. Ce dossier est déjà synchronisé grâce à Nextcloud sur un serveur distant, ainsi que sur un autre HD du PC, grâce à &lt;strong&gt;Timeshift&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Mais lorsque j&amp;rsquo;avais &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/odroid-hc2-le-retour-sous-ubuntu-serveur/&#34; &gt;remis en service mon vieil odroid-hc2&lt;/a&gt;, l&amp;rsquo;idée était de l&amp;rsquo;utiliser comme serveur de backup, avec son HD de 2 To disponible. J&amp;rsquo;avais bien redirigé les tâches rsync du serveur OMV (NAS) sur ce serveur (contenu Plex et Calibre), et puis j&amp;rsquo;étais passé à autre chose. J&amp;rsquo;avais prévu des sauvegardes à partir du PC, sans aller plus loin.&lt;/p&gt;&#xA;&lt;p&gt;Cette fois, j&amp;rsquo;ai utilisé &lt;a class=&#34;link&#34; href=&#34;https://vorta.borgbase.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Vorta&lt;/a&gt;, une interface graphique pour &lt;a class=&#34;link&#34; href=&#34;https://www.borgbackup.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Borg&lt;/a&gt;, un logiciel de backup qui a une très bonne réputation (sauvegarde chiffrées, sécurisées, compressées). L&amp;rsquo;opération a été facilité par &lt;a class=&#34;link&#34; href=&#34;https://blog.flozz.fr/2023/10/15/borgbackup-sauvegarde-sur-une-machine-distante-via-ssh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article&lt;/a&gt; sur le &lt;a class=&#34;link&#34; href=&#34;https://blog.flozz.fr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;FLOZz&amp;rsquo; Blog&lt;/a&gt;, que j&amp;rsquo;ai adapté à mon contexte et à ce que je voulais faire, puisque je bénéficiais déjà d&amp;rsquo;une connexion SSH entre mon PC et le serveur Odroid, ainsi que d&amp;rsquo;une clef de login. Une fois le dépôt Borg créé, le reste est simplissime.&lt;/p&gt;&#xA;&lt;p&gt;Voilà le détail des opérations, ça m&amp;rsquo;a permis un petit refresh sur ssh et les clefs privées et publiques&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;sur-le-serveur-odroid&#34;&gt;Sur le serveur Odroid&#xA;&lt;/h3&gt;&lt;p&gt;Cette machine tourne donc Ubuntu. Le HD externe de 2 To est monté sur le dossier &lt;code&gt;/satadisk&lt;/code&gt;, et comprend deux sous-dossiers, un pour les sauvegardes en provenance du NAS (déjà utilisé), un autre pour celles en provenance du PC (pas encore utilisé) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cd /satadisk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tree --du -h --sort&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;size . | sed -E &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/^[^[]{8,}\[/d&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;192G&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;191G&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  NAS-N150&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;  0G&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  PC-RYZEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On commence par installer borgbackup :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt install borgbackup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Je vais aussi créer un utilisateur dédié pour ces backups, ce sera plus clair.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo adduser borg --home /satadisk/PC-RYZEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On va aussi lui copier la clef publique SSH du PC déjà créée. Pour ce faire, sur le PC, on copie le contenu du fichier &lt;code&gt;/home/pascal/.shh/id_ed25519.pub&lt;/code&gt; dans un nouveau fichier créé sur la machine Odroid dans &lt;code&gt;/satadisk/PC-RYZEN/.ssh/authorized_key&lt;/code&gt; qui doit donc ressembler à ceci :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;borg@odroid:~$ cat .ssh/authorized_keys&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAp2Bz0e1GjYGMvLyw4WxXTGHN/Pla9CmJbApNnrlESM pascal@pascal-eos&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et on teste à partir du PC que la commande &lt;code&gt;$ ssh borg@192.168.1.XX&lt;/code&gt; (soit la machine odroid) fonctionne bien. Dans la foulée, je crée un dossier &lt;code&gt;pascal-eos-home-backup&lt;/code&gt; à partir de la home de l&amp;rsquo;utilisateur borg (pour le dépôt de Borg):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;borg@odroid:~$ pwd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/satadisk/PC-RYZEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;borg@odroid:~$ mkdir pascal-eos-home-backup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà, on a donc notre utilisateur &lt;strong&gt;borg&lt;/strong&gt; qui peut se connecter sans avoir à saisir de mot de passe sur la machine odroid à partir du PC.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sur-le-pc&#34;&gt;Sur le PC&#xA;&lt;/h3&gt;&lt;p&gt;On commence donc par installer Vorta, qui se chargera d&amp;rsquo;installer Borg en tant que dépendance :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo pacman -S vorta&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On le lance, et on crée le fameux dépôt, selon la terminologie de Borg. On rentre le dépôt sous la forme &lt;code&gt;ssh://&amp;lt;USER&amp;gt;@&amp;lt;MACHINE&amp;gt;&amp;lt;PATH&amp;gt;&lt;/code&gt;, ce qui donne :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ borg init --encryption&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;repokey ssh://borg@192.168.1.XX/satadisk/PC-RYZEN/pascal-eos-home-backup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Borg va vous demander une &amp;ldquo;passphrase&amp;rdquo;, choisissez un mot de passe et notez le précieusement. C&amp;rsquo;est ce qui va permettre à Borg de faire des sauvegardes chiffrées et donc sécurisées.&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à lancer Vorta, et lui indiquer de dépôt comme destination : on clique sur le + à droite, on choisit &amp;ldquo;dépôt existant&amp;rdquo;, et on rentre le dépôt sous la même forme, en indiquant le mot de passe (la passphrase demandée lors de la création du dépôt) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;513px&#34; data-flex-grow=&#34;213&#34; height=&#34;268&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/vorta-for-borg-backup/Capture-decran-du-2026-06-28-16-43-53.png&#34; width=&#34;573&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, le plus dur est fait. À noter que j&amp;rsquo;ai laissé l&amp;rsquo;option &lt;strong&gt;Clé SSH : Choisir automatiquement une clef SHH (par défaut)&lt;/strong&gt;, puisque comme expliqué au début de l&amp;rsquo;article, j&amp;rsquo;ai déjà implémenté un clef SSH entre les deux machines.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;371px&#34; data-flex-grow=&#34;154&#34; height=&#34;660&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/vorta-for-borg-backup/vorta2.png&#34; srcset=&#34;https://pled.fr/vorta-for-borg-backup/vorta2_hu_199fb7633c7a0993.png 800w, https://pled.fr/vorta-for-borg-backup/vorta2.png 1022w&#34; width=&#34;1022&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sur l&amp;rsquo;onglet &lt;strong&gt;Sources&lt;/strong&gt;, il ne reste plus qu&amp;rsquo;à définir la source du backup que l&amp;rsquo;on souhaite effectuer ( &lt;code&gt;/home/pascal&lt;/code&gt; dans mon cas), gérer les dossiers à exclure (temp, cache, etc&amp;hellip;) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;371px&#34; data-flex-grow=&#34;154&#34; height=&#34;660&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/vorta-for-borg-backup/vorta3.png&#34; srcset=&#34;https://pled.fr/vorta-for-borg-backup/vorta3_hu_d23ac2ef2e6ce846.png 800w, https://pled.fr/vorta-for-borg-backup/vorta3.png 1022w&#34; width=&#34;1022&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et sur l&amp;rsquo;onglet &lt;strong&gt;Planification&lt;/strong&gt;, la périodicité souhaitée pour les sauvegardes :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;371px&#34; data-flex-grow=&#34;154&#34; height=&#34;660&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/vorta-for-borg-backup/Capture-decran-du-2026-06-28-16-54-56.png&#34; srcset=&#34;https://pled.fr/vorta-for-borg-backup/Capture-decran-du-2026-06-28-16-54-56_hu_4b2b6ad340addb3f.png 800w, https://pled.fr/vorta-for-borg-backup/Capture-decran-du-2026-06-28-16-54-56.png 1022w&#34; width=&#34;1022&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, il ne reste plus qu&amp;rsquo;à lancer la sauvegarde :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;371px&#34; data-flex-grow=&#34;154&#34; height=&#34;660&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/vorta-for-borg-backup/vorta4.png&#34; srcset=&#34;https://pled.fr/vorta-for-borg-backup/vorta4_hu_683fff04e690d2ef.png 800w, https://pled.fr/vorta-for-borg-backup/vorta4.png 1022w&#34; width=&#34;1022&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et la taille occupée sur le disque :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cd /satadisk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tree --du -h --sort&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;size . | sed -E &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/^[^[]{8,}\[/d&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;208G&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;191G&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  NAS-N150&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; 16G&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  PC-RYZEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Franchement, cela a été très facile à mettre en place, et Vorta avec son interface graphique rend l&amp;rsquo;utilisation de Borg très facile.&lt;/p&gt;&#xA;&lt;p&gt;On peut bien sûr définir d&amp;rsquo;autres sauvegardes, ou d&amp;rsquo;autres dépôts dans un autre profil selon l&amp;rsquo;organisation souhaitée de ,os précieuses sauvegardes ! :cool:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Feishin et Navidrome</title>
            <link>https://pled.fr/feishin-et-navidrome/</link>
            <pubDate>Tue, 19 May 2026 13:15:31 +0000</pubDate>
            <guid>https://pled.fr/feishin-et-navidrome/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;feishin.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai peut-être trouvé le bon lecteur audio sur le PC, j&amp;rsquo;ai nommé &lt;a class=&#34;link&#34; href=&#34;https://github.com/jeffvli/feishin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Feishin&lt;/a&gt;. Le seul souci c&amp;rsquo;est que c&amp;rsquo;est un client de serveurs comme Navidrome, Jellyfin ou compatibles avec l&amp;rsquo;API OpenSubsonic. En clair, il ne lit pas directement les fichiers audio sur votre PC, et a besoin d&amp;rsquo;un serveur audio.&lt;/p&gt;&#xA;&lt;p&gt;Qu&amp;rsquo;à cela ne tienne, le jeu en valait la chandelle me semble-t-il lorsque j&amp;rsquo;ai vu à quoi Feishin ressemblait : beau, moderne, avec plein de fonctionnalités comme d&amp;rsquo;afficher les paroles, de s&amp;rsquo;adapter à la couleur de la pochette, d&amp;rsquo;obtenir des infos sur l&amp;rsquo;artiste, etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;384px&#34; data-flex-grow=&#34;160&#34; height=&#34;900&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-09-45-32.png&#34; srcset=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-09-45-32_hu_a7f52c839dca0bfc.png 800w, https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-09-45-32.png 1440w&#34; width=&#34;1440&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;384px&#34; data-flex-grow=&#34;160&#34; height=&#34;900&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-14-56-07.png&#34; srcset=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-14-56-07_hu_829d6219218c96b.png 800w, https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-14-56-07.png 1440w&#34; width=&#34;1440&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il a donc fallu choisir et installer un serveur sur le NAS : j&amp;rsquo;ai choisi Navidrome qui a l&amp;rsquo;air d&amp;rsquo;être une référence du genre, et accéder à ma bibliothèque musicale, ce qui m&amp;rsquo;a amené à quelques changements dans mon organisation, mais l&amp;rsquo;ensemble a été plutôt facile et je suis assez content du résultat.&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir tout ça&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;navidrome&#34;&gt;Navidrome&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;200&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/navidrome.png&#34; width=&#34;200&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Quel serveur installer ? J&amp;rsquo;ai déjà un Nextcloud Music qui tourne sur mon hébergeur qui me permet d&amp;rsquo;écouter ma musique quand je suis à l&amp;rsquo;extérieur, et j&amp;rsquo;aurais pu faire pareil en local puisque j&amp;rsquo;ai déjà une instance Nextcloud, mais j&amp;rsquo;ai regardé un peu les alternatives et vu que &lt;a class=&#34;link&#34; href=&#34;https://github.com/navidrome/navidrome/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Navidrome&lt;/a&gt; avait une bonne réputation, était une sorte de référence dans le genre, et proposait une version Docker. Et il est bien sûr Open Source. Je suis donc parti sur ce serveur.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;installation via Dockge du container Docker s&amp;rsquo;est faite en quelques minutes, je suis toujours surpris de la facilité que Docker apporte, c&amp;rsquo;est vraiment génial. Voilà le fichier compose.yaml que j&amp;rsquo;ai utilisé. Les deux paramètres LASTFM sont optionnels, j&amp;rsquo;y reviens plus bas :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;navidrome&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;deluan/navidrome:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;user&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# should be owner of volumes&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;4533&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;4533&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;ND_DEFAULTLANGUAGE&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;fr&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;ND_SCANSCHEDULE&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; * * *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;ND_LOGLEVEL&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;info&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;ND_LASTFM_APIKEY&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2931xxxxxxxxxxxxxxxxxxxxxxxx38f0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;ND_LASTFM_SECRET&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;24e2xxxxxxxxxxxxxxxxxxxxxxxx7e3d&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-yyyyyyy-xxxx-xxxx-xxxx-yyyyyyyyyy/AppData/navidrome/data:/data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/mnt/RpiMusic:/music:ro&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Une fois le container lancé, Navidrome va lire le contenu de la bibliothèque musicale indiquée pour &amp;ldquo;/music&amp;rdquo;, à savoir &lt;code&gt;/mnt/RpiMusic&lt;/code&gt; dans le fichier compose, qui est un point de montage NFS, j&amp;rsquo;y reviens. Si c&amp;rsquo;est un simple dossier local, il n&amp;rsquo;y a plus qu&amp;rsquo;à y copier la musique. Une fois ceci fait, le serveur est disponible dans le navigateur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;438px&#34; data-flex-grow=&#34;182&#34; height=&#34;1051&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-10-29-07.png&#34; srcset=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-10-29-07_hu_a215b89f03b60036.png 800w, https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-10-29-07_hu_4024e16d97bb7371.png 1600w, https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-10-29-07.png 1920w&#34; width=&#34;1920&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;la-bibliothèque-musicale&#34;&gt;La bibliothèque musicale&#xA;&lt;/h4&gt;&lt;p&gt;La question de la bibliothèque s&amp;rsquo;est vite posée : devais-je dupliquer sur le NAS celle présente sur le PC et que j&amp;rsquo;utilisais auparavant avec un lecteur audio classique (&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/endeavouros-install-decouverte/#deadbeef&#34; &gt;DeadBeef&lt;/a&gt; en l&amp;rsquo;occurence) ? Comme je dupliquais déjà cette bibliothèque musicale sur le Raspberry pour mon lecteur &amp;ldquo;de salon&amp;rdquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/moode-audio-player/&#34; &gt;MoOde&lt;/a&gt;, il y avait sans doute mieux à faire.&lt;/p&gt;&#xA;&lt;p&gt;Et puisque j&amp;rsquo;ai désormais Ubuntu 22.04 Server LTS qui tourne sur le odroid-hc2 (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/odroid-hc2-le-retour-sous-ubuntu-serveur/&#34; &gt;cet article&lt;/a&gt;), j&amp;rsquo;ai fini par installer un serveur NFS, et ajouter ceci dans &lt;code&gt;/etc/exports&lt;/code&gt;, pour partager le chemin d&amp;rsquo;accès à ma bibliothèque musicale sur le disque USB de mon Raspberry à toute machine sur mon réseau local :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/srv/nfs/usb/Music&#x9;192.168.1.0/24&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;rw,sync,no_subtree_check,no_root_squash&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Comme indiqué sur l&amp;rsquo;article en lien, j&amp;rsquo;avais eu des problèmes pour installer le service NFS (&amp;ldquo;Dependency failed for rpc_pipefs.target&amp;rdquo;) sur le serveur Ubuntu, mais j&amp;rsquo;ai finalement réussi puisque ça tourne aujourd&amp;rsquo;hui. N&amp;rsquo;ayant pas pris de notes à ce moment là, je ne sais plus trop comment c&amp;rsquo;est &amp;ldquo;tombé en marche&amp;rdquo;. :wink:&lt;/p&gt;&#xA;&lt;p&gt;Côté NAS, je suis allé ajouter dans le fichier &lt;code&gt;/etc/fstab&lt;/code&gt; les lignes suivantes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;###############################&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# NFS MOUNT RPI MUSIC LIBRARY #&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;###############################&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.17:/media/Music /mnt/RpiMusic nfs rw &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour résumer, côté Navidrome (donc sur le NAS), on a &lt;code&gt;/mnt/RpiMusic&lt;/code&gt; de défini dans le fichier &lt;code&gt;compose.yaml&lt;/code&gt; pour le dossier &lt;code&gt;/music&lt;/code&gt; du container. Dans &lt;code&gt;/etc/fstab&lt;/code&gt; du NAS, on monte ce dossier via NFS sur le dossier &lt;code&gt;srv/nfs/usb/Music&lt;/code&gt;, qui correspond sur le Raspberry au dossier &lt;code&gt;/media/Music&lt;/code&gt;, partagé via le serveur NFS.&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, ça fonctionne parfaitement, Navidrome s&amp;rsquo;accommode fort bien de ce montage NFS, ce qui n&amp;rsquo;était pas forcément le cas d&amp;rsquo;Ubuntu Music, d&amp;rsquo;après les quelques essais que j&amp;rsquo;avais pu faire précédemment.&lt;/p&gt;&#xA;&lt;p&gt;Concernant mon organisation, le PC reste tout de même l&amp;rsquo;endroit où j&amp;rsquo;ajoute ma nouvelle musique. Ensuite, un script rsync la synchronise sur le Raspberry. Il ne me reste qu&amp;rsquo;à faire un scan rapide sur l&amp;rsquo;interface de Navidrome et le tour est joué, je retrouve la musique dans Feishin immédiatement.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;605px&#34; data-flex-grow=&#34;252&#34; height=&#34;293&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-18-16-03-15-1.png&#34; width=&#34;739&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;les-playlists&#34;&gt;Les playlists&#xA;&lt;/h3&gt;&lt;p&gt;Comme toujours, il faut maintenant recréer mes playlists. J&amp;rsquo;utilise des dossiers dédiés pour les playlists, cela a ses avantages et ses inconvénients, mais globalement je trouve ça plutôt pas mal, et il y a toujours moyen de les recréer facilement comme j&amp;rsquo;ai pu le faire avec MoOde. L&amp;rsquo;inconvénient, c&amp;rsquo;est que les morceaux se retrouvent dupliqués dans la bibliothèque musicale, mais bon&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Avec Navidrome, c&amp;rsquo;est en fait très simple : il suffit d&amp;rsquo;aller dans chaque dossier, et de créer un fichier &lt;code&gt;nom_playlist.m3u&lt;/code&gt;, et le tour est joué : au prochain scan, Navidrome va automatiquement importer la playlist. Et donc sous Linux, la simple commande suivante suffit :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ls &amp;gt; nom_playlist.m3u&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, il suffit de le faire dans chaque dossier &amp;ldquo;playlist&amp;rdquo;, et de relancer un scan dans Navidrome. Côté Feishin, il n&amp;rsquo;y a rien à faire, la playlist va tout de suite apparaître.&lt;/p&gt;&#xA;&lt;p&gt;En cas de problème avec les pochettes (j&amp;rsquo;avais quelques playlists qui n&amp;rsquo;affichaient le fichier cover.jpg pourtant présent), tout est très bien détaillé dans &lt;a class=&#34;link&#34; href=&#34;https://www.navidrome.org/docs/usage/library/artwork/#artwork-uploads&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la documentation&lt;/a&gt;. Dans mon cas, j&amp;rsquo;ai simplement été sélectionner le fichier manuellement via l&amp;rsquo;interface de Navidrome.&lt;/p&gt;&#xA;&lt;h3 id=&#34;scrobbling&#34;&gt;Scrobbling&#xA;&lt;/h3&gt;&lt;p&gt;Tant que j&amp;rsquo;y étais, et puisque je l&amp;rsquo;avais activé pour MoOde, j&amp;rsquo;ai regardé ce que l&amp;rsquo;on pouvait faire de ce côté avec Navidrome. C&amp;rsquo;est malheureusement impossible à l&amp;rsquo;heure actuelle pour Libre.fm, &lt;a class=&#34;link&#34; href=&#34;https://github.com/navidrome/navidrome/discussions/4882&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;l&amp;rsquo;idée a été soumise&lt;/a&gt;, mais pas encore implémentée (si elle doit l&amp;rsquo;être un jour). Reste au choix Last.fm ou ListenBrainz. C&amp;rsquo;est très simple et bien intégré.&lt;/p&gt;&#xA;&lt;h4 id=&#34;lastfm&#34;&gt;Last.fm&#xA;&lt;/h4&gt;&lt;p&gt;Il faut bien sûr se créer un compte last.fm (gratuit) si ce n&amp;rsquo;est déjà pas le cas, et obtenir une API key sur &lt;a class=&#34;link&#34; href=&#34;https://www.last.fm/api/account/create&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://www.last.fm/api/account/create&lt;/a&gt; (seul le champ &amp;ldquo;Application name&amp;rdquo; est requis). Puis on copie les valeurs obtenues dans le fichier &lt;code&gt;compose.yaml&lt;/code&gt; (voir ci-dessus). Redémarrer Navidrome. Puis aller dans le profil utilisateur et activer le scrobbling :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;416px&#34; data-flex-grow=&#34;173&#34; height=&#34;188&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-04-16-17-01-24.png&#34; width=&#34;326&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On est redirigé vers une page last.fm où il suffit d&amp;rsquo;autoriser Navidrome à &amp;ldquo;scrobbler&amp;rdquo; vers last.fm. Et voilà, le scrobbling doit fonctionner.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;669px&#34; data-flex-grow=&#34;279&#34; height=&#34;220&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-04-16-17-03-23.png&#34; width=&#34;614&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;musicbrainz&#34;&gt;Music.Brainz&#xA;&lt;/h4&gt;&lt;p&gt;Côté MusicBrainz (ou ListenBrainz), une fois le compte créé, il faut aussi activer l&amp;rsquo;option dans Navidrome.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;435px&#34; data-flex-grow=&#34;181&#34; height=&#34;177&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-10-54-21.png&#34; width=&#34;321&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une boite de dialogue s&amp;rsquo;ouvre, il faut alors cliquer sur le lien pour recevoir le token :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;737px&#34; data-flex-grow=&#34;307&#34; height=&#34;177&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-10-50-31.png&#34; width=&#34;544&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On arrive alors sur une page de ListenBrainz, on copie le token fourni, et on le colle dans Navidrome, et le tour est joué, le scrobbling doit fonctionner sur listenbrainz :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;541px&#34; data-flex-grow=&#34;225&#34; height=&#34;285&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-11-02-48.png&#34; width=&#34;643&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;feishin&#34;&gt;Feishin&#xA;&lt;/h3&gt;&lt;p&gt;Le lecteur Feishin est disponible dans les dépôts AUR, c&amp;rsquo;est donc très facile de l&amp;rsquo;installer avec pamac (il est aussi disponible sur &lt;a class=&#34;link&#34; href=&#34;https://flathub.org/en/apps/org.jeffvli.feishin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Flathub&lt;/a&gt; au cas où) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;400px&#34; data-flex-grow=&#34;166&#34; height=&#34;363&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-11-16-54.png&#34; width=&#34;605&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On peut juste regretter qu&amp;rsquo;il ne soit pas intégré au style de Gnome (fenêtre), mais c&amp;rsquo;est vraiment un détail. Une fois lancé, il suffit d&amp;rsquo;aller dans les paramètres &amp;ldquo;Gérer les serveurs&amp;rdquo;, et de saisir les informations du serveur Navidrome (adresse et port, nom, mot de passe) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;310px&#34; data-flex-grow=&#34;129&#34; height=&#34;317&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-11-21-12.png&#34; width=&#34;410&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme je suis sur le réseau local, je n&amp;rsquo;ai pas de connexion HTTPS, il faudrait que je passe par le proxy, mais je ne me suis pas pris la tête avec ça. Et c&amp;rsquo;est tout, Feishin est opérationnel :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;384px&#34; data-flex-grow=&#34;160&#34; height=&#34;900&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-11-37-26.png&#34; srcset=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-11-37-26_hu_2c2e7ea71501037e.png 800w, https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-11-37-26.png 1440w&#34; width=&#34;1440&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;homepage-dashboard&#34;&gt;Homepage Dashboard&#xA;&lt;/h3&gt;&lt;p&gt;Comme tout service Docker installé, il me faut l&amp;rsquo;ajouter à mon dashboard &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/&#34; &gt;Homepage&lt;/a&gt;. Par contre, il a fallu chercher un peu pour trouver comment générer le token pour que les données fonctionnent.&lt;/p&gt;&#xA;&lt;p&gt;Il faut aller sur le site &lt;a class=&#34;link&#34; href=&#34;https://www.md5hashgenerator.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://www.md5hashgenerator.com/&lt;/a&gt; et générer le token en concaténant votre mot de passe navidrome + le salt indiqué dans le fichier compose (voir le fichier ci-dessous). On obtient alors le token :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;773px&#34; data-flex-grow=&#34;322&#34; height=&#34;148&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-05-19-11-10-44.png&#34; width=&#34;477&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà la partie du fichier &lt;code&gt;services.yaml&lt;/code&gt; de Homepage correspondant à Navidrome :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  - Navidrome:&#xA;      icon: navidrome&#xA;      href: http://192.168.1.32:4533&#xA;      description: Navidrome Music Server&#xA;      server: my-docker&#xA;      container: navidrome-navidrome-1&#xA;      widget:&#xA;        type: navidrome&#xA;        url: http://192.168.1.32:4533&#xA;        user: pascal&#xA;        token: 036905dfd8917194a13195ddd6dd1352&#xA;        salt: randomsalt&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Comme toujours, faire attention au nom du container, et cela fonctionne nickel du premier coup. Bonus, il affiche le morceau en train d&amp;rsquo;être joué ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;672px&#34; data-flex-grow=&#34;280&#34; height=&#34;157&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/feishin-et-navidrome/Capture-decran-du-2026-04-25-18-48-22.png&#34; width=&#34;440&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Voilà plusieurs semaines que j&amp;rsquo;utilise cette nouvelle configuration pour écouter de la musique sur le PC, et j&amp;rsquo;en suis très satisfait. Je n&amp;rsquo;ai observé aucun problème avec le montage NFS pour accéder à la musique, et Feishin est vraiment très esthétique, cela change de Rhythmbox que utilisé pendant si longtemps, et même de DeadBeef que j&amp;rsquo;utilisais depuis mon passage à EndeavourOS.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Immich : installation et découverte</title>
            <link>https://pled.fr/immich/</link>
            <pubDate>Fri, 13 Mar 2026 17:29:16 +0000</pubDate>
            <guid>https://pled.fr/immich/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;immich.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà un petit bout de temps que j&amp;rsquo;avais noté &lt;a class=&#34;link&#34; href=&#34;https://immich.app&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Immich&lt;/a&gt; comme futur container Docker à installer. Il s&amp;rsquo;agit d&amp;rsquo;une solution auto-hébergée de gestion de photos et de vidéos. Elle est souvent donnée comme un remplacement à Google Photos.&lt;/p&gt;&#xA;&lt;p&gt;En ce qui me concerne, ce sera en remplacement de &lt;strong&gt;Nextcloud&lt;/strong&gt; pour synchroniser les photos prises avec le smartphone sur un serveur local. C&amp;rsquo;est d&amp;rsquo;ailleurs la fonction principale d&amp;rsquo;Immich, celle pour laquelle le développeur l&amp;rsquo;a créé au début.&lt;/p&gt;&#xA;&lt;p&gt;Car depuis les premières versions, Immich s&amp;rsquo;est beaucoup développé, d&amp;rsquo;autres fonctionnalités, comme la géolocalisation, la détection de visages, la création d&amp;rsquo;albums, le partage, un éditeur basique (recadrer, rotation), et j&amp;rsquo;en oublie sûrement. Immich propose aussi un outil en ligne de commande pour importer des photos ou des vidéos d&amp;rsquo;une autre source que le smartphone, comme des photos déjà archivées. On serait donc tenté de l&amp;rsquo;utiliser comme un album photo en ligne&amp;hellip; Ce qui ne va finalement pas me convaincre, j&amp;rsquo;y reviens en fin d&amp;rsquo;article.&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir tout cela, l&amp;rsquo;installation a été hyper facile et rapide, il m&amp;rsquo;a fallu un peu plus de temps pour les réglages et la prise en main de l&amp;rsquo;interface, car on n&amp;rsquo;est plus dans la simple vue d&amp;rsquo;une arborescence de fichiers, tout passe par une base de données, ce qui change pas mal de choses.&lt;/p&gt;&#xA;&lt;h3 id=&#34;nextcloud&#34;&gt;Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;La synchro des photos proposée par Nextcloud ne fonctionne pas toujours très bien, et surtout on n&amp;rsquo;a aucun moyen d&amp;rsquo;agir dessus. La synchro peut être immédiate, ou arriver dix minutes plus tard, voir pas du tout (certains fichiers peuvent être omis, typiquement après une mise à jour de l&amp;rsquo;appli, c&amp;rsquo;est arrivé plusieurs fois).&lt;/p&gt;&#xA;&lt;p&gt;Ce qui me dérange le plus, c&amp;rsquo;est dans le scénario suivant : je suis en train d&amp;rsquo;écrire un article pour le blog, ou de créer une bug sur Github, et j&amp;rsquo;ai besoin de prendre un screenshot sur mon tel. Je m&amp;rsquo;attend à ce que la synchro soit rapide, et que je puisse récupérer rapidement le fichier sur le PC, or ce n&amp;rsquo;est pas le cas, et j&amp;rsquo;ai plus vite fait de me l&amp;rsquo;envoyer par mail du smartphone, ce qui est quand même navrant.&lt;/p&gt;&#xA;&lt;p&gt;Évidemment, la perte de fonctionnalité ou l&amp;rsquo;apparition de bugs après une mise à jour est également un sérieux problème. Dans l&amp;rsquo;ensemble, &lt;a class=&#34;link&#34; href=&#34;https://help.nextcloud.com/t/android-client-does-not-auto-upload-all-images/216849&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;le manque de fiabilité&lt;/a&gt; est vraiment problématique (je ne suis pas le seul à m&amp;rsquo;en plaindre), et il était temps de passer à une autre solution.&lt;/p&gt;&#xA;&lt;h3 id=&#34;installation-dimmich&#34;&gt;Installation d&amp;rsquo;Immich&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai donc installé Immich en mode Docker, et l&amp;rsquo;installation a été d&amp;rsquo;une extrême simplicité, j&amp;rsquo;en étais même surpris !&lt;/p&gt;&#xA;&lt;p&gt;Il y a deux fichiers à récupérer comme expliqué sur &lt;a class=&#34;link&#34; href=&#34;https://docs.immich.app/overview/quick-start&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la page d&amp;rsquo;aide&lt;/a&gt; : un fichier &lt;code&gt;docker-compose.yml&lt;/code&gt; dont je copie tel quel le contenu dans &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/dockge-gestion-des-container-docker/&#34; &gt;Dockge&lt;/a&gt;, et un fichier &lt;code&gt;.env&lt;/code&gt; qu&amp;rsquo;il faudra personnaliser (toujours dans Dockge).&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai d&amp;rsquo;abord créé sur le NAS un dossier &lt;code&gt;immich&lt;/code&gt; dans &lt;code&gt;AppData&lt;/code&gt;, puis créé deux sous-dossiers &lt;code&gt;library&lt;/code&gt; et &lt;code&gt;postgres&lt;/code&gt;. Puis dans le fichier &lt;code&gt;.env&lt;/code&gt;, j&amp;rsquo;ai renseigné les deux variables correspondantes :&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;UPLOAD_LOCATION=/srv/dev-disk-by-uuid-wwwwwwww-xxxxxx-yyyy-zzzzzzzz/AppData/immich/library DB_DATA_LOCATION=/srv/dev-disk-by-uuid-wwwwwwww-xxxxxx-yyyy-zzzzzzzz/AppData/immich/postgres&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà pour l&amp;rsquo;essentiel. Reste la Timezone à définir, ainsi que le mot de passe pour la base de données :&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;TZ=Europe/Paris DB_PASSWORD=mot_de_passe&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, rien d&amp;rsquo;autre à faire, le fichier &lt;code&gt;compose.yaml&lt;/code&gt; de Dockge reste inchangé. Je démarre le container, et hop ! tout fonctionne immédiatement, c&amp;rsquo;est vraiment cool. :cool:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;280px&#34; data-flex-grow=&#34;116&#34; height=&#34;861&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/Capture-decran-du-2026-02-27-16-00-41.png&#34; srcset=&#34;https://pled.fr/immich/Capture-decran-du-2026-02-27-16-00-41_hu_d0b23d1ffb7867a7.png 800w, https://pled.fr/immich/Capture-decran-du-2026-02-27-16-00-41.png 1005w&#34; width=&#34;1005&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je passe les différents écrans pour déclarer l&amp;rsquo;utilisateur, et voilà, c&amp;rsquo;est fini côté serveur pour Immich.&lt;/p&gt;&#xA;&lt;p&gt;Comme indiqué dans la page d&amp;rsquo;aide, je teste l&amp;rsquo;ajout d&amp;rsquo;une première photo avec le bouton &amp;ldquo;Envoyer&amp;rdquo; en haut à droite :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;424px&#34; data-flex-grow=&#34;176&#34; height=&#34;82&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/bouton-immich.png&#34; width=&#34;145&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et ma première photo apparaît dans Immich, tout paraît tellement facile, c&amp;rsquo;est impressionnant.&lt;/p&gt;&#xA;&lt;h4 id=&#34;accès-à-partir-dinternet&#34;&gt;Accès à partir d&amp;rsquo;internet&#xA;&lt;/h4&gt;&lt;p&gt;Pour le rendre accessible de l&amp;rsquo;extérieur de mon LAN (et donc du smartphone), il reste comme d&amp;rsquo;habitude (je ne détaille pas, c&amp;rsquo;est toujours la même chose) à configurer le nom de sous-domaine côté hébergeur (CNAME), le fichier &lt;code&gt;immich.subdomain.conf&lt;/code&gt; du proxy swag (voir plus bas), et enfin l&amp;rsquo;ajout de &lt;strong&gt;immich&lt;/strong&gt; comme SUBDOMAINS dans le fichier docker de swag afin qu&amp;rsquo;il aille chercher un certificat Let&amp;rsquo;s Encrypt, puis de redémarrer le proxy. À partir de là, j&amp;rsquo;accède à mon serveur immich via HTTPS, c&amp;rsquo;est parfait.&lt;/p&gt;&#xA;&lt;h3 id=&#34;smartphone&#34;&gt;Smartphone&#xA;&lt;/h3&gt;&lt;figure&gt;&lt;img src=&#34;https://pled.fr/wp-content/uploads/2026/03/icon%5Fimmich-android.png&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;107px&#34; data-flex-grow=&#34;44&#34; height=&#34;556&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/immich-android-sync.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je passe alors sur le smartphone, désactive le Téléchargement automatique du client Nextcloud, puis installe &lt;a class=&#34;link&#34; href=&#34;https://f-droid.org/fr/packages/app.alextran.immich/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Immich&lt;/a&gt; à partir de F-Droid.&lt;/p&gt;&#xA;&lt;p&gt;Je configure les dossiers à synchroniser (les photos et mes captures d&amp;rsquo;écran), et c&amp;rsquo;est parti, la synchronisation se met en route, et au bout de quelques minutes, tout est synchronisé.&lt;/p&gt;&#xA;&lt;p&gt;Je n&amp;rsquo;aurai finalement qu&amp;rsquo;un seul problème lors de cette installation d&amp;rsquo;Immich, ce sera lors de synchronisation des vidéos sur le smartphone, qui sont dans le même dossier que les photos. Tout a l&amp;rsquo;air de bien se passer, je vois la progression du transfert, mais elles échouent toutes avec un message du type &amp;rsquo; &lt;code&gt;Connection reset by host&lt;/code&gt;&amp;quot; (je ne l&amp;rsquo;ai pas noté).&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;était le fichier du proxy qui provoquait cette erreur, et c&amp;rsquo;était de ma faute.&lt;/p&gt;&#xA;&lt;h3 id=&#34;fichier-proxy&#34;&gt;Fichier proxy&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai dans un premier temps utilisé un fichier proxy ( &lt;code&gt;immich.subdomain.conf&lt;/code&gt;) assez basique, ne contenant que le minimum, et que j&amp;rsquo;adapte à chaque nouveau serveur. J&amp;rsquo;ai bien vu qu&amp;rsquo;il existait deux fichiers d&amp;rsquo;exemples de fournis pour immich par swag/nginx, mais j&amp;rsquo;ai d&amp;rsquo;abord fait au plus simple, et comme le serveur fonctionnait&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Quand j&amp;rsquo;ai eu le problème d&amp;rsquo;upload des vidéos, le &amp;ldquo;reset by host&amp;rdquo; m&amp;rsquo;a tout de suite orienté vers le proxy. Le fichier que j&amp;rsquo;utilisais avec cette ligne :&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;client_max_body_size 20m;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce paramètre limite la taille des fichiers envoyés au serveur à 20 Mo. Dans les fichiers d&amp;rsquo;exemple fourni pour immich, ce paramètre est mis à zéro, ce qui désactive le test de la taille du fichier. J&amp;rsquo;ai donc fait pareil et le problème a été résolu, les vidéos ont pu être transférées sans problème :&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;client_max_body_size 0;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais aussi un petit souci sur l&amp;rsquo;interface web d&amp;rsquo;Immich, où la version du serveur et son statut n&amp;rsquo;était pas affiché :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;374px&#34; data-flex-grow=&#34;156&#34; height=&#34;189&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/Capture-decran-du-2026-03-03-11-17-25.png&#34; width=&#34;295&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après quelques recherches, je vois que cela vient probablement du proxy car Immich utilise les webSockets. J&amp;rsquo;ai donc fini par utiliser le fichier d&amp;rsquo;exemple fourni par Swag à savoir &lt;code&gt;immich.subdomain.conf.sample&lt;/code&gt;, afin de partir d&amp;rsquo;une base plus solide. Et là aussi le problème est résolu :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;374px&#34; data-flex-grow=&#34;156&#34; height=&#34;189&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/Capture-decran-du-2026-03-03-11-29-30.png&#34; width=&#34;295&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour info, voilà le contenu de mon fichier &lt;code&gt;immich.subdomain.conf&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai modifié la valeur de &lt;code&gt;server_name&lt;/code&gt; pour correspondre à mon sous-domaine.&lt;br&gt;&#xA;Par défaut, &lt;code&gt;$upstream_app&lt;/code&gt; a la valeur &lt;code&gt;immich&lt;/code&gt;. Pour ne pas avoir à modifier ma config (container name, cname), je l&amp;rsquo;ai remplacé par mon adresse IP locale 192.168.x.y (2 occurrences).&lt;br&gt;&#xA;Tout le reste a été laissé par défaut.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;cat&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;immich&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;subdomain&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## Version 2025/07/18&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# make sure that your immich container is named immich&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# make sure that your dns has a cname set for immich&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# immich v1.118+ only. For earlier versions, change $upstream_port to 3001&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#    listen 443 quic;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; [&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#    listen [::]:443 quic;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;immich&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;subdomain&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;domain&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fr&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;conf&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;client_max_body_size&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# enable for ldap auth (requires ldap-location.conf in the location block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/ldap-server.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# enable for Authelia (requires authelia-location.conf in the location block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/authelia-server.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# enable for Authentik (requires authentik-location.conf in the location block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/authentik-server.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# enable for Tinyauth (requires tinyauth-location.conf in the location block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/tinyauth-server.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# enable the next two lines for http auth&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#auth_basic &amp;#34;Restricted&amp;#34;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#auth_basic_user_file /config/nginx/.htpasswd;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# enable for ldap auth (requires ldap-server.conf in the server block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/ldap-location.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# enable for Authelia (requires authelia-server.conf in the server block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/authelia-location.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# enable for Authentik (requires authentik-server.conf in the server block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/authentik-location.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# enable for Tinyauth (requires tinyauth-server.conf in the server block)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;#include /config/nginx/tinyauth-location.conf;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;proxy&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;conf&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;resolver&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;conf&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;set&lt;/span&gt; $upstream_app &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;y&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;set&lt;/span&gt; $upstream_port &lt;span style=&#34;color:#ae81ff&#34;&gt;2283&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;set&lt;/span&gt; $upstream_proto &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_pass&lt;/span&gt; $upstream_proto&lt;span style=&#34;color:#f92672&#34;&gt;://&lt;/span&gt;$upstream_app&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;$upstream_port;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;~&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;immich&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;?/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;api&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;proxy&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;conf&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;resolver&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;conf&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;set&lt;/span&gt; $upstream_app &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;y&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;set&lt;/span&gt; $upstream_port &lt;span style=&#34;color:#ae81ff&#34;&gt;2283&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;set&lt;/span&gt; $upstream_proto &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_pass&lt;/span&gt; $upstream_proto&lt;span style=&#34;color:#f92672&#34;&gt;://&lt;/span&gt;$upstream_app&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;$upstream_port;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;adresse-mail&#34;&gt;Adresse mail&#xA;&lt;/h3&gt;&lt;p&gt;Dans les paramètres d&amp;rsquo;administration, il peut être utile de créer une adresse mail, que ce soit pour les notifications du serveur que pour envoyer un mail d&amp;rsquo;invitation (Immich est multi-utilisateurs, vous pouvez faire profiter vos amis de votre serveur auto-hébergé).&lt;/p&gt;&#xA;&lt;p&gt;On saisit les informations habituelles d&amp;rsquo;un compte mail (serveur SMTP), en faisant bien attention à utiliser une adresse valide dans le champ &amp;ldquo;Depuis l&amp;rsquo;adresse&amp;rdquo;, sinon le serveur SMTP refusera probablement d&amp;rsquo;envoyer le mail avec un message du genre &amp;ldquo;Sender mismatch&amp;rdquo;. Pour ce faire, j&amp;rsquo;ai choisi de créer un alias à mon compte mail, ce qui me permettra d&amp;rsquo;identifier facilement les mails en provenance du serveur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1065px&#34; data-flex-grow=&#34;443&#34; height=&#34;242&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/immich-mail.png&#34; srcset=&#34;https://pled.fr/immich/immich-mail_hu_9e9a3e6da911bbb4.png 800w, https://pled.fr/immich/immich-mail.png 1074w&#34; width=&#34;1074&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;découverte--utilisation&#34;&gt;Découverte &amp;amp; Utilisation&#xA;&lt;/h3&gt;&lt;p&gt;Une fois les photos du smartphone ajoutées, il ne reste plus qu&amp;rsquo;à explorer l&amp;rsquo;interface. Le mieux est de regarder cette vidéo, en français, qui en fait le tour, et qui se termine même par une installation docker d&amp;rsquo;Immich.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtu.be/N31SQQQQvqI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://youtu.be/N31SQQQQvqI&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Franchement, ça a l&amp;rsquo;air pas mal :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;une vue globale en mode &amp;ldquo;time line&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;une vue &amp;ldquo;Explorer&amp;rdquo; où l&amp;rsquo;on peut chercher par lieu ou par personne (il y a un container machine-learning qui offre ces options, avec aussi une détection de doublons).&lt;/li&gt;&#xA;&lt;li&gt;une vue carte pour chercher en fonction des données GPS des photos.&lt;/li&gt;&#xA;&lt;li&gt;la possibilité d&amp;rsquo;éditer une photo avec les fonctions de base (rotation, redimensionner, etc&amp;hellip;).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Il est possible d&amp;rsquo;ajouter dans la colonne de gauche une vue par dossier (Paramètres du compte - Fonctionnalités- Dossiers) qui apparaîtra en fonction du modèle de stockage défini (Administration - Modèle de stockage). Pour ma part, j&amp;rsquo;ai choisi le même que j&amp;rsquo;utilisais dans Nextcloud, à savoir Année &amp;amp; Mois :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;446px&#34; data-flex-grow=&#34;186&#34; height=&#34;312&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/immich-format.png&#34; width=&#34;581&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce qui donne :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;362px&#34; data-flex-grow=&#34;150&#34; height=&#34;385&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/Capture-decran-du-2026-03-07-16-57-10.png&#34; width=&#34;581&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est la seule façon que j&amp;rsquo;ai trouvé pour afficher les photos en mode &amp;ldquo;mosaïque&amp;rdquo; et pas en mode &amp;ldquo;timeline&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;481px&#34; data-flex-grow=&#34;200&#34; height=&#34;299&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/mocaic.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On peut aussi définir des favoris, créer des albums, partager des photos ou des albums avec des personnes. Enfin, on peut aussi archiver certaines photos, qui n&amp;rsquo;apparaîtront plus mais seront tout de même conservées.&lt;/p&gt;&#xA;&lt;h3 id=&#34;immich-cli&#34;&gt;Immich CLI&#xA;&lt;/h3&gt;&lt;p&gt;Il me reste une chose à faire : importer d&amp;rsquo;anciennes photos qui ne sont plus sur le smartphone, mais que je souhaite ajouter à Immich. Pour ce faire, Immich propose un outil en ligne de commande.&lt;/p&gt;&#xA;&lt;h4 id=&#34;npm-et-nodejs&#34;&gt;NPM et Node.js&#xA;&lt;/h4&gt;&lt;p&gt;La doc est là : &lt;a class=&#34;link&#34; href=&#34;https://docs.immich.app/features/command-line-interface&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;The Immich CLI&lt;/a&gt;. Pour utiliser le CLI d&amp;rsquo;Imich, il faut installer &lt;strong&gt;npm&lt;/strong&gt; et &lt;strong&gt;node.Js&lt;/strong&gt;. NPM est un package manager dédié pour Node.js, soit le runtime JavaScript (à utiliser avec précaution, composant pouvant apporter des brèches de sécurité à votre système).&lt;/p&gt;&#xA;&lt;p&gt;Selon cette page : &lt;a class=&#34;link&#34; href=&#34;https://linuxconfig.org/install-npm-on-linux&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://linuxconfig.org/install-npm-on-linux&lt;/a&gt;, et puisque je suis sous Arch (EndeavourOS), il suffit de taper cette commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo pacman -S npm &lt;span style=&#34;color:#75715e&#34;&gt;# also installs nodejs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis on installe le client Immich :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo npm i -g @immich/cli&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;le-cli&#34;&gt;Le CLI&#xA;&lt;/h4&gt;&lt;p&gt;Il suffit ensuite de se logguer avec l&amp;rsquo;API Key que l&amp;rsquo;on peut générer dans &amp;ldquo;Paramètres du Compte - Clés d&amp;rsquo;API&amp;rdquo; (NOTE : il faudra accorder toutes les autorisations pour cette clef d&amp;rsquo;accès) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;immich login http://192.168.x.y:2283/api IMMICH_API_KEY&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, on peut utiliser les commandes pour ajouter des images dans un nouvel album, par exemple (le nom du dossier contenant les photos sera le nom de l&amp;rsquo;album) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;immich upload --album --recursive nom_du_dossier/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On peut aussi ajouter l&amp;rsquo;option &lt;code&gt;--recursive&lt;/code&gt; s&amp;rsquo;il y a des sous-dossiers : dans ce cas, chaque sous-dossier deviendra le nom d&amp;rsquo;un nouvel album. On peut aussi ajouter des images à un album existant ( &lt;code&gt;--album-name &amp;quot;Voyage 2023&amp;quot;&lt;/code&gt;). Mais on ne peut pas créer de sous-albums.&lt;/p&gt;&#xA;&lt;p&gt;Attention, si Immich détecte que l&amp;rsquo;image existe déjà, il ne l&amp;rsquo;ajoutera pas :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Crawling &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; assets...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Hashing files           | ████████████████████████████████████████ | 100% | ETA: 0s | 1/1 assets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Checking &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; duplicates | ████████████████████████████████████████ | 100% | ETA: 0s | 1/1 assets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Found &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; new files and &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; duplicate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;All assets were already uploaded, nothing to &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En fait, pour chaque image, un hash est créé et stocké dans la base de données. Mettre comme j&amp;rsquo;avais fait l&amp;rsquo;image dans la corbeille ne l&amp;rsquo;efface pas, l&amp;rsquo;image en question n&amp;rsquo;est simplement plus affichée dans Immich. Il faudra donc vider la corbeille pour pouvoir l&amp;rsquo;uploader à nouveau&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Toutes les infos et les exemples d&amp;rsquo;utilisation sont sur &lt;a class=&#34;link&#34; href=&#34;https://docs.immich.app/features/command-line-interface/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Les commandes sont finalement assez limitées, j&amp;rsquo;espérais pouvoir par exemple forcer un upload pour remplacer une photo existante, ou pouvoir effacer un album ET ses photos. Ce n&amp;rsquo;est apparemment pas possible.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sauvegarde&#34;&gt;Sauvegarde&#xA;&lt;/h3&gt;&lt;p&gt;Il y a aussi l&amp;rsquo;aspect sauvegarde à prendre en compte, qui est expliqué &lt;a class=&#34;link&#34; href=&#34;https://docs.immich.app/administration/backup-and-restore&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;. Une stratégie 3-2-1 est recommandée, soit une copie locale, une autre dans le cloud, et une troisième dans un lieu physique éloigné de quelques kms minimum&amp;hellip; Mais bon, à chacun de voir l&amp;rsquo;importance qu&amp;rsquo;il accorde à ses photos et au risque que sa maison brûle alors que le cloud vient de perdre les données. :mad:&lt;/p&gt;&#xA;&lt;p&gt;On peut retrouver l’arborescence de ses photos dans &lt;code&gt;AppData/immich/library/user&lt;/code&gt; (selon le choix de modèle de stockage choisi (voir plus haut). La base de données est sauvegardée automatiquement chaque jour dans &lt;code&gt;AppData/immich/library/backups&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Immich stocke deux types de contenu dans le système de fichiers : (a) les ressources originales non modifiées (photos et vidéos), et (b) le contenu généré. Le plus simple est donc de sauvegarder tout le contenu de &lt;code&gt;AppData/immich/library&lt;/code&gt;/ pour être tranquille.&lt;/p&gt;&#xA;&lt;p&gt;Un script pour les recopier sur un autre disque en local, typiquement sur une autre machine est une première étape. Les recopier aussi dans un cloud me paraît déjà pas mal comme niveau de sauvegarde.&lt;/p&gt;&#xA;&lt;h3 id=&#34;homepage-dashboard&#34;&gt;Homepage Dashboard&#xA;&lt;/h3&gt;&lt;p&gt;Pour finir, j&amp;rsquo;ai bien sûr créé une entrée &lt;strong&gt;Immich&lt;/strong&gt; dans mon &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/&#34; &gt;Homepage Dashboard&lt;/a&gt;, en suivant la &lt;a class=&#34;link&#34; href=&#34;https://gethomepage.dev/widgets/services/immich/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;documentation pour le widget&lt;/a&gt;, mais j&amp;rsquo;ai d&amp;rsquo;abord eu un message d&amp;rsquo;erreur API :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;452px&#34; data-flex-grow=&#34;188&#34; height=&#34;232&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/Capture-decran-du-2026-03-03-10-53-06.png&#34; width=&#34;437&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;était bizarre, puisque j&amp;rsquo;avais bien les infos sur le nombre de photos etc&amp;hellip; mais pas celles sur le CPU, la MEM et le réseau. Logiquement, j&amp;rsquo;avais indiqué un mauvais nom pour le container (immich) : la stack créée dans Dockge s&amp;rsquo;appelle bien immich, mais le container pour le server s&amp;rsquo;appelle &lt;strong&gt;immich_server&lt;/strong&gt; (en fait immich crée 4 containers, dont un pour le machine-learning).&lt;/p&gt;&#xA;&lt;p&gt;Et donc en indiquant le bon nom de container, tout a fonctionné comme attendu :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;602px&#34; data-flex-grow=&#34;251&#34; height=&#34;174&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/immich/Capture-decran-du-2026-03-03-10-50-25.png&#34; width=&#34;437&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion-et-ressenti&#34;&gt;Conclusion et ressenti&#xA;&lt;/h3&gt;&lt;p&gt;L&amp;rsquo;ensemble est vraiment pas mal, auto-héberger toutes les photos du smartphone de façon très simple, avec plein d&amp;rsquo;options très sympathiques (géolocalisation et détection de visage) est vraiment sympa. Et surtout, cela a l&amp;rsquo;air d&amp;rsquo;être beaucoup plus fiable que Nextcloud, ma solution précédente.&lt;/p&gt;&#xA;&lt;p&gt;Je constate déjà qu&amp;rsquo;une photo ou un screenshot est immédiatement téléchargé sur le serveur, et visualiser la photo dans Immich (via Firefox) est plus rapide et semble plus pratique que de parcourir l&amp;rsquo;arborescence fichier de Nextcloud pour retrouver la photo.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;aime bien avoir la possibilité de rechercher par localisation, et aussi par personne. C&amp;rsquo;est le genre de truc plutôt sympa ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;Avec les autres fonctionnalités, j&amp;rsquo;avais envisagé la création d&amp;rsquo;albums pour certaines photos comme celles de mes voyages, afin de les avoir facilement sur le tel grâce à l&amp;rsquo;application android. Mais les limitations en terme d&amp;rsquo;affichage, le mode &amp;ldquo;timeline&amp;rdquo;, ne me conviennent pas vraiment. J&amp;rsquo;aurais préféré avoir une vue mosaïque en option. J&amp;rsquo;aurais aussi aimé pouvoir créer des sous-albums pour mieux organiser les photos, mais c&amp;rsquo;est impossible. Enfin, les possibilités en mode commande (CLI) sont assez limitées.&lt;/p&gt;&#xA;&lt;p&gt;On s&amp;rsquo;aperçoit alors des limitations d&amp;rsquo;Immich. Comme je le disais en début d&amp;rsquo;article, il a été créé au départ pour copier automatiquement les photos du smartphone sur une serveur sans avoir à remettre ses photos entre les mains de Google. Je pense que dans un premier temps, je vais me contenter de l&amp;rsquo;utiliser de cette manière, on verra si par la suite Immich évolue dans la direction que je souhaite.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>FMD : Find My Device</title>
            <link>https://pled.fr/fmd-find-my-device/</link>
            <pubDate>Fri, 07 Nov 2025 15:18:18 +0000</pubDate>
            <guid>https://pled.fr/fmd-find-my-device/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;fmd-1.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà une solution très pratique quand on veut localiser son téléphone, soit en le faisant simplement sonner soit en retrouvant sa position GPS (perte, vol). Ainsi que d&amp;rsquo;autres options plus radicales, comme de l&amp;rsquo;effacer à distance.&lt;/p&gt;&#xA;&lt;p&gt;Je parle ici d&amp;rsquo;une application Android bien sûr, mais aussi de la partie serveur, l&amp;rsquo;ensemble fournissant une solution autonome totalement open source et sécurisée, respectant votre vie privée comme il se doit :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;FMD vous permet de localiser, de faire sonner, d&amp;rsquo;effacer et d&amp;rsquo;envoyer d&amp;rsquo;autres commandes à votre appareil lorsqu&amp;rsquo;il est perdu. Il se veut une alternative open source sécurisée à Find My Device de Google.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Le serveur étant disponible en mode Docker, je l&amp;rsquo;ai installé très facilementsur mon NAS. Le client Android, disponible sur F-Droid, demandera lui un peu plus d&amp;rsquo;attention, car il a besoin d&amp;rsquo;un système de Push Notification, et de permissions particulières. Cela me prendra donc un peu plus de temps, mais finalement tout fonctionne comme attendu.&lt;/p&gt;&#xA;&lt;p&gt;Voilà les différentes étapes à suivre&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;serveur&#34;&gt;Serveur&#xA;&lt;/h3&gt;&lt;p&gt;Le serveur s&amp;rsquo;installe en quelques minutes grâce à &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/dockge-gestion-des-container-docker/&#34; &gt;Dockge&lt;/a&gt;, rien de particulier à signaler, voilà le fichier &lt;code&gt;compose.yaml&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;fmd&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Use the prebuilt image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;registry.gitlab.com/fmd-foss/fmd-server:v0.12.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;fmd&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;8182&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-12354-67890/AppData/fmddata/db/:/var/lib/fmd-server/db/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# hardening container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;read_only&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cap_drop&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;ALL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;security_opt&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#66d9ef&#34;&gt;no&lt;/span&gt;-&lt;span style=&#34;color:#ae81ff&#34;&gt;new-privileges&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# end hardening&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J&amp;rsquo;ai juste changé le port par défaut, et ajouté les paramètres de sécurité.&lt;/p&gt;&#xA;&lt;p&gt;Comme d&amp;rsquo;habitude, il va falloir déclarer un sous-domaine et créer un fichier &lt;code&gt;fmd.subdomain.conf&lt;/code&gt; sur le proxy :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; [&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fmd&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;mon&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;domaine&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fr&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;client_max_body_size&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;m&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_pass&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;://&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1.32&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;8182&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Host&lt;/span&gt; $host;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;X&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Real&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;IP&lt;/span&gt; $remote_addr;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;X&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Forwarded&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;For&lt;/span&gt; $proxy_add_x_forwarded_for;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Je ne réexplique pas cette partie, voir les autres articles (&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/serveur-joplin-en-mode-docker/&#34; &gt;celui-ci&lt;/a&gt; par exemple), c&amp;rsquo;est toujours la même chose.&lt;/p&gt;&#xA;&lt;p&gt;Et on démarre le serveur. De ce côté tout est prêt.&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Si vous ne souhaitez pas installer votre propre serveur, il est possible d&amp;rsquo;utiliser celui du développeur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://fmd.nulide.de&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://fmd.nulide.de&lt;/a&gt;&#xA;et d&amp;rsquo;y créer un compte pour son smartphone.&lt;/p&gt;&#xA;&lt;p&gt;Dans ce cas, seule la partie ci-dessous concernant le smartphone vous concerne.&lt;/p&gt;&#xA;&lt;h3 id=&#34;client-android&#34;&gt;Client Android&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;200&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/fmd-android-1.png&#34; width=&#34;200&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Côté smartphone, ça va se révéler un peu plus complexe à mettre en œuvre, d&amp;rsquo;abord pour les permissions à accorder à l&amp;rsquo;application, puis au système de notification qui oblige à installer une application supplémentaire (Sunup).&lt;/p&gt;&#xA;&lt;p&gt;La &lt;a class=&#34;link&#34; href=&#34;https://fmd-foss.org/docs/fmd-android/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;doc officielle&lt;/a&gt; pour le client Android est bien détaillée. À noter aussi &lt;a class=&#34;link&#34; href=&#34;https://discuss.grapheneos.org/d/12867-find-my-device-a-possible-solution&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article sur le forum de GrapheneOS&lt;/a&gt; très intéressant. On commence par installer &lt;a class=&#34;link&#34; href=&#34;https://f-droid.org/fr/packages/de.nulide.findmydevice/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;le client FMD&lt;/a&gt; à partir de F-Droid.&lt;/p&gt;&#xA;&lt;p&gt;On lance l&amp;rsquo;application, puis il faut dans un premier choisir de &lt;strong&gt;s&amp;rsquo;inscrire&lt;/strong&gt; pour créer un compte sur le serveur. Choisir un nom pour le FMD ID (&amp;ldquo;Pixel6a&amp;rdquo; par exemple, puisque le serveur peut-être utilisé pour plusieurs téléphones) et un mot de passe. Laisser le champ &amp;ldquo;Token&amp;rdquo; vide.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;302px&#34; data-flex-grow=&#34;126&#34; height=&#34;412&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/fmd1-6.png&#34; width=&#34;520&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mais la connexion échoue avec un beau message d&amp;rsquo;erreur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;428px&#34; data-flex-grow=&#34;178&#34; height=&#34;140&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/fmd-error.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après quelques recherches, je tombe vite sur &lt;a class=&#34;link&#34; href=&#34;https://gitlab.com/fmd-foss/fmd-android/-/issues/362&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;un bug déjà créé&lt;/a&gt;, et finalement lié à &lt;a class=&#34;link&#34; href=&#34;https://gitlab.com/fmd-foss/fmd-android/-/merge_requests/380&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;un autre&lt;/a&gt; concernant les certificats auto-signés, comme ceux que mon proxy swag utilise (Letsencrypt). Il est désormais corrigé, mais il faudra attendre la prochaine version du client Android.&lt;/p&gt;&#xA;&lt;p&gt;En attendant, je désinstalle la version &lt;code&gt;0.12.1&lt;/code&gt; que j&amp;rsquo;utilisais (la plus récente), et installe la &lt;code&gt;0.11.0&lt;/code&gt; qui accepte les certificats LetsEncrypt. Cette fois la création du compte fonctionne ! Il faut ensuite accorder toutes les autorisations nécessaires à l&amp;rsquo;application selon les fonctionnalités que vous souhaitez activer/utiliser :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;339px&#34; data-flex-grow=&#34;141&#34; height=&#34;553&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/fmd-perms.png&#34; width=&#34;783&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme vous le voyez, je n&amp;rsquo;ai pas activé l&amp;rsquo;option &amp;ldquo;Delete&amp;rdquo; ni l&amp;rsquo;option &amp;ldquo;Lock&amp;rdquo;. La première me paraît ultime, la deuxième me paraît peu importante, partant du principe que l&amp;rsquo;appareil est déjà verrouillé si je le perds ou que l&amp;rsquo;on me le vole. À voir, la réflexion est tout de même en cours&amp;hellip; Pour l&amp;rsquo;option &amp;ldquo;Delete&amp;rdquo;, j&amp;rsquo;ai lu que votre code PIN vous sera demandé, ce qui sécurise quand même l&amp;rsquo;action.&lt;/p&gt;&#xA;&lt;p&gt;Les deux options qui m&amp;rsquo;intéressent le plus, c&amp;rsquo;est de pouvoir le faire sonner, ou d&amp;rsquo;obtenir sa position GPS. Accessoirement, prendre une photo peut aussi se révéler utilse.&lt;/p&gt;&#xA;&lt;p&gt;Mais pour pouvoir autoriser la fonction GPS, FMD doit pouvoir activer automatiquement les services de localisation lorsque vous déclenchez une commande &lt;code&gt;fmd locate&lt;/code&gt; (depuis le serveur), puis les désactiver à nouveau. Cela nécessite une autorisation spéciale : &lt;code&gt;WRITE_SECURE_SETTINGS&lt;/code&gt;, et c&amp;rsquo;est là que ça se complique un peu.&lt;/p&gt;&#xA;&lt;p&gt;Pour ce faire, il va falloir utiliser une commande &lt;code&gt;adb&lt;/code&gt;.Tout est expliqué &lt;a class=&#34;link&#34; href=&#34;https://fmd-foss.org/docs/fmd-android/granting-secure-settings-access&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt; dans la doc officielle, je ne répète donc pas chaque étape. Il faut que côté smartphone le mode Débogage USB soit activé dans les options pour les développeurs :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;317px&#34; data-flex-grow=&#34;132&#34; height=&#34;189&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/usb-adb.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Avoir &lt;code&gt;adb&lt;/code&gt; installé sur le PC, puis taper la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;sunup&#34;&gt;Sunup&#xA;&lt;/h2&gt;&lt;p&gt;Terminé ? pas tout à fait ! FMD utilise UnifiedPush pour recevoir des notifications push. Aucune donnée sensible n&amp;rsquo;est envoyée dans les notifications push, elles servent uniquement à réveiller FMD. Celui recommandé est &lt;a class=&#34;link&#34; href=&#34;https://f-droid.org/fr/packages/org.unifiedpush.distributor.sunup/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Sunup&lt;/a&gt;. L&amp;rsquo;installation est très simple, et il faut ensuite relancer FMD et le faire s&amp;rsquo;enregistrer sur Sunup:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;233px&#34; data-flex-grow=&#34;97&#34; height=&#34;257&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/sunup-register.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une fois ceci fait, on voit FMD dans les applications enregistrées par l&amp;rsquo;appli Sunup :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;363px&#34; data-flex-grow=&#34;151&#34; height=&#34;165&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/sunup.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cette fois, tout est prêt côté Android, on peut désormais aller sur l&amp;rsquo;interface web du serveur et tester les différentes commandes.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sms&#34;&gt;SMS&#xA;&lt;/h3&gt;&lt;p&gt;Vous pouvez aussi déclarer des contacts de confiance autorisés à vous envoyer des commandes via SMS ( &lt;code&gt;fmd locate&lt;/code&gt;, &lt;code&gt;fmd ring&lt;/code&gt;, &lt;code&gt;fmd camera&lt;/code&gt;, etc&amp;hellip;), et recevoir des réponses par SMS. Pratique si l&amp;rsquo;appareil a perdu sa connexion internet mais a au moins accès au réseau 2G.&lt;/p&gt;&#xA;&lt;p&gt;Je n&amp;rsquo;ai pas testé cette fonctionnalité (contacts de confiance &amp;amp; SMS), mais on peut tester les commandes en local très facilement :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;133px&#34; data-flex-grow=&#34;55&#34; height=&#34;451&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/command-2.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;utilisation-du-service&#34;&gt;Utilisation du service&#xA;&lt;/h3&gt;&lt;p&gt;L&amp;rsquo;interface web du serveur se présente comme suit :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;270px&#34; data-flex-grow=&#34;112&#34; height=&#34;984&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/web1-1.png&#34; srcset=&#34;https://pled.fr/fmd-find-my-device/web1-1_hu_be33e5a545a6d3ef.png 800w, https://pled.fr/fmd-find-my-device/web1-1.png 1110w&#34; width=&#34;1110&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut donc s&amp;rsquo;identifier avec l&amp;rsquo;identifiant utilisé sur l&amp;rsquo;application Android précédemment(&amp;ldquo;Pixel6a&amp;rdquo;) et le mot de passe choisi. Une fois connecté, les différentes commandes possibles apparaissent sous la carte :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;532px&#34; data-flex-grow=&#34;221&#34; height=&#34;161&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/Capture-decran-du-2025-11-06-10-37-42.png&#34; width=&#34;357&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On peut donc géolocaliser son smartphone, faire sonner, verrouiller, effacer, prendre une photo et la visualiser. Enfin, avec le dernier bouton &amp;ldquo;paramètres&amp;rdquo;, on peut exporter les données ou supprimer le compte. L&amp;rsquo;interface est assez basique, mais fonctionnelle. Voilà ce que cela donne :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;287px&#34; data-flex-grow=&#34;119&#34; height=&#34;988&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/web2.png&#34; srcset=&#34;https://pled.fr/fmd-find-my-device/web2_hu_d4489e48dc730da7.png 800w, https://pled.fr/fmd-find-my-device/web2.png 1184w&#34; width=&#34;1184&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;324px&#34; data-flex-grow=&#34;135&#34; height=&#34;450&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/capture-2.png&#34; width=&#34;609&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;À l&amp;rsquo;heure actuelle &amp;quot; &lt;em&gt;seuls les n derniers emplacements et images sont stockés. Cela dépend de ce que l&amp;rsquo;opérateur du serveur a configuré.&lt;/em&gt;&amp;quot; . On peut donc configurer le nombre d&amp;rsquo;emplacements et de photos conservés dans le fichier compose.yaml :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# How many location points or pictures FMD Server should save per account&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;MaxSavedLoc&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;MaxSavedPic&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Apparemment, le développement est actif, et de nouvelles fonctionnalités vont être ajoutées, y compris la gestion des emplacements et des photos.&lt;/p&gt;&#xA;&lt;h4 id=&#34;missing-api-token&#34;&gt;Missing API token&#xA;&lt;/h4&gt;&lt;p&gt;Pour info, en faisant des essais, j&amp;rsquo;ai vu ce message d&amp;rsquo;erreur dans les logs :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;238px&#34; data-flex-grow=&#34;99&#34; height=&#34;252&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/missing-token.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cette erreur se produit quand on fait une demande de localisation en mode &amp;ldquo;ALL&amp;rdquo; : cela inclut &lt;strong&gt;OpenCellId&lt;/strong&gt; qui nécessite de créer un compte sur leur serveur et donc un API token. C&amp;rsquo;est donc normal, et une simple requête de localisation en mode &amp;ldquo;GPS&amp;rdquo; suffit pour obtenir la position :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;308px&#34; data-flex-grow=&#34;128&#34; height=&#34;271&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/fmd-find-my-device/Capture-decran-du-2025-11-06-11-04-02.png&#34; width=&#34;348&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Cette solution est vraiment satisfaisante, et totalement autonome. Comme le dit la personne sur le forum GrapheneOS :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;I am absolutely aware that tracking application are problematic, however having an option to track down your mobile phone (if lost or stolen), ring it, factory reset it, etc., is a very useful one, especially if you have a complete control of your data.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Le développement a l&amp;rsquo;air très sérieux, avec la sécurité en tête. C&amp;rsquo;est vrai plus d&amp;rsquo;avoir cette fonctionnalité sur le tel !&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Serveur Joplin en mode Docker</title>
            <link>https://pled.fr/serveur-joplin-en-mode-docker/</link>
            <pubDate>Sat, 25 Oct 2025 14:20:13 +0000</pubDate>
            <guid>https://pled.fr/serveur-joplin-en-mode-docker/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;joplin-server-1.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;utilise depuis longtemps &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://joplinapp.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Joplin&lt;/a&gt;&lt;/strong&gt; comme application de prise de notes. Elle est vraiment très complète, propose un client Android, et permet la synchronisation entre les appareils bien sûr. Tout ce qu&amp;rsquo;il me fallait entre le PC et le smartphone.&lt;/p&gt;&#xA;&lt;p&gt;Puis j&amp;rsquo;ai vu qu&amp;rsquo;il était possible d&amp;rsquo;installer un serveur avec Docker pour synchroniser et partager les notes de manière plus efficace, j&amp;rsquo;ai donc décidé d&amp;rsquo;installer ce serveur sur &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/&#34; &gt;mon joli NAS&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Joplin est vraiment très complet : il permet de créer des carnets dans lesquels on peut créer des notes (deux niveaux de classement donc, indispensable), il accepte tous types d&amp;rsquo;attachements aux notes (images, pdf, audio, etc&amp;hellip;), propose un nombre impressionnants de &lt;a class=&#34;link&#34; href=&#34;https://joplinapp.org/plugins/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;plugins&lt;/a&gt; (+350 ?), dispose d&amp;rsquo;un éditeur markdown (le format de stockage des notes) mais aussi au format &amp;ldquo;rich text&amp;rdquo;, ou encore d&amp;rsquo;utiliser un éditeur externe, etc, etc&amp;hellip; Difficile de faire plus complet ! Et bien sûr disponible sur toutes les plateformes (Windows, Linux, Android, iOS). Sans oublier une caractéristique importante :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Joplin est &amp;ldquo;hors ligne d&amp;rsquo;abord&amp;rdquo;, ce qui signifie que vous avez toujours toutes vos données sur votre téléphone ou votre ordinateur. Cela garantit que vos notes sont toujours accessibles, que vous ayez ou non une connexion Internet.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Enfin c&amp;rsquo;est un français, Laurent Cozic (un breton en plus ! :cool: ) qui en est le créateur. Il s&amp;rsquo;est lancé dans ce projet en 2016, ne trouvant pas ce qu&amp;rsquo;il voulait dans les solutions existantes : un logiciel open-source axé sur la sécurité et la vie privée. Bravo à lui ! On peut se dire que depuis preques 10 ans, Joplin est devenu un logiciel assez abouti avec plein de fonctionnalités.&lt;/p&gt;&#xA;&lt;p&gt;Voilà l&amp;rsquo;interface du client sur Linux :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;366px&#34; data-flex-grow=&#34;152&#34; height=&#34;832&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/myjoplin-1.png&#34; srcset=&#34;https://pled.fr/serveur-joplin-en-mode-docker/myjoplin-1_hu_319205fb7a71972d.png 800w, https://pled.fr/serveur-joplin-en-mode-docker/myjoplin-1.png 1270w&#34; width=&#34;1270&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mais cet article concerne la mise en place du serveur : ça a été assez simple, mais voyons voir cela tout de même&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;configuration-nextcloud&#34;&gt;Configuration Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;Jusqu&amp;rsquo;ici, j&amp;rsquo;utilisais mon serveur Nextcloud pour stocker mes notes. Joplin propose un mode Nextcloud pour la synchronisation, mais j&amp;rsquo;utilisais plutôt le mode WebDAV car le premier ne fonctionnait pas ou mal (c&amp;rsquo;est pourtant du webdav dans les deux cas)). Et dans les deux cas, la synchronisation était très lente. Les notes étaient stockées dans un dossier, à plat et en mode texte, dans un format markdown classique ( &lt;code&gt;.md&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Et puis j&amp;rsquo;ai vu qu&amp;rsquo;il existait une version serveur pour stocker ses notes, et qu&amp;rsquo;elle existait au format Docker. L&amp;rsquo;intérêt de passer en mode serveur (outre celui de monter nouveau container Docker sur mon NAS ! :razz: ) est d&amp;rsquo;améliorer la vitesse de synchronisation et la sécurité avec une connexion HTTPS, une base de données pour les notes, mais aussi de gérer plusieurs utilisateurs, et même la possibilité de partager des notes entre eux.&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-container-docker&#34;&gt;Le container Docker&#xA;&lt;/h3&gt;&lt;p&gt;Comme toujours, j&amp;rsquo;utilise &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/dockge-gestion-des-container-docker/&#34; &gt;Dockge&lt;/a&gt; pour gérer mes containers. Voilà le contenu du fichier &lt;code&gt;compose.yaml&lt;/code&gt; pour Joplin :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;db&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;postgres:16&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-aaaa-bbbb-cccc-dddd/AppData/joplin/joplindb:/var/lib/postgresql/data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;5432&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;5432&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_PASSWORD=votremotdepasse&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_USER=user&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_DB=postgres&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;joplin/server:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;depends_on&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;db&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;22300&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;22300&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;APP_PORT=22300&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;APP_BASE_URL=https://adresse_externe_de_mon_serveur_joplin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DB_CLIENT=pg&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_PASSWORD=votremotdepasse&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_DATABASE=postgres&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_USER=user&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_PORT=5432&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_HOST=db&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;On voit que l&amp;rsquo;on installe un container Postgres (version Docker de la base de données PostgreSQL) où le serveur Joplin ira stocker les notes.&lt;/li&gt;&#xA;&lt;li&gt;Adapter les user, password et db de la base de données.&lt;/li&gt;&#xA;&lt;li&gt;Pour Joplin, veiller à bien indiquer &lt;strong&gt;l&amp;rsquo;adresse externe&lt;/strong&gt; par laquelle on accédera au serveur de l&amp;rsquo;extérieur.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;sous-domaine&#34;&gt;Sous-domaine&#xA;&lt;/h3&gt;&lt;p&gt;Comme d&amp;rsquo;habitude, il faut commencer par créer un enregistrement CNAME pour le sous-domaine que l&amp;rsquo;on va utiliser pour Joplin. Cela se passe chez l&amp;rsquo;hébergeur web du blog, Infomaniak dans mon cas, et fait partie de l&amp;rsquo;offre. Et c&amp;rsquo;est toujours le même principe, petit rappel au cas où :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;J&amp;rsquo;ai donc un domaine pour héberger mon blog ( &lt;code&gt;pled.fr&lt;/code&gt;) pour lequel je paie chaque année un peu moins de 10€.&lt;/li&gt;&#xA;&lt;li&gt;Je crée sur le site de l&amp;rsquo;hébergeur un sous-domaine &lt;code&gt;mon-nas.pled.fr&lt;/code&gt; (enregistrement de type A) qui pointe vers l&amp;rsquo;adresse IP de ma box.&lt;/li&gt;&#xA;&lt;li&gt;Puis je crée autant de sous-domaines (enregistrement de type CNAME) pour tous mes services docker ( &lt;code&gt;nextcloud.mon-nas.pled.fr&lt;/code&gt;, &lt;code&gt;joplin.mon-nas.pled.fr&lt;/code&gt;, etc&amp;hellip;) qui tournent sur mon NAS, dont la valeur pointe vers mon premier sous-domaine de type A. Le routage vers les services sera traité par mon proxy (nginx ou swag en l&amp;rsquo;occurrence).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Voilà donc ce qu&amp;rsquo;il faut avoir pour le service Joplin :&lt;/p&gt;&#xA;&lt;p&gt;TypeNomAdresse BoxAmon-nas.pled.fr1.2.3.4TypeNomAlias deCNAMEjoplin.mon-nas.pled.frmon-nas.pled.fr&lt;/p&gt;&#xA;&lt;p&gt;Toutes les requêtes vers les services Docker vont être adressées à l&amp;rsquo;enregistrement de type A, soit vers l&amp;rsquo;adresse IP de la box. C&amp;rsquo;est aussi simple que ça. C&amp;rsquo;est ensuite au proxy de gérer la distribution des messages vers chaque service, grâce au numéro de port.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuration-du-proxy&#34;&gt;Configuration du proxy&#xA;&lt;/h2&gt;&lt;p&gt;Le tri est donc gérée par le proxy. Dans mon cas, il s&amp;rsquo;agit de &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/general/swag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Swag&lt;/a&gt;, installé avec le container Nextcloud. C&amp;rsquo;est essentiellement un serveur web &lt;strong&gt;nginx&lt;/strong&gt; avec php7, &lt;strong&gt;fail2ban&lt;/strong&gt; (prévention des intrusions) et la validation de certificats &lt;strong&gt;Let&amp;rsquo;s Encrypt&lt;/strong&gt; intégrée.&lt;/p&gt;&#xA;&lt;p&gt;Comme pour chaque service Docker, j&amp;rsquo;ai créé un fichier &lt;code&gt;joplin.subdomain.conf&lt;/code&gt; dans le dossier &lt;code&gt;AppData/swag/nginx/proxy-confs&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; [&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;joplin&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;mon&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;nas&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;pled&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fr&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;client_max_body_size&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;m&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_pass&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;://&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;y&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;22300&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Host&lt;/span&gt; $host;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;X&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Real&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;IP&lt;/span&gt; $remote_addr;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;X&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Forwarded&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;For&lt;/span&gt; $proxy_add_x_forwarded_for;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le proxy écoute sur le port 443 (https) puis redirige les messages adressés au sous-domaine joplin vers le port 22300 indiqué dans le fichier &lt;code&gt;compose.yaml&lt;/code&gt; plus haut.&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Cette fois, j&amp;rsquo;ai du y ajouter quelques règles supplémentaires pour que l&amp;rsquo;accès au serveur Joplin soit possible. Sans les trois règles &amp;ldquo;proxy_set&amp;rdquo; ci-dessus, j&amp;rsquo;obtenais cette erreur :&lt;br&gt;&#xA;&lt;code&gt;Invalid origin: http://192.168.1.xx:22300&lt;/code&gt;&lt;br&gt;&#xA;dans le navigateur.&lt;/p&gt;&#xA;&lt;p&gt;Enfin, pour obtenir le certificat LetsEncrypt, il ne faut pas oublier d&amp;rsquo;ajouter &lt;strong&gt;joplin&lt;/strong&gt; à la liste des sous-domaines dans le fichier concernant &lt;strong&gt;swag&lt;/strong&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services &lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;swag&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;SUBDOMAINS=nextcloud, joplin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et on redémarre le proxy pour prendre ces modifications en compte.&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-serveur-joplin&#34;&gt;Le serveur Joplin&#xA;&lt;/h3&gt;&lt;p&gt;Une fois le container Joplin démarré, on peut donc accéder à l&amp;rsquo;adresse du type &lt;code&gt;https://joplin.mon-nas.mon-domaine.fr&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;331px&#34; data-flex-grow=&#34;138&#34; height=&#34;362&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin.png&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour la première connexion, utiliser :&lt;/p&gt;&#xA;&lt;p&gt;Email : admin@localhost&lt;br&gt;&#xA;Password : admin&lt;/p&gt;&#xA;&lt;p&gt;Une fois identifié, il convient bien sûr de changer le mot de passe comme demandé :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;805px&#34; data-flex-grow=&#34;335&#34; height=&#34;149&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin1.png&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Profitez-en pour changer à la fois l&amp;rsquo;adresse mail et le mot de passe. Un mail de confirmation va alors être envoyé. Comme nous n&amp;rsquo;avons pas configuré de serveur mail, tout se passe en interne à Joplin : il faut aller dans la partie Admin et sélectionner Emails dans le menu de gauche : puis ouvrir le mail intitulé &amp;ldquo;Confirm your new Joplin Server account email&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;715px&#34; data-flex-grow=&#34;298&#34; height=&#34;352&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin2.png&#34; srcset=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin2_hu_da4b2fe67ec1ceb.png 800w, https://pled.fr/serveur-joplin-en-mode-docker/joplin2.png 1049w&#34; width=&#34;1049&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et enfin cliquer sur &amp;ldquo;Confirm email&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;715px&#34; data-flex-grow=&#34;298&#34; height=&#34;352&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin3.png&#34; srcset=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin3_hu_7d2c83e954ba6233.png 800w, https://pled.fr/serveur-joplin-en-mode-docker/joplin3.png 1049w&#34; width=&#34;1049&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, le serveur Joplin est opérationnel.&lt;/p&gt;&#xA;&lt;h3 id=&#34;les-clients&#34;&gt;Les clients&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;utilise deux clients pour l&amp;rsquo;instant, un sur le PC et l&amp;rsquo;autre sur le tel.&lt;/p&gt;&#xA;&lt;h4 id=&#34;linux&#34;&gt;Linux&#xA;&lt;/h4&gt;&lt;p&gt;Sur le PC Debian, l&amp;rsquo;installation et la mise à jour se fait avec la même commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le script s&amp;rsquo;occupe de tout, il installe en fait l&amp;rsquo;application au format AppImage ici : &lt;code&gt;/home/pascal/.joplin/Joplin.AppImage&lt;/code&gt;, ainsi que le fichier &lt;code&gt;.desktop&lt;/code&gt; nécessaire pour l&amp;rsquo;intégration à Gnome (icône) là : &lt;code&gt;.local/share/applications/appimagekit-joplin.desktop&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ici il va détecter la version existante, et la mettre à jour :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;232px&#34; data-flex-grow=&#34;96&#34; height=&#34;891&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin4.png&#34; srcset=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin4_hu_e4c1b403b906d67f.png 800w, https://pled.fr/serveur-joplin-en-mode-docker/joplin4.png 862w&#34; width=&#34;862&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour la synchronisation, il suffira d&amp;rsquo;aller dans Outils - Options, et d&amp;rsquo;y définir la nouvelle méthode de synchronisation avec l&amp;rsquo;adresse du serveur ainsi que l&amp;rsquo;adresse mail et le mot de passe définis précédemment :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;250px&#34; data-flex-grow=&#34;104&#34; height=&#34;479&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/joplin5-2.png&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis je lance une synchronisation (ou Ctrl-S) et toutes mes notes existantes seront immédiatement copiées vers le serveur. J&amp;rsquo;observe déjà le gain de vitesse par rapport à la synchro WebDAV utilisée précédemment.&lt;/p&gt;&#xA;&lt;h4 id=&#34;android&#34;&gt;Android&#xA;&lt;/h4&gt;&lt;p&gt;Côté Android, c&amp;rsquo;est la même chose. L&amp;rsquo;appli est disponible sur le Google Play Store mais aussi sur &lt;a class=&#34;link&#34; href=&#34;https://f-droid.org/fr/packages/net.cozic.joplin/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;F-Droid&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;332px&#34; data-flex-grow=&#34;138&#34; height=&#34;556&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/android-1.png&#34; width=&#34;770&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Je vais désormais faire de Joplin mon unique logiciel de prises de notes.&lt;/p&gt;&#xA;&lt;p&gt;Car j&amp;rsquo;avais commencé à utiliser en parallèle &lt;strong&gt;Nextcloud Notes&lt;/strong&gt;, qui possède aussi sa propre application Android. Mais à l&amp;rsquo;usage, c&amp;rsquo;est beaucoup moins abouti que Joplin, et l&amp;rsquo;appli souffre de problèmes récurrents, comme la synchronisation que l&amp;rsquo;on doit parfois forcer, ou l&amp;rsquo;affichage en mode &amp;ldquo;text enrichi&amp;rdquo; qui ne fonctionne pas.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;application Joplin est plus fiable et pratique à l&amp;rsquo;usage, et je crois qu&amp;rsquo;il y a en projet de refonte totale afin d&amp;rsquo;en améliorer l&amp;rsquo;ergonomie.&lt;/p&gt;&#xA;&lt;h4 id=&#34;nas&#34;&gt;NAS&#xA;&lt;/h4&gt;&lt;p&gt;Voilà un serveur de plus d&amp;rsquo;ajouté à mon NAS ! Je peux commencer à parler sérieusement d&amp;rsquo;auto-hébergement ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;342px&#34; data-flex-grow=&#34;142&#34; height=&#34;751&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/serveur-joplin-en-mode-docker/homepage.png&#34; srcset=&#34;https://pled.fr/serveur-joplin-en-mode-docker/homepage_hu_ab7f4a1a8087d39b.png 800w, https://pled.fr/serveur-joplin-en-mode-docker/homepage.png 1073w&#34; width=&#34;1073&#34;&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Gokapi pour échanger des fichiers</title>
            <link>https://pled.fr/gokapi-pour-echanger-des-fichiers/</link>
            <pubDate>Tue, 02 Sep 2025 15:05:11 +0000</pubDate>
            <guid>https://pled.fr/gokapi-pour-echanger-des-fichiers/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;gokapi.jpg#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il vient toujours un moment où l&amp;rsquo;on a besoin d&amp;rsquo;échanger des fichiers avec un proche. J&amp;rsquo;avais jusqu&amp;rsquo;à présent utilisé Nextcloud, mais sa fonctionnalité de partage ne me convenait pas, alors je me suis mis à la recherche d&amp;rsquo;une solution alternative, si possible utilisant Docker, afin de l&amp;rsquo;installer sur &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/&#34; &gt;mon NAS&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai posé la question sur le forum d&amp;rsquo;OMV, et j&amp;rsquo;ai vite obtenu deux réponses, la première m&amp;rsquo;indiquait un site github très intéressant : &lt;a class=&#34;link&#34; href=&#34;https://github.com/awesome-selfhosted/awesome-selfhosted&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Awesome self-hosted&lt;/a&gt;, qui liste des applications (en logiciel libre) qui peuvent être auto-hébergés (il y a même une page pour les logiciels non libres). La liste est impressionnante. La deuxième réponse m&amp;rsquo;indiquait plus précisément l&amp;rsquo;un d&amp;rsquo;entre eux, à savoir &lt;strong&gt;Gokapi&lt;/strong&gt;, qui répondait parfaitement à mes attentes.&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir cette installation qui s&amp;rsquo;est révélée très simple, en commençant par la raison pour laquelle Nextcloud ne convient pas à ce besoin.&lt;/p&gt;&#xA;&lt;h3 id=&#34;nextcloud&#34;&gt;Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;Avec Nextcloud, lorsque l&amp;rsquo;on crée un lien de partage public, ce dernier va chercher automatiquement à ouvrir le fichier dans le navigateur, que ce soit une vidéo, un pdf, etc&amp;hellip; : si le navigateur peut afficher le fichier, il le fera. Il y a bien un mini menu en haut à droite pour télécharger le fichier, mais ce n&amp;rsquo;est pas ce que je souhaite :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;268px&#34; data-flex-grow=&#34;111&#34; height=&#34;135&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/gokapi-pour-echanger-des-fichiers/Capture-decran-du-2025-09-02-09-53-51.png&#34; width=&#34;151&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai vu que l&amp;rsquo;on pouvait ajouter &lt;code&gt;/download&lt;/code&gt; au lien fourni, mais dans ce cas, le téléchargement démarre immédiatement. Or ce n&amp;rsquo;est pas le comportement que je souhaite : lorsque j&amp;rsquo;envoie un lien à un ami, je veux qu&amp;rsquo;un bouton s&amp;rsquo;affiche et lui propose de télécharger ce fichier.&lt;/p&gt;&#xA;&lt;p&gt;De ce que j&amp;rsquo;ai pu lire sur le net, Nextcloud se considère comme une plateforme de collaboration et pas de téléchargement. Il ne faut donc rien attendre de ce côté, même si cette justification me paraît un peu tirée par les cheveux.&lt;/p&gt;&#xA;&lt;h3 id=&#34;gokapi&#34;&gt;Gokapi&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai donc installé Gokapi. C&amp;rsquo;est parfait pour mon utilisation :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Gokapi est un serveur léger pour partager des fichiers, qui expirent après un certain nombre de téléchargements ou de jours. Il est similaire à l&amp;rsquo;ancien Firefox Send, à la différence que seul l&amp;rsquo;administrateur est autorisé à télécharger des fichiers.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Ses possibilités sont assez étendues : chiffrement, stockage cloud (AWS) ou local, expiration fichiers et effacement automatique, protection par mot de passe, partage de fichier par simple lien (et même QR Code)&amp;hellip; Il dispose aussi d&amp;rsquo;une API. Tout est bien expliqué dans la &lt;a class=&#34;link&#34; href=&#34;https://gokapi.readthedocs.io/en/latest/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;documentation&lt;/a&gt;. Dans cet article, je vais juste faire une installation en mode Docker, et utiliser mon NAS pour le stockage, tout simplement.&lt;/p&gt;&#xA;&lt;p&gt;Comme d&amp;rsquo;habitude, j&amp;rsquo;utilise &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/dockge-gestion-des-container-docker/&#34; &gt;Dockge&lt;/a&gt; pour installer le container. Le fichier &lt;code&gt;compose.yaml&lt;/code&gt; est très simple :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;gokapi&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;f0rc3/gokapi:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;gokapi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;GOKAPI_MAX_FILESIZE=350000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;53842&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;53842&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-data:/app/data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-config:/app/config&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis on démarre le container, qui affiche le lien vers la page de configuration :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gokapi  |&#xA;gokapi  | ██████   ██████   ██   ██  █████  ██████  ██&#xA;gokapi  | ██       ██    ██ ██  ██  ██   ██ ██   ██ ██&#xA;gokapi  | ██   ███ ██    ██ █████   ███████ ██████  ██&#xA;gokapi  | ██    ██ ██    ██ ██  ██  ██   ██ ██      ██&#xA;gokapi  |  ██████   ██████  ██   ██ ██   ██ ██      ██&#xA;gokapi  |&#xA;gokapi  | Gokapi v2.1.0 starting&#xA;gokapi  | Please open http://127.0.0.1:53842/setup to setup Gokapi.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans mon cas, j&amp;rsquo;ai bien sûr remplacé l&amp;rsquo;adresse locale par celle de mon NAS, et j&amp;rsquo;ai complété l&amp;rsquo;installation en répondant aux questions de l&amp;rsquo;assistant. Il faut juste faire attention à l&amp;rsquo;URL publique (&amp;ldquo;public facing URL&amp;rdquo;) que l&amp;rsquo;on vous demande de saisir à l&amp;rsquo;étape Webserver 2/2 :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;364px&#34; data-flex-grow=&#34;151&#34; height=&#34;413&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/gokapi-pour-echanger-des-fichiers/Capture-decran-du-2025-09-02-10-56-45.png&#34; width=&#34;627&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme pour d&amp;rsquo;autre containers, j&amp;rsquo;avais précédemment créé un sous-domaine chez mon hébergeur pour pointer sur mon NAS : &lt;code&gt;gokapi.mondomaine.fr&lt;/code&gt;, ajouté le sous-domaine à ma stack nextcloud-swag (pour obtenir un certificat), et créé un fichier &lt;code&gt;gokapi.subdomain.conf&lt;/code&gt; sur le serveur nginx.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat gokapi.subdomain.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;server &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    listen &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; ssl;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    listen &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;::&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;:443 ssl;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    server_name gokapi.mondomaine.fr;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;location / &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    proxy_pass http://192.168.x.y:53842;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;C&amp;rsquo;est donc cette adresse qu&amp;rsquo;il faut saisir pour que les liens soient accessibles de l&amp;rsquo;extérieur. Et voilà, tout fonctionne sans accroc. Pour plus de détails sur l&amp;rsquo;installation de Gokapi, vous pouvez aller voir cette page &lt;a class=&#34;link&#34; href=&#34;https://belginux.com/installer-gokapi-avec-docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Installer Gokapi avec Docker&lt;/a&gt;, bien détaillée et expliquée.&lt;/p&gt;&#xA;&lt;h4 id=&#34;personnalisation&#34;&gt;Personnalisation&#xA;&lt;/h4&gt;&lt;p&gt;La documentation est plutôt bien faite, et comprend une partie &lt;a class=&#34;link&#34; href=&#34;https://gokapi.readthedocs.io/en/latest/advanced.html#customising&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Customization&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;En mode docker, ça n&amp;rsquo;a pas l&amp;rsquo;air évident et je n&amp;rsquo;ai pas creusé plus que ça. On peut ajouter un volume supplémentaire au fichier compose.yaml pour monter un dossier supplémentaire appelé &lt;code&gt;custom&lt;/code&gt;, et le monter sur /app/custom :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-data:/app/data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/gokapi-config:/app/config&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-12345-6789-abcd-ef/AppData/Gokapi/custom:/app/custom&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dès lors, il suffit d&amp;rsquo;y créer un fichier &lt;code&gt;custom.css&lt;/code&gt; pour que son contenu soit appliqué à toutes les pages. Idem pour le JavaScript avec un fichier &lt;code&gt;public.js&lt;/code&gt; ou &lt;code&gt;admin.js&lt;/code&gt; (pour les pages liées à l&amp;rsquo;admin).&lt;/p&gt;&#xA;&lt;p&gt;Pour avoir une favicon personnalisée, il suffit de placer dans ce dossier une image de type PNG et d&amp;rsquo;une taille 512x512. Cette fonctionnalité est récente (3j) et n&amp;rsquo;est pas encore disponible dans la dernière version release (v2.1.0 à ce jour).&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai lu &lt;a class=&#34;link&#34; href=&#34;https://github.com/Forceu/Gokapi/discussions/28?sort=new&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt; que l&amp;rsquo;on pouvait aussi monter &lt;code&gt;/app/templates&lt;/code&gt; et &lt;code&gt;/app/static&lt;/code&gt; folders comme des volumes, y copier les fichiers sources (télécharger par exemple le fichier &lt;code&gt;Gokapi-2.1.0.zip&lt;/code&gt; pour ce faire), et modifier les fichiers (HTML/CSS) à l&amp;rsquo;intérieur de ces dossiers. Mais en cas de changement de version, il faudra sans doute refaire l&amp;rsquo;opération&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Voilà un service bien pratique d&amp;rsquo;installé. On peut très facilement partager un fichier, indiquer une date d&amp;rsquo;expiration ou un nombre de téléchargement maximum. Je me limiterai à cet usage, et pour cela, Gokapi est parfait.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Memos, prise de notes rapides</title>
            <link>https://pled.fr/memos-prise-de-notes-rapides/</link>
            <pubDate>Fri, 22 Aug 2025 13:43:19 +0000</pubDate>
            <guid>https://pled.fr/memos-prise-de-notes-rapides/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;memos-1.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;La gestion de notes est une problématique récurrente en informatique et l&amp;rsquo;on est toujours à la recherche de la solution parfaite, qui n&amp;rsquo;existe pas vraiment puisque chacun voit midi à sa porte sur le sujet d&amp;rsquo;une part, et peut aussi avoir des besoins contradictoires d&amp;rsquo;autre part.&lt;/p&gt;&#xA;&lt;p&gt;À chacun donc de trouver sa ou ses solutions, ce ne sont pas les applications qui manquent sur le marché. La première chose à faire est d&amp;rsquo;ailleurs sans doute de définir ses besoins. Pour ma part, j&amp;rsquo;utilise deux applications différentes (Joplin et Nextcloud Notes), le seconde me permettant de partager une note par un lien web (pratique). Cela pourrait changer avec Memos&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Car j&amp;rsquo;avais aussi le besoin de pouvoir noter quelque chose rapidement, une info, une idée, un titre de bouquin, pas forcément pour la conserver dans le futur (encore que&amp;hellip;), mais à avoir sous la main en cas de besoin, et surtout rapide à saisir.&lt;/p&gt;&#xA;&lt;p&gt;Puisque j&amp;rsquo;ai un joli &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/&#34; &gt;NAS&lt;/a&gt; désormais, et que j&amp;rsquo;apprécie la simplicité de Docker, j&amp;rsquo;ai regardé de ce qui existait de ce côté et trouvé &lt;a class=&#34;link&#34; href=&#34;https://www.usememos.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Memos&lt;/a&gt;, qui sert exactement à cela :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;360px&#34; data-flex-grow=&#34;150&#34; height=&#34;1784&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/demo.png&#34; srcset=&#34;https://pled.fr/memos-prise-de-notes-rapides/demo_hu_489d41a028215fa1.png 800w, https://pled.fr/memos-prise-de-notes-rapides/demo_hu_7e012fba74f015bb.png 1600w, https://pled.fr/memos-prise-de-notes-rapides/demo_hu_9bb21e5f4d8ed64e.png 2400w, https://pled.fr/memos-prise-de-notes-rapides/demo.png 2676w&#34; width=&#34;2676&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;interface Web est claire et bien conçue, le serveur s&amp;rsquo;installe via Docker en deux minutes, Memos semble tout à fait convenir à mes besoins. Et pas besoin d&amp;rsquo;applications spécifiques pour l&amp;rsquo;utiliser, tout se passe dans le navigateur.&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir un peu tout cela, en commençant par la solution que j&amp;rsquo;utilisais jusqu&amp;rsquo;à présent, puis à l&amp;rsquo;installation et l&amp;rsquo;utilisation de Memos.&lt;/p&gt;&#xA;&lt;h3 id=&#34;messagerie-signal&#34;&gt;Messagerie Signal&#xA;&lt;/h3&gt;&lt;p&gt;Pour ce besoin de prises de notes rapides, j&amp;rsquo;utilisais une appli de messagerie, Signal en l&amp;rsquo;occurrence (mais on peut faire la même chose avec Whatsapp), et aussi pour copier/coller rapidement une info ou un fichier entre le PC et le smartphone. Les applis de messagerie créent toutes un compte pour l&amp;rsquo;utilisateur, et il me servait donc pour ces petites notes rapides :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;219px&#34; data-flex-grow=&#34;91&#34; height=&#34;273&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/signal-notes-3.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;inconvénient, c&amp;rsquo;est que mes messages Signal sont paramétrés pour s&amp;rsquo;effacer automatiquement au bout de 6 mois. L&amp;rsquo;idée étant de ne pas avoir à les conserver ces notes, c&amp;rsquo;était la solution que j&amp;rsquo;avais choisi. Mais à l&amp;rsquo;usage, retrouver même ce genre de notes quelques mois plus tard peut s&amp;rsquo;avérer pratique.&lt;/p&gt;&#xA;&lt;h3 id=&#34;installation-de-memos&#34;&gt;Installation de Memos&#xA;&lt;/h3&gt;&lt;p&gt;Je cherchais donc une autre façon de faire, avec une solution à base de Docker, et je suis tombé sur Memos. L&amp;rsquo;interface claire et lisible m&amp;rsquo;a plu, la recherche par date avec le calendrier aussi, et enfin la possibilité d&amp;rsquo;ajouter un &lt;strong&gt;#tag&lt;/strong&gt; pour catégoriser à minima les notes, tout cela m&amp;rsquo;a paru cohérent et répondant à mes besoins.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;installation en mode Docker, avec l&amp;rsquo;aide de Dockge, est simplissime. Le fichier &lt;code&gt;compose.yaml&lt;/code&gt; est d&amp;rsquo;ailleurs très court :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;memos&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;neosmemo/memos:stable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;memos&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-f12c345a-67e8-910/AppData/memos/:/var/opt/memos&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;5230&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;5230&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On démarre, et c&amp;rsquo;est tout. Pour obtenir un accès depuis l&amp;rsquo;extérieur, j&amp;rsquo;ai procédé comme d&amp;rsquo;habitude :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Créer un sous-domaine, soit un nouvel enregistrement de type CNAME pour le service memos, sous la forme : &lt;code&gt;memos.sous-domaine.domaine&lt;/code&gt; via l&amp;rsquo;interface de mon hébergeur.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;un fichier un fichier &lt;code&gt;memos.subdomain.conf&lt;/code&gt; dans &lt;code&gt;AppData/swag/nginx/proxy-confs/ &lt;/code&gt;:&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;cat&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;memos&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;subdomain&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt; [&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ssl&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;memos&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;nas&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;n150&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;pled&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fr&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;proxy_pass&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;://&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1.32&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5230&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Sans oublier d&amp;rsquo;ajouter au ficher &lt;code&gt;compose.yaml&lt;/code&gt; de swag le nouveau sous-domaine, afin d&amp;rsquo;obtenir le certificat &lt;strong&gt;letsencrypt&lt;/strong&gt;, et pouvoir me connecter en &lt;strong&gt;https&lt;/strong&gt; :&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &lt;span style=&#34;color:#ae81ff&#34;&gt;SUBDOMAINS=nextcloud,homepage,calibre,memos&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, tout est prêt et fonctionnel.&lt;/p&gt;&#xA;&lt;h3 id=&#34;utilisation&#34;&gt;Utilisation&#xA;&lt;/h3&gt;&lt;p&gt;Le serveur Memos étant multi-utilisateurs, on commence par se créer un compte et un mot de passe, choisir le français comme langue, choisir en thème (j&amp;rsquo;ai choisi &amp;ldquo;paper&amp;rdquo;), etc&amp;hellip;&lt;/p&gt;&#xA;&lt;h4 id=&#34;la-prise-de-notes&#34;&gt;La prise de notes&#xA;&lt;/h4&gt;&lt;p&gt;La syntaxe est du markdown, c&amp;rsquo;est donc assez classique, tout est expliqué sur &lt;a class=&#34;link&#34; href=&#34;https://www.usememos.com/docs/guides/content-syntax&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;. On peut créer des titres, des listes, des cases à cocher, des tableaux, etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;432px&#34; data-flex-grow=&#34;180&#34; height=&#34;126&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/Capture-decran-du-2025-08-16-18-41-18.png&#34; width=&#34;227&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il y a 5 petites icônes proposées par défaut pour se faciliter la vie : le premier affiche les tags existants afin de pouvoir en sélectionner, le second propose d&amp;rsquo;insérer du code ou des cases à cocher, vient ensuite les attachements, puis l&amp;rsquo;insertion de liens, et enfin la localisation si vous souhaitez l&amp;rsquo;ajouter à votre note :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;163px&#34; data-flex-grow=&#34;67&#34; height=&#34;368&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/memos-geoloc-2.png&#34; width=&#34;250&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;partager-une-note&#34;&gt;Partager une note&#xA;&lt;/h4&gt;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;372px&#34; data-flex-grow=&#34;155&#34; height=&#34;147&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/Capture-decran-du-2025-08-17-16-55-24.png&#34; width=&#34;228&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sur la droite, on peut choisir de partager la note en la rendant publique. L&amp;rsquo;autre option, &amp;ldquo;espace de travail&amp;rdquo;, doit permettre de la partager avec d&amp;rsquo;autres utilisateurs de l&amp;rsquo;instance de Memos, je ne l&amp;rsquo;ai pas testée.&lt;/p&gt;&#xA;&lt;p&gt;Une fois &amp;ldquo;Public&amp;rdquo; sélectionné, une option &amp;ldquo;Copier le lien&amp;rdquo; apparaît dans le menu de droite :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;757px&#34; data-flex-grow=&#34;315&#34; height=&#34;190&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/Capture-decran-du-2025-08-17-17-08-26.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà ce que donne le lien partagé d&amp;rsquo;une note contenant du texte, une image insérée et un document PDF en attachement :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;390px&#34; data-flex-grow=&#34;162&#34; height=&#34;577&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/memos-share1-1.png&#34; srcset=&#34;https://pled.fr/memos-prise-de-notes-rapides/memos-share1-1_hu_e3342aa1c2cfbe82.png 800w, https://pled.fr/memos-prise-de-notes-rapides/memos-share1-1.png 938w&#34; width=&#34;938&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Memos peut donc aussi remplacer mon utilisation de Nexcloud Notes qui ne me satisfait pas totalement. D&amp;rsquo;abord, elle nécessite une application dédiée sur le smartphone (&amp;ldquo;less is more&amp;rdquo;), et le même problème revient régulièrement : le passage du mode d&amp;rsquo;affichage de &amp;ldquo;Édition simple&amp;rsquo; à &amp;ldquo;Édition texte enrichi&amp;rdquo; provoque un message d&amp;rsquo;erreur sur la synchronisation et affiche un conflit alors qu&amp;rsquo;aucune modification n&amp;rsquo;a été apportée à la note :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;204px&#34; data-flex-grow=&#34;85&#34; height=&#34;235&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/nextcloud-sync-2.png&#34; width=&#34;200&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;De fait, l&amp;rsquo;utilisation d&amp;rsquo;une appli web résout facilement tous ces problèmes d&amp;rsquo;affichage de texte enrichi qui semblent un peu &amp;ldquo;bugués&amp;rdquo; sur l&amp;rsquo;appli Nextcloud.&lt;/p&gt;&#xA;&lt;h3 id=&#34;smartphone&#34;&gt;Smartphone&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;100&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/memos-prise-de-notes-rapides/memos-icon.png&#34; width=&#34;100&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Côté smartphone, il n&amp;rsquo;y a pas d&amp;rsquo;applications dédiée, c&amp;rsquo;est une Web App (PWA) : il suffit de créer un raccourci sur le bureau avec le navigateur, en ouvrant l&amp;rsquo;URL de la page (par exemple &lt;a class=&#34;link&#34; href=&#34;https://memos.mondomaine.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://memos.mondomaine.fr&lt;/a&gt;), puis en allant choisir &amp;ldquo;Ajouter à l&amp;rsquo;écran d&amp;rsquo;accueil&amp;rdquo; dans le menu en haut à droite.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Je vais voir à l&amp;rsquo;usage ce que cela donne. À priori, cela correspond bien à mon besoin. L&amp;rsquo;installation est super simple, c&amp;rsquo;est très facile d&amp;rsquo;obtenir l&amp;rsquo;accès en HTTPS grâce à swag, tout comme créer le sous-domaine. Quant à l&amp;rsquo;interface de Memos, je la trouve hyper propre, sans fioritures, très sobre, bien pensée et très efficace. Bravo aux devs !&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Pi-hole en container Docker et serveur DHCP</title>
            <link>https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/</link>
            <pubDate>Tue, 29 Jul 2025 08:50:54 +0000</pubDate>
            <guid>https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;pihole-logo.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je continue de profiter de mon nouveau NAS, et cette fois j&amp;rsquo;installe Pi-Hole dans un container Docker. Je vais ainsi pouvoir dédié mon Raspberry à Volumio, et éviter de devoir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/installation-de-volumio-3-et-pihole-5/&#34; &gt;faire des modifications&lt;/a&gt; à l&amp;rsquo;image Volumio pour faire tourner Pi-Hole, ce qui me compliquait (ou même bloquait) les mises à jour (de l&amp;rsquo;un comme de l&amp;rsquo;autre). Une bonne chose à faire donc.&lt;/p&gt;&#xA;&lt;p&gt;De plus, avec Pi-hole en mode Docker, va désormais télécharger automatiquement la dernière version (paramètre &amp;ldquo;latest&amp;rdquo;) à chaque démarrage. Les &amp;ldquo;Ads lists&amp;rdquo; seront également automatiquement mises à jour une fois par semaine. Ce qui est bien pratique, le serveur restera ainsi à jour en permanence.&lt;/p&gt;&#xA;&lt;p&gt;Mais comme je l&amp;rsquo;utilise comme serveur DHCP, cela va poser quelques contraintes car il faudra que le serveur réponde aux messages DHCP qui passent en broadcast sur mon LAN. Or ce n&amp;rsquo;est pas le cas par défaut d&amp;rsquo;un container Docker (interface réseau en mode bridge). Il m&amp;rsquo;a donc fallu faire mon choix entre les solutions proposées pour le &amp;ldquo;network mode&amp;rdquo;. J&amp;rsquo;ai finalement opté pour la méthode &lt;strong&gt;macvlan&lt;/strong&gt;, et j&amp;rsquo;expliquerai pourquoi et les contraintes de ce choix. J&amp;rsquo;avoue que je me suis bien pris la tête avec ça ! :shock:&lt;/p&gt;&#xA;&lt;p&gt;Pour le reste, tout a été assez facile à réaliser, une fois le bon fichier &lt;code&gt;compose.yaml&lt;/code&gt; configuré. En effet, pas mal de choses ont changé avec la v6, y compris les paramètres, etc&amp;hellip; Et les tutos que l&amp;rsquo;on trouve concernent souvent la v5. D&amp;rsquo;ailleurs, cet article fait référence à la version Docker actuelle (2025.07.1) et donc Pi-hole v6.2.3.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est parti !&lt;/p&gt;&#xA;&lt;h3 id=&#34;pi-hole-dhcp--docker&#34;&gt;Pi-hole DHCP &amp;amp; Docker&#xA;&lt;/h3&gt;&lt;p&gt;Le principe de base de Docker, c&amp;rsquo;est d&amp;rsquo;isoler les containers, et donc par défaut c&amp;rsquo;est le &lt;strong&gt;mode bridge&lt;/strong&gt; qui est utilisé et recommandé pour l&amp;rsquo;adaptateur réseau par défaut (le container passe par le host). Or les messages de type &amp;lsquo;broadcast&amp;rsquo; utilisés par DHCP ne passeront pas sur le LAN, ce qui est nécessaire si l&amp;rsquo;on souhaite utiliser Pi-hole comme serveur DHCP.&lt;/p&gt;&#xA;&lt;p&gt;En utilisant Pi-hole comme serveur DHCP, il va fournir aux clients l&amp;rsquo;adresse du serveur DNS en même temps que l&amp;rsquo;adresse IP, et ainsi tous les appareils de mon réseau sont automatiquement configurés comme je le souhaite, et bénéficieront du filtrage de Pi-hole, que ce soit la TV ou l&amp;rsquo;imprimante comme je peux le constater sur les stats Pi-hole :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;397px&#34; data-flex-grow=&#34;165&#34; height=&#34;285&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/Capture-decran-du-2025-07-23-15-13-23.png&#34; width=&#34;472&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;les-modes-réseau&#34;&gt;Les modes réseau&#xA;&lt;/h3&gt;&lt;p&gt;Puisque je veux utiliser Pi-hole comme serveur DHCP dans un container Docker, je dois choisir un mode réseau. Les différentes possibilités sont décrites &lt;a class=&#34;link&#34; href=&#34;https://docs.pi-hole.net/docker/dhcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;sur cette page&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le &lt;strong&gt;host networking mode&lt;/strong&gt; est le plus simple à mettre en place, mais le serveur Pi-hole aura la même adresse IP que l&amp;rsquo;hôte (mon NAS), ce qui peut générer des conflits de ports avec le NAS.&lt;/li&gt;&#xA;&lt;li&gt;Le &lt;strong&gt;macvlan network mode&lt;/strong&gt; attribuera sa propre adresse sur votre LAN au serveur Pi-hole. Il n&amp;rsquo;y a donc aucun problème de conflit de port à craindre. Le container ainsi créé pourra communiquer avec les machines sur mon LAN, mais par contre ne pourra pas communiquer avec les autres containers du NAS en mode bridge.&lt;/li&gt;&#xA;&lt;li&gt;Le &lt;strong&gt;bridge networking mode&lt;/strong&gt; nécessite un DHCP relay sur le LAN qui va renvoyer le port 67 (DHCP) à Pi-hole. Cette solution permet de conserver le mode bridge mais nécessite une autre pièce logicielle sur le LAN et me semble donc plus complexe. Je ne l&amp;rsquo;ai pas essayée, mais &lt;a class=&#34;link&#34; href=&#34;https://ilyess.cc/posts/pihole-dhcp-docker-bridge-network/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article&lt;/a&gt; fournit un bon exemple sur sa réalisation (attention aux paramètres du fichier compose, ce n&amp;rsquo;est pas la v6).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc choisi le mode &lt;strong&gt;macvlan&lt;/strong&gt;, qui me paraissait le plus adapté à ce que je souhaitais. Par défaut, ce container ne pourra donc pas communiquer avec mes autres containers, puisqu&amp;rsquo;ils sont en mode bridge. Il est possible de contourner cette limitation, mais cela oblige à revoir pas mal de choses. Vous trouverez &lt;a class=&#34;link&#34; href=&#34;#macvlan&#34; &gt;en fin d&amp;rsquo;article&lt;/a&gt; plus de détails sur le fonctionnement de cette interface macvlan, du pourquoi et du comment, c&amp;rsquo;est assez technique. Personnellement, je ne suis pas allé jusque là : finalement, seul mon tableau de bord &lt;a class=&#34;link&#34; href=&#34;#homepage&#34; &gt;Homepage était impacté&lt;/a&gt; par cette limitation, et franchement la meilleure solution était de s&amp;rsquo;en passer ! :cool:&lt;/p&gt;&#xA;&lt;h3 id=&#34;création-du-macvlan-network&#34;&gt;Création du macvlan network&#xA;&lt;/h3&gt;&lt;p&gt;Il faut donc commencer par créer une interface réseau de type macvlan pour le container Docker Pi-hole que l&amp;rsquo;on va ensuite créer. On peut utiliser l&amp;rsquo;interface d&amp;rsquo;OMV (dans Services-Compose-Networks), mais une commande Docker fera très bien l&amp;rsquo;affaire :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@NAS-N150:~$ sudo docker network create --driver macvlan --attachable --subnet&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.1.0/24 --gateway&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.1.1 -o parent&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;enp1s0 macvlan-ntw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J&amp;rsquo;indique donc le driver souhaité (mavclan), puis les infos de mon LAN (subnet, gateway), le nom de l&amp;rsquo;interface réseau du NAS (enp1s0) et enfin je lui donne un nom (macvlan-ntw).&lt;/p&gt;&#xA;&lt;p&gt;On retrouve l&amp;rsquo;interface créée dans OMV-Services-Compose-Networks, et on peut cliquer sur &amp;lsquo;Inspect&amp;rsquo; pour en voir les détails.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;367px&#34; data-flex-grow=&#34;152&#34; height=&#34;302&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/Capture-decran-du-2025-07-25-18-04-08.png&#34; width=&#34;462&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-container-pi-hole&#34;&gt;Le container Pi-hole&#xA;&lt;/h3&gt;&lt;p&gt;On peut désormais créer le container pour Pi-hole. J&amp;rsquo;ai eu un peu de mal à trouver de bons tutos, avec les bons paramètres. Pour trouver les bonnes infos, il faut que le tuto concerne la v6 de Pi-hole, que ce soit une installation en mode Docker, et qu&amp;rsquo;enfin Pi-hole soit utilisé comme serveur DHCP.&lt;/p&gt;&#xA;&lt;p&gt;Bref, voilà mon fichier &lt;code&gt;compose.yaml&lt;/code&gt;, à adapter à votre cas (UID, GID, adresse réseau, adresse mail, mot de passe, volumes). NOTE : j&amp;rsquo;utilise &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/dockge-gestion-des-container-docker/&#34; &gt;Dockge&lt;/a&gt; pour gérer mes containers.&lt;/p&gt;&#xA;&lt;p&gt;On utilise bien sûr l&amp;rsquo;interface &lt;strong&gt;macvlan&lt;/strong&gt; créée plus haut, et on définit une adresse statique pour le serveur Pi-hole (dans l&amp;rsquo;idéal, en dehors du range d&amp;rsquo;adresse que l&amp;rsquo;on va attribuer au serveur DHCP). Et on mappe les ports que l&amp;rsquo;on va utiliser, notamment le 53 (DNS), 80/443 (interface web) et 67 (DHCP).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;pihole&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;pihole&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;pihole/pihole:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# DNS Ports&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;/tcp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;/udp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# Default HTTP Port&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;/tcp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# Default HTTPs Port. FTL will generate a self-signed certificate&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;/tcp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# Uncomment the below if using Pi-hole as your DHCP Server&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;67&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;67&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;/udp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PIHOLE_UID=996&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PIHOLE_GID=100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;ADMIN_EMAIL=user@mail.com&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# Set a password to access the web interface. Not setting one will result in a random password being assigned&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;FTLCONF_webserver_api_password=xxxxxxxx&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Volumes store your data between container upgrades&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# For persisting Pi-hole&amp;#39;s databases and common configuration file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-xxxxx-yyyy-zzzz-7697ca5/AppData/Pi-hole/etc-pihole:/etc/pihole&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-xxxxx-yyyy-zzzz-7697ca5/AppData/Pi-hole/etc-dnsmask.d:/etc/dnsmask.d&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cap_add&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;NET_ADMIN&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;macvlan-ntw&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;ipv4_address&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;.x.y&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;macvlan-ntw&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;external&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, il n&amp;rsquo;y a plus qu&amp;rsquo;à démarrer le container, et à se connecter via l&amp;rsquo;interface web à l&amp;rsquo;adresse &lt;code&gt;http:pi.hole/admin/login&lt;/code&gt; ou mieux &lt;code&gt;https://&amp;lt;adresse ip pi-hole&amp;gt;/admin/login&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;post-installation&#34;&gt;Post-Installation&#xA;&lt;/h3&gt;&lt;h4 id=&#34;dns&#34;&gt;DNS&#xA;&lt;/h4&gt;&lt;p&gt;La première chose à faire, c&amp;rsquo;est de définir les DNS. Je choisis Cloudfare, que j&amp;rsquo;utilisais déjà avec la version précédente de Pi-hole :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;348px&#34; data-flex-grow=&#34;145&#34; height=&#34;348&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/dns-1.png&#34; width=&#34;505&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;À noter que j&amp;rsquo;avais dans un premier temps coché également les cases IPv6, mais cela me générait des erreurs dans les logs de Pi-hole :&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;WARNING: Connection error (2606:4700:4700::1111#53): failed to send UDP request (Network unreachable)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;était parce que mon LAN est en IPv4 et que l&amp;rsquo;IPv6 est désactivé. Logique.&lt;/p&gt;&#xA;&lt;h4 id=&#34;dhcp&#34;&gt;DHCP&#xA;&lt;/h4&gt;&lt;p&gt;Ensuite, on active le service DHCP, et on attribue un range d&amp;rsquo;adresse pour les différents appareils sur mon réseau, et je laisse bien sûr la box comme passerelle par défaut :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;268px&#34; data-flex-grow=&#34;111&#34; height=&#34;451&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/Capture-decran-du-2025-07-26-16-05-49.png&#34; width=&#34;505&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Dans l&amp;rsquo;exemple ci-dessus, je m&amp;rsquo;arrête donc à l&amp;rsquo;adresse 192.168.1.100, ce qui me laisse encore pas mal d&amp;rsquo;adresses de libres que je pourrai utiliser selon les besoins : adresse IP statique pour certains serveurs, nouveau range d&amp;rsquo;adresses pour d&amp;rsquo;autres besoins (voir en fin d&amp;rsquo;article le cas macvlan).&lt;/p&gt;&#xA;&lt;p&gt;Toujours sur cette page (en mode expert), j&amp;rsquo;ai d&amp;rsquo;ailleurs assigné des adresses IP fixes aux élément de mon réseau, avec un bail &lt;strong&gt;infinite&lt;/strong&gt;, histoire de me simplifier la vie :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;300px&#34; data-flex-grow=&#34;125&#34; height=&#34;393&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/leases-1.png&#34; width=&#34;492&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;box-sfr&#34;&gt;Box SFR&#xA;&lt;/h3&gt;&lt;p&gt;Concernant la box et le décodeur TV, j&amp;rsquo;ai procédé de la même manière qu&amp;rsquo;avec la box orange, même si c&amp;rsquo;est susceptible de changer. Pour l&amp;rsquo;instant, ma box a toujours le service DHCP activé, mais seulement pour 2 adresses :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;325px&#34; data-flex-grow=&#34;135&#34; height=&#34;315&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/Capture-decran-du-2025-07-26-16-06-50.png&#34; width=&#34;427&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et je démarre le décodeur TV avec le DHCP de Pi-hole arrêté pour que le décodeur obtienne l&amp;rsquo;adresse 192.168.1.2. Je l&amp;rsquo;ai même ajouté en adresse statique :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;472px&#34; data-flex-grow=&#34;196&#34; height=&#34;217&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/Capture-decran-du-2025-07-26-16-10-40-1.png&#34; width=&#34;427&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai bien essayé de mettre la dernière adresse à 192.168.1.2 pour qu&amp;rsquo;il n&amp;rsquo;y ait qu&amp;rsquo;une seule adresse offerte par le serveur DHCP de la box, mais cela ne passe pas, l&amp;rsquo;adresse de début et de fin doivent être différentes. J&amp;rsquo;ai donc une adresse 192.168.1.3 disponible et qui peut être attribuée à un autre élément du réseau, ce que je ne souhaite pas, mais pour l&amp;rsquo;instant je n&amp;rsquo;ai pas d&amp;rsquo;autre solution. Ce n&amp;rsquo;est pas parfait, mais cela fonctionne.&lt;/p&gt;&#xA;&lt;p&gt;Mais comme je le disais dans l&amp;rsquo;article sur mon &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/passage-a-la-fibre/&#34; &gt;passage à la fibre&lt;/a&gt;, j&amp;rsquo;ai vu que contrairement à Orange, la décodeur TV SFR accepte de recevoir son adresse IP du serveur Pi-hole. Cela me permettait même de regarder le Replay de M6 sans publicités (génial !), mais par contre le Replay de FranceTV ne fonctionnait plus du tout.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;aimerais donc bien désactiver le serveur DHCP de la box, et de procéder par ajout dans la liste blanche de Pi-hole quand je lance le Replay de FranceTV ou quand j&amp;rsquo;ai une situation de blocage, et voir si cette solution est viable&amp;hellip; Au mieux, j&amp;rsquo;arrive à faire fonctionner le tout en supprimant un certain nombres de publicités des différents services de Replay (et je n&amp;rsquo;ai qu&amp;rsquo;un seul serveur DHCP). Au pire, je reviens à la configuration actuelle.&lt;/p&gt;&#xA;&lt;h3 id=&#34;ads-listes&#34;&gt;Ads listes&#xA;&lt;/h3&gt;&lt;p&gt;Par défaut, Pi-hole est fourni avec une liste de sites de pubs ou de trackers à bloquer, et qui est déjà conséquente (~500 000). Il est recommandé de commencer avec cette liste, et de voir si elle convient. J&amp;rsquo;ai trouvé cet avis qui me paraît pertinent :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Je suggérerais d&amp;rsquo;utiliser la liste par défaut, et éventuellement d&amp;rsquo;autres listes qui sont mises à jour régulièrement. Beaucoup de listes se chevauchent, il y a donc probablement un point de rendement décroissant. De plus, vous pourriez commencer à découvrir que vous incorporez une liste qui bloque certains contenus que vous souhaiteriez voir, mais que le créateur de la liste ne veut pas voir.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Sinon, ce ne sont pas les articles qui manquent sur le sujet, et qui proposent tout un tas de listes. Comme dit ci-dessus, il est important qu&amp;rsquo;elles soient tenues à jour. J&amp;rsquo;ai tout de même noté qui semble être une bonne référence : &lt;a class=&#34;link&#34; href=&#34;https://firebog.net/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://firebog.net/&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;IMPORTANT :Une fois les listes ajoutées ou modifiées, il faut aller dans le menu Tools &amp;gt; Update Gravity pour lancer une mise à jour de la base de données.&lt;/p&gt;&#xA;&lt;p&gt;Cerise sur la gâteau : la mise à jour de ces listes est automatisée par une tâche &lt;code&gt;cron&lt;/code&gt; dans le container Docker. Elle se déclenche une fois par semaine.&lt;/p&gt;&#xA;&lt;h3 id=&#34;problème-avec-homepage&#34;&gt;Problème avec Homepage&#xA;&lt;/h3&gt;&lt;p&gt;Le seul problème que j&amp;rsquo;ai rencontré est donc celui lié au mode réseau choisi (macvlan). Comme expliqué, avec ce type d&amp;rsquo;interface, on ne peut plus communiquer avec le host, et donc avec les autres containers en mode bridge. Or j&amp;rsquo;utilise &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/&#34; &gt;Homepage&lt;/a&gt; comme tableau de bord de mes serveurs, qui tourne dans un autre container. Et donc quand j&amp;rsquo;ai voulu utiliser les fonctions &amp;ldquo;widget&amp;rdquo; de Homepage pour le serveur Pi-hole, qui doivent m&amp;rsquo;afficher des stats :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1212px&#34; data-flex-grow=&#34;505&#34; height=&#34;77&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/widget-3.png&#34; width=&#34;389&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais un beau message d&amp;rsquo;erreur à la place, et le &amp;ldquo;ping&amp;rdquo; ne fonctionnait pas non plus :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;825px&#34; data-flex-grow=&#34;343&#34; height=&#34;114&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/Capture-decran-du-2025-07-28-18-34-25.png&#34; width=&#34;392&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme expliqué plus haut, je préfère m&amp;rsquo;en passer que de revoir toute la configuration réseau de mes containers. Je garde juste la définition du serveur Pi-hole dans le dashboard, sans widget ou ping, afin de pouvoir y accéder rapidement d&amp;rsquo;un clic, ce qui est mon utilisation essentielle de ce dashboard.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1404px&#34; data-flex-grow=&#34;585&#34; height=&#34;67&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/Capture-decran-du-2025-07-28-18-35-20.png&#34; width=&#34;392&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tout fonctionne donc concernant le serveur Pi-hole.&lt;/p&gt;&#xA;&lt;h3 id=&#34;ladaptateur-macvlan-en-détail&#34;&gt;L&amp;rsquo;adaptateur macvlan en détail&#xA;&lt;/h3&gt;&lt;p&gt;De tout ce qui a été dit plus haut, il est intéressant de revenir sur cet adaptateur macvlan, et de l&amp;rsquo;expliquer en détail, y compris comment on peut contourner sa limitation, à savoir qu&amp;rsquo;il est impossible de communiquer avec le host (donc le NAS en ce qui me concerne).&lt;/p&gt;&#xA;&lt;h4 id=&#34;les-bases&#34;&gt;Les bases&#xA;&lt;/h4&gt;&lt;p&gt;Par défaut les containers Dockers utilisent donc le &lt;strong&gt;mode bridge&lt;/strong&gt;, c&amp;rsquo;est-à-dire qu&amp;rsquo;ils vont utiliser l&amp;rsquo;interface réseau du host et ce dernier s&amp;rsquo;occupera de transmettre les messages aux containers. Pour le reste, le réseau est isolé par sécurité, c&amp;rsquo;est une des caractéristiques de Docker.&lt;/p&gt;&#xA;&lt;p&gt;En &lt;strong&gt;mode macvlan&lt;/strong&gt;, on assigne une adresse MAC à un container (et aussi une adresse IP). Pour ce faire, il faut que l&amp;rsquo;adaptateur réseau de l&amp;rsquo;hôte accepte le &amp;ldquo;promiscuous mode&amp;rdquo; (où une interface physique peut se voir attribuer plusieurs adresses MAC). L&amp;rsquo;hôte Docker accepte dès lors les demandes pour plusieurs adresses MAC, et achemine ces demandes vers le conteneur approprié. Dit autrement : le type de réseau macvlan vous permet de créer des &amp;ldquo;clones&amp;rdquo; d&amp;rsquo;une interface physique sur votre hôte et de l&amp;rsquo;utiliser pour attacher des conteneurs directement à votre réseau local.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;322px&#34; data-flex-grow=&#34;134&#34; height=&#34;481&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pi-hole-en-container-docker-et-serveur-dhcp/macvlan-1.png&#34; width=&#34;646&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je peux le vérifier sur mon réseau avec la commande &lt;code&gt;ip n&lt;/code&gt; : je vois bien l&amp;rsquo;adresse IP de mon NAS (192.168.1.xx) mais aussi celle assigné au serveur Pi-hole (192.168.1.yyy). Et leurs adresse MAC sont différentes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ip n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.yyy dev enp9s0 lladdr 4e:3d:e7:f7:1e:96 REACHABLE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.xx dev enp9s0 lladdr e8:ff:1e:xx:yy:zz REACHABLE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;la-limitation&#34;&gt;La limitation&#xA;&lt;/h4&gt;&lt;p&gt;Si vous créez un tel conteneur et essayez d&amp;rsquo;envoyer un ping à l&amp;rsquo;interface réseau de l&amp;rsquo;hôte Docker, cela ne fonctionnera pas. Ce trafic est explicitement filtré par les modules du noyau eux-mêmes afin d&amp;rsquo;offrir une isolation et une sécurité supplémentaires.&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Avec un conteneur attaché à un réseau macvlan, vous constaterez que s&amp;rsquo;il peut contacter sans problème d&amp;rsquo;autres systèmes sur votre réseau local, le conteneur ne pourra pas se connecter à votre hôte (et votre hôte ne pourra pas se connecter à votre conteneur). &lt;strong&gt;Il s&amp;rsquo;agit d&amp;rsquo;une limitation des interfaces macvlan&lt;/strong&gt; : sans l&amp;rsquo;aide spéciale d&amp;rsquo;un commutateur réseau, votre hôte n&amp;rsquo;est pas en mesure d&amp;rsquo;envoyer des paquets à ses propres interfaces macvlan.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Donc il n&amp;rsquo;y a pas de solution ? Et bien si, et elle est décrite dans cet excellent article : &lt;a class=&#34;link&#34; href=&#34;https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Using Docker macvlan networks&lt;/a&gt;. Mais ce n&amp;rsquo;est pas simple, j&amp;rsquo;ai du relire l&amp;rsquo;article plusieurs fois avant de comprendre ! :wink:&lt;/p&gt;&#xA;&lt;p&gt;Il s&amp;rsquo;agit donc de créer une première interface de type macvlan, mais en lui assignant un &amp;lsquo;range&amp;rsquo; d&amp;rsquo;adresse IP qui sera utilisé par tous les containers du NAS dont vous voulez qu&amp;rsquo;ils communiquent avec le host. Chaque container aura donc sa propre adresse sur le LAN, ce qui implique d&amp;rsquo;utiliser un range en dehors de celui du serveur DHCP pour éviter des conflits. Dès lors, tous nos containers peuvent communiquer entre eux, mais ne peuvent toujours pas communiquer avec le host. On crée cette interface de cette façon (je reprends l&amp;rsquo;exemple de la page) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker network create -d macvlan -o parent&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;eno1 &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --subnet 192.168.1.0/24 &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --gateway 192.168.1.1 &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --ip-range 192.168.1.192/27 &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --aux-address &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;host=192.168.1.223&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  mynet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ip-range&lt;/code&gt; indique que l&amp;rsquo;on va utiliser 32 adresses de 92.168.1.192 à 192.168.1.223 qui seront utilisées par les containers Docker.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;aux-address&lt;/code&gt; réserve l&amp;rsquo;adresse 192.168.1.223 pour le host.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Puis on va créer &lt;strong&gt;sur le NAS&lt;/strong&gt; un adaptateur macvlan qui sera en charge de communiquer avec les containers. Pour ce faire on lui assigne l&amp;rsquo;adresse précédemment réservée dans le &amp;ldquo;range macvlan&amp;rdquo; ci-dessus, et enfin on l&amp;rsquo;active :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip link add mynet-shim link eno1 type macvlan mode bridge&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip addr add 192.168.1.223/32 dev mynet-shim&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip link set mynet-shim up&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à définir la route pour dire au host d&amp;rsquo;utiliser cette interface pour communiquer avec les adresses IP utilisées par les containers :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip route add 192.168.1.192/27 dev mynet-shim&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le cas est d&amp;rsquo;ailleurs aussi décrit dans la documentation d&amp;rsquo;OMV : &lt;a class=&#34;link&#34; href=&#34;https://wiki.omv-extras.org/doku.php?id=omv7:omv7_plugins:docker_compose#how_to_create_a_vlan_pi-hole_adguard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;How to Create a VLAN (Pi-hole, Adguard, &amp;hellip;)&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Comme vous le voyez, cela nécessite quand même un peu de modifications, et mon petit souci cosmétique avec le dashboard de Homepage ne justifie pas de mettre tout cela en œuvre.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Voilà, j&amp;rsquo;ai désormais un serveur Pi-hole qui tourne en mode Docker, ce qui va lui permettre d&amp;rsquo;être mis à jour automatiquement, et me simplifier la mise à jour de Volumio sur le Raspberry, désormais dédié à ce dernier.&lt;/p&gt;&#xA;&lt;p&gt;Et j&amp;rsquo;ai appris pas mal de choses sur le réseau des containers Docker, ce n&amp;rsquo;était pas inintéressant, loin de là. Peut-être m&amp;rsquo;en servirai-je un jour&amp;hellip;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Calibre-Web</title>
            <link>https://pled.fr/calibre-web/</link>
            <pubDate>Tue, 22 Jul 2025 16:48:09 +0000</pubDate>
            <guid>https://pled.fr/calibre-web/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;calibre-web.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puisque maintenant j&amp;rsquo;ai un beau NAS x64 qui tourne, je peux penser à installer de nouveaux containers. Et j&amp;rsquo;ai vu qu&amp;rsquo;il en existait un pour Calibre, le gestionnaire de livres numériques que j&amp;rsquo;utilise sur le PC.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;idée est intéressante : rendre la bibliothèque disponible via internet. Le scénario typique, c&amp;rsquo;est que vous êtes en vacances loin de chez vous, et en manque de lecture : rien de plus simple alors que d&amp;rsquo;accéder à votre bibliothèque via internet, et de télécharger un livre de votre choix.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;interface est propre et très fluide :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;280px&#34; data-flex-grow=&#34;116&#34; height=&#34;1064&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/calibre-web/calibre-web-1.png&#34; srcset=&#34;https://pled.fr/calibre-web/calibre-web-1_hu_3d6a93379ca7e945.png 800w, https://pled.fr/calibre-web/calibre-web-1.png 1242w&#34; width=&#34;1242&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;installation du container est simplissime, puis on verra comment copier les livres récupérés sur la liseuse.&lt;/p&gt;&#xA;&lt;h3 id=&#34;la-bibliothèque&#34;&gt;La bibliothèque&#xA;&lt;/h3&gt;&lt;p&gt;La première chose à faire est bien sûr de déplacer l&amp;rsquo;ensemble de la bibliothèque (les livres au format &lt;code&gt;.epub&lt;/code&gt; en ce qui me concerne) vers le NAS. J&amp;rsquo;ai donc créé un dossier au même niveau que ma bibliothèque Plex, soit dans le dossier OMV-DATA :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;302px&#34; data-flex-grow=&#34;125&#34; height=&#34;412&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/calibre-web/Capture-decran-du-2025-07-21-16-59-15.png&#34; width=&#34;519&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis j&amp;rsquo;y ai copié toute l&amp;rsquo;arborescence des mes livres, y compris le fichier &lt;code&gt;metadata.db&lt;/code&gt;. Je vérifie ensuite avec Calibre (l&amp;rsquo;application sur le PC) que je retrouve bien tous mes livres à cet emplacement, puis j&amp;rsquo;efface l&amp;rsquo;ancien dossier que j&amp;rsquo;utilisais en local sur le PC.&lt;/p&gt;&#xA;&lt;h3 id=&#34;container-calibre-web&#34;&gt;Container Calibre-Web&#xA;&lt;/h3&gt;&lt;p&gt;Pour installer le container docker, je passe par &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/dockge-gestion-des-container-docker/&#34; &gt;Dockge&lt;/a&gt;, puisque je trouve cet outil si pratique. J&amp;rsquo;y crée le fichier &lt;code&gt;compose.yaml&lt;/code&gt; comme suit :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;calibre-web&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;lscr.io/linuxserver/calibre-web:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;calibre-web&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PUID=996&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PGID=1000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-xxxxx-yyyy-zzzz-7697ca5/AppData/Calibre/data:/config&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-uuid-xxxxx-yyyy-zzzz-7697ca5/OMV-DATA/Calibre:/books&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;8083&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;8083&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;networks&lt;/span&gt;: {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;À adapter avec vos valeurs bien sûr. On retrouve le dossier &lt;code&gt;OMV-DATA/Calibre&lt;/code&gt; précédemment créé, et un dossier &lt;code&gt;AppData/Calibre&lt;/code&gt;. Le port 8083 proposé par défaut n&amp;rsquo;était pas utilisé, je le garde donc. Voilà, c&amp;rsquo;est hyper simple, il n&amp;rsquo;y a plus qu&amp;rsquo;à lancer le container. Reste à gérer l&amp;rsquo;accès depuis l&amp;rsquo;extérieur.&lt;/p&gt;&#xA;&lt;h3 id=&#34;dns-proxy&#34;&gt;DNS, Proxy&#xA;&lt;/h3&gt;&lt;p&gt;Pour ce faire, je crée d&amp;rsquo;abord un nouvel enregistrement chez l&amp;rsquo;hébergeur de mon blog (Infomaniak) comme suit : puisque j&amp;rsquo;ai déjà créé un sous-domaine lors de la mise en place de mon serveur Nextcloud (j&amp;rsquo;avais alors créé un enregistrement de type A avec l&amp;rsquo;adresse IP de ma box, puis un enregistrement de type CNAME pour le service Nextcloud), je n&amp;rsquo;ai cette fois qu&amp;rsquo;à créer un nouvel enregistrement de type CNAME pour le service calibre, sous la forme : &lt;code&gt;calibre.sous-domaine.domaine&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Reste à configurer Swag, le proxy-serveur, pour qu&amp;rsquo;il autorise cet accès : je procède la même façon que pour Nextcloud en créant un fichier &lt;code&gt;calibre.subdomain.conf&lt;/code&gt; dans &lt;code&gt;AppData/swag/nginx/proxy-confs/ &lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat calibre.subdomain.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;server &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    listen &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; ssl;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    listen &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;::&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;:443 ssl;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    server_name calibre.xxx.pled.fr;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;location / &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    proxy_pass http://192.168.x.y:8083;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il faut également que Swag obtienne un certificat &lt;strong&gt;Letsencrypt&lt;/strong&gt; pour que l&amp;rsquo;on puisse utiliser le HTTPS lorsque l&amp;rsquo;on ouvre la page d&amp;rsquo;accueil de Calibre-Web. Il suffit pour cela d&amp;rsquo;ajouter le sous-domaine à Nextcloud dans le fichier compose de la stack Nextcloud/Mariadb/Swag :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &lt;span style=&#34;color:#ae81ff&#34;&gt;SUBDOMAINS=nextcloud,calibre&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et de redémarrer le container. Voilà, tout fonctionne du premier coup, c&amp;rsquo;est parfait.&lt;/p&gt;&#xA;&lt;h3 id=&#34;utilisation-calibre-web&#34;&gt;Utilisation Calibre-Web&#xA;&lt;/h3&gt;&lt;p&gt;Tout est hyper simple et intuitif. La fonction recherche est efficace, mais dépend forcément des informations saisies dans Calibre, comme les étiquettes, les séries, etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Une option sympa sur Calibre-Web est de pouvoir créer &amp;ldquo;une étagère&amp;rdquo;, où l&amp;rsquo;on peut sélectionner des livres qui nous intéressent sans pour autant vouloir les télécharger immédiatement. J&amp;rsquo;en ai créé une qui s&amp;rsquo;appelle &amp;ldquo;À lire&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;355px&#34; data-flex-grow=&#34;147&#34; height=&#34;717&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/calibre-web/shelf.png&#34; srcset=&#34;https://pled.fr/calibre-web/shelf_hu_91175c2656c4adee.png 800w, https://pled.fr/calibre-web/shelf.png 1061w&#34; width=&#34;1061&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il suffit ensuite de cliquer sur un livre pour soit le télécharger, soit l&amp;rsquo;ajouter à la bibliothèque :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;260px&#34; data-flex-grow=&#34;108&#34; height=&#34;735&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/calibre-web/joursbarbares.png&#34; width=&#34;799&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;copier-sur-la-liseuse-kobo&#34;&gt;Copier sur la liseuse Kobo&#xA;&lt;/h2&gt;&lt;p&gt;Quand je suis à domicile, je branche ma liseuse Kobo Aura HD sur le PC, et j&amp;rsquo;utilise Calibre pour y ajouter de nouveaux livres. Mais comment procéder si je suis en voyage ? (je n&amp;rsquo;emmène pas de PC dans mon sac à dos!).&lt;/p&gt;&#xA;&lt;h4 id=&#34;intégration-kobo&#34;&gt;Intégration Kobo&#xA;&lt;/h4&gt;&lt;p&gt;Il existe bien une option d&amp;rsquo;intégration de Kobo dans Calibre-Web, mais je ne l&amp;rsquo;ai pas testée. On peut trouver des infos &lt;a class=&#34;link&#34; href=&#34;https://github-wiki-see.page/m/janeczku/calibre-web/wiki/Kobo-Integration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;sur cette page&lt;/a&gt;, mais c&amp;rsquo;est encore en phase de développement, et comme le dit le développeur, il est préférable d&amp;rsquo;attendre pour l&amp;rsquo;utiliser. Je vais suivre son conseil, mais c&amp;rsquo;est une très bonne nouvelle !&lt;/p&gt;&#xA;&lt;h4 id=&#34;connexion-au-smartphone&#34;&gt;Connexion au smartphone&#xA;&lt;/h4&gt;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;100&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/calibre-web/adaptateur.png&#34; width=&#34;100&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc testé la solution la plus simple : utiliser mon smartphone. Je télécharge donc un livre à partir de mon instance Calibre-Web via le navigateur de mon tel, puis je connecte ma liseuse avec le câble habituel micro USB -&amp;gt; USB 2.0 auquel j&amp;rsquo;ajoute un adaptateur USB 2 -&amp;gt; USB C (qui était fourni avec mon Pixel). Le Koboreader apparaît dans le gestionnaire de fichiers, et je n&amp;rsquo;ai plus qu&amp;rsquo;à copier le fichier &lt;code&gt;.epub&lt;/code&gt; téléchargé sur la liseuse.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;224px&#34; data-flex-grow=&#34;93&#34; height=&#34;556&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/calibre-web/filemanager.png&#34; width=&#34;520&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est mieux de créer manuellement un dossier avec le nom de l&amp;rsquo;auteur s&amp;rsquo;il n&amp;rsquo;existe pas déjà, afin de garder le même type d&amp;rsquo;organisation (Calibre le faisant automatiquement). Puis y copier le fichier &lt;code&gt;.epub&lt;/code&gt; dans ce répertoire.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, je peux partir en vacances ou en voyage l&amp;rsquo;esprit tranquille, je pourrais toujours récupérer des livres à distance et les ajouter à ma liseuse ! :cool:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Nouveau NAS : installation des containers</title>
            <link>https://pled.fr/nouveau-nas-installation-des-containers/</link>
            <pubDate>Wed, 02 Jul 2025 09:45:59 +0000</pubDate>
            <guid>https://pled.fr/nouveau-nas-installation-des-containers/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;omv-docker.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Suite de l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/&#34; &gt;installation d&amp;rsquo;OMV sur le nouveau NAS&lt;/a&gt;, avec cette fois l&amp;rsquo;installation des containers Docker qui tournaient sur l&amp;rsquo;ancienne machine, à savoir Dockge, Plex, Homepage, Qbittorrent et Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;Je ne vais pas reprendre ici chaque installation en détail, des articles existent déjà à ce sujet. D&amp;rsquo;autant que je vais tout simplement reprendre les fichiers &lt;code&gt;compose.yaml&lt;/code&gt; que j&amp;rsquo;utilisais sur l&amp;rsquo;ancienne machine pour recréer les containers avec l&amp;rsquo;aide de Dockge. J&amp;rsquo;aurai juste quelques paramètres à adapter à chaque fois pour le nouveau NAS (chemin fichiers typiquement), ça devrait donc être assez facile.&lt;/p&gt;&#xA;&lt;p&gt;Je me contenterai donc dans cet article des quelques problèmes rencontrés (ou changements effectués) sachant que dans l&amp;rsquo;ensemble tout s&amp;rsquo;est bien passé. Mais forcément, il arrive de tomber sur un problème jamais rencontré auparavant, on peut appeler cela les joies de l&amp;rsquo;informatique.&lt;/p&gt;&#xA;&lt;p&gt;Au menu donc : un souci de token avec Plex pour Homepage, un problème réseau avec la WebUI de Qbittorrent, et même un changement de container pour d&amp;rsquo;autres raisons. Enfin, Nextcloud, le container que j&amp;rsquo;appréhendais le plus à réinstaller, n&amp;rsquo;a lui posé aucun problème : une autre joie de l&amp;rsquo;informatique sans doute ! :wink:&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est parti !&lt;/p&gt;&#xA;&lt;h3 id=&#34;omv&#34;&gt;OMV&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;en étais resté dans &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/&#34; &gt;l&amp;rsquo;article précédent&lt;/a&gt; à l&amp;rsquo;installation des OMV-Extras et de &amp;ldquo;openmediavault-compose&amp;rdquo; depuis Système-Extensions. Il me restait à configurer les dossiers partagés dans le menu Stockage, puis à aller dans le menu Service-Compose-Paramètres, et y définir l&amp;rsquo;emplacement des &amp;ldquo;Compose Files&amp;rdquo; et &amp;ldquo;Data&amp;rdquo;, soit respectivement AppData et OMV-DATA dans mon cas (je reproduis ce que j&amp;rsquo;avais sur l&amp;rsquo;autre machine).&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;830px&#34; data-flex-grow=&#34;346&#34; height=&#34;260&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/compose.png&#34; srcset=&#34;https://pled.fr/nouveau-nas-installation-des-containers/compose_hu_36066139bb90e85b.png 800w, https://pled.fr/nouveau-nas-installation-des-containers/compose.png 900w&#34; width=&#34;900&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;en profite aussi pour déplacer Docker vers le disque NVMe plutôt que de laisser sur le disque système :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;995px&#34; data-flex-grow=&#34;414&#34; height=&#34;137&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-07-01-16-33-31.png&#34; width=&#34;568&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis en bas de la page, je choisis &amp;ldquo;Reinstall Docker&amp;rdquo; et &amp;ldquo;Restart Docker&amp;rdquo;. Voilà, tout est prêt côté OMV.&lt;/p&gt;&#xA;&lt;h3 id=&#34;dockge&#34;&gt;Dockge&#xA;&lt;/h3&gt;&lt;p&gt;Je commence donc par &lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Dockge&lt;/a&gt;, qui va permettre de créer tous les autres containers, cet outil est vraiment génial, et je me passe complètement de Portainer (proposé par OMV), que je n&amp;rsquo;ai d&amp;rsquo;ailleurs pas installé. Je suis la procédure d&amp;rsquo;installation de la page sur GiHub, et démarre le container. R.A.S.&lt;/p&gt;&#xA;&lt;h3 id=&#34;homepage&#34;&gt;Homepage&#xA;&lt;/h3&gt;&lt;p&gt;Puis j&amp;rsquo;installe mon premier container via Dockge, à savoir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/&#34; &gt;Homepage&lt;/a&gt;, très pratique pour se créer un &amp;ldquo;Dashboard&amp;rdquo;, ou un tableau de bord bien pratique pour gérer l&amp;rsquo;ensemble de mes services, qu&amp;rsquo;ils soient auto-hébergés ou chez mon fournisseur. Voilà ce que cela donnera à la fin :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;404px&#34; data-flex-grow=&#34;168&#34; height=&#34;942&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-07-01-16-49-03.png&#34; srcset=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-07-01-16-49-03_hu_e31fa3e35e509b22.png 800w, https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-07-01-16-49-03.png 1588w&#34; width=&#34;1588&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;problème-avec-plex-et-homepage&#34;&gt;Problème avec Plex et Homepage&#xA;&lt;/h3&gt;&lt;p&gt;Je commence ensuite par Plex. Le container s&amp;rsquo;installe sans souci particulier, et je copie les fichiers de ma bibliothèque média via une connexion NFS fait entre les deux machines. Tout se déroule sans encombre, et côté TV, je vois deux instances apparaître au lancement de la smart application, et je choisis la nouvelle instance. R.A.S.&lt;/p&gt;&#xA;&lt;p&gt;Je vais en fait passer plus de temps à l&amp;rsquo;intégrer dans le dashboard Homepage, car il me faut trouver le &amp;ldquo;token&amp;rdquo; et je ne savais plus comment j&amp;rsquo;avais fait : sur &lt;a class=&#34;link&#34; href=&#34;https://www.plexopedia.com/plex-media-server/general/plex-token/#plexservertoken&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt; , il faut suivre la procédure pour &amp;quot; &lt;strong&gt;The device token&lt;/strong&gt;&amp;quot;. Ensuite, copier le token pour la valeur de &lt;code&gt;key&lt;/code&gt; dans le fichier &lt;code&gt;services.yaml&lt;/code&gt; que l&amp;rsquo;on vient de créer pour définir le serveur Plex :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &lt;span style=&#34;color:#f92672&#34;&gt;NAS-N150&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;Docker&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;Plex&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;icon&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;plex.png&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;href&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://192.168.1.32:32400/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;description&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Media Server - Séries, films, documentaires...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;server&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;my-docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;container&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;plex_n150&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;widget&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;plex&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;url&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://192.168.1.32:32400&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;key&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;92xxxxxxxxxxxxxxxXj&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mais cela ne fonctionnait toujours pas, j&amp;rsquo;avais une API Error sur le dashboard d&amp;rsquo;Homepage :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;317px&#34; data-flex-grow=&#34;132&#34; height=&#34;332&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-06-24-16-55-04.png&#34; width=&#34;439&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Le problème venait de la ligne &lt;code&gt;server&lt;/code&gt;: &lt;code&gt;my-docker&lt;/code&gt; (que j&amp;rsquo;avais copier/coller du précédent serveur) : c&amp;rsquo;est bien la valeur par défaut, mais il faut toutefois aller dans le fichier &lt;code&gt;docker.yaml &lt;/code&gt; et dé-commenter les lignes correspondantes, ce qui n&amp;rsquo;est pas fait par défaut lors de l&amp;rsquo;installation de Homepage :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# For configuration options and examples, please see:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# https://gethomepage.dev/configs/docker/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# my-docker:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#   host: 127.0.0.1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#   port: 2375&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;my-docker&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;socket&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/var/run/docker.sock&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et l&amp;rsquo;accès via l&amp;rsquo;API au container Plex fonctionne enfin :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;370px&#34; data-flex-grow=&#34;154&#34; height=&#34;284&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-06-24-17-15-00.png&#34; width=&#34;439&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;problème-avec-qbittorrent&#34;&gt;Problème avec Qbittorrent&#xA;&lt;/h3&gt;&lt;p&gt;Je reprends donc la même stack que j&amp;rsquo;utilisais (il s&amp;rsquo;agit d&amp;rsquo;une version de Qbittorrent avec OpenVPN d&amp;rsquo;intégré et compatible armv7l soit une architecture x32), et lance le container. Au premier démarrage, il me demande un fichier &lt;code&gt;.ovpn&lt;/code&gt; comme je l&amp;rsquo;avais noté lors de ma première installation, pas de surprise. Je copie donc le fichier dans le dossier créé lors du premier démarrage ( &lt;code&gt;AppData/Qbittorrent/openvpn&lt;/code&gt;), et je relance. Tout semble aller pour le mieux, et j&amp;rsquo;ai bien le message &lt;code&gt;[info] Started qBittorrent daemon successfully...&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mais par contre impossible d&amp;rsquo;accéder à l&amp;rsquo;interface WebUI, pas de réponse&amp;hellip; Et quand je regarde l&amp;rsquo;état des ports de mon NAS depuis le PC, je vois ceci :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ nmap -sT 192.168.1.32&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Starting Nmap 7.95 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; https://nmap.org &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; at 2025-06-25 10:00 CEST&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nmap scan report &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; NAS-N150.lan &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;192.168.1.32&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host is up &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;0.00021s latency&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Not shown: &lt;span style=&#34;color:#ae81ff&#34;&gt;991&lt;/span&gt; closed tcp ports &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;conn-refused&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PORT     STATE    SERVICE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;..&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8080/tcp filtered http-proxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8090/tcp open  opsmessaging&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;..&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Le port 8090 est celui que j&amp;rsquo;utilise pour l&amp;rsquo;interface d&amp;rsquo;OMV, il apparaît bien &amp;ldquo;open&amp;rdquo; et est parfaitement fonctionnel.&lt;/li&gt;&#xA;&lt;li&gt;Le port 8080 est celui que j&amp;rsquo;ai défini pour la WebUI de Qbittorrent, et il apparaît &amp;quot; &lt;strong&gt;filtered&lt;/strong&gt;&amp;quot;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;J&amp;rsquo;essaie un autre port, avec le même résultat. Peut-être problème de pare-feu alors ? mais je vois dans les logs du container que les règles sont créées (sans trop creuser), et je me dis que ce problème va être compliqué à résoudre, je sèche un peu. Je pose alors &lt;a class=&#34;link&#34; href=&#34;https://forum.openmediavault.org/index.php?thread/56827-resolved-docker-qbittorrent-webui-port-appears-filtered-and-is-not-accessible/&amp;amp;postID=421636&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;une question&lt;/a&gt; sur le forum d&amp;rsquo;OMV à tout hasard. Mais je continue de chercher une solution, et :idea: je me rends compte que la route définie dans le container est incomplète (heureusement que je peux la comparer avec celle du container tournant encore sur l&amp;rsquo;autre machine !). Voilà la route que je vois sur l&amp;rsquo;ancien NAS dont l&amp;rsquo;accès à la WebUI fonctionne :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# route -n&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Kernel IP routing table&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Destination     Gateway         Genmask         Flags Metric Ref    Use Iface&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.0     172.27.0.1      255.255.255.0   UG    &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;      &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;        &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; eth0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alors que sur le nouveau NAS je n&amp;rsquo;ai aucune route concernant mon LAN (192.168.1.x), ce qui explique pourquoi mon interface est injoignable. Elle est pourtant bien définie dans le fichier &lt;code&gt;compose.yaml&lt;/code&gt; sur les deux machines de manière identique ( &lt;code&gt;LAN_NETWORK=192.168.1.0/24&lt;/code&gt;) mais pour une raison inconnue elle n&amp;rsquo;a pas été créée. Je l&amp;rsquo;ajoute donc à la main :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# ip route add 192.168.1.0/24 via 172.27.0.1 dev eth0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bingo ! je peux enfin accéder à mon interface WebUI de QBittorrent ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai tout de même un dernier souci, impossible de m&amp;rsquo;identifier avec le mot de passe par défaut ! En fait, le mot de passe est regénéré à chaque démarrage tant que l&amp;rsquo;on ne s&amp;rsquo;est pas loggué une première fois pour le modifier via l&amp;rsquo;interface : avec tous mes essais de démarrage, ce n&amp;rsquo;est donc plus le même ! :sad: Il faut alors aller dans &lt;code&gt;AppData/Qbittorrent/qBittorrent/data/logs&lt;/code&gt; et lire le fichier &lt;code&gt;qbittorrent-daemon.log&lt;/code&gt; pour trouver sa dernière valeur :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@NAS-N150:/srv/dev-disk-by-uuid-f39c071a-91e2-4184-971f-a722a7697ca5/AppData/Qbittorrent/qBittorrent/data/logs# cat qbittorrent-daemon.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;******** Information ********&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To control qBittorrent, access the WebUI at: http://localhost:8080&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The WebUI administrator username is: admin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The WebUI administrator password was not set. A temporary password is provided &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; this session: uw6bJP8kR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;You should set your own password in program preferences.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà, mon interface WebUI de Qbittorrent fonctionne enfin ! Tout content, je renseigne la question posée sur le forum OMV avec la solution à mon problème. Quelqu&amp;rsquo;un avait d&amp;rsquo;ailleurs répondu à ma question initiale en me demandant ma config.&lt;/p&gt;&#xA;&lt;p&gt;Après avoir vu ma solution, cette même personne me conseille quand même de vérifier le réseau utilisé par QB, et que ce soit bien celui de mon VPN. Je lui répond que vu les logs, et le fait que j&amp;rsquo;ai sélectionné l&amp;rsquo;interface tun0 dans la WebUI de QB, ça doit être bon. Il me donne alors une autre méthode de vérification très pratique.&lt;/p&gt;&#xA;&lt;h3 id=&#34;tester-ladresse-réseau-utilisée-par-qbittorrent&#34;&gt;Tester l&amp;rsquo;adresse réseau utilisée par qBittorrent&#xA;&lt;/h3&gt;&lt;p&gt;Il suffit d&amp;rsquo;aller sur &lt;a class=&#34;link&#34; href=&#34;https://torguard.net/checkmytorrentipaddress.php&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ce site de TorGuard&lt;/a&gt; : le test est assez malin, puisqu&amp;rsquo;il s&amp;rsquo;agit de charger un fichier torrent sur lequel ils sont également connectés, et vont alors pouvoir vérifier l&amp;rsquo;adresse IP utilisée par mon client.&lt;/p&gt;&#xA;&lt;p&gt;Je fais donc un click droit sur le bouton &amp;ldquo;Download Now&amp;rdquo; et je copie le lien. Puis je passe sur la WebUI de QB et je fais &amp;ldquo;Fichier-Ajouter un lien torrent&amp;rdquo;, et je colle le lien précédemment copié. Je vois alors le torrent apparaître :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1836px&#34; data-flex-grow=&#34;765&#34; height=&#34;104&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-06-26-18-46-15.png&#34; width=&#34;796&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après quelques secondes, il suffit de revenir sur la page d&amp;rsquo;origine de TorGuard, et l&amp;rsquo;on voit l&amp;rsquo;adresse IP utilisée par notre client Qbittorrent :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;710px&#34; data-flex-grow=&#34;295&#34; height=&#34;265&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-07-01-17-35-27-1.png&#34; width=&#34;784&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Un simple &lt;code&gt;whois&lt;/code&gt; dans un terminal de cette adresse me confirmera que c&amp;rsquo;est une adresse de mon fournisseur de VPN.&lt;/p&gt;&#xA;&lt;h4 id=&#34;nouveau-container-qbittorrent&#34;&gt;Nouveau container qBittorrent&#xA;&lt;/h4&gt;&lt;p&gt;Mais la personne du forum OMV me conseille également d&amp;rsquo;utiliser un autre container Qbittorrent-OpenVPN, car le mien date un peu : je vois dans les logs que je suis en v4.6.7. Le container qu&amp;rsquo;il me conseille utilise la v5.1.1 (comme on peut le voir sur le screenshot ci-dessus, pris avec ce nouveau container).&lt;/p&gt;&#xA;&lt;p&gt;En fait, j&amp;rsquo;étais resté avec ce container car c&amp;rsquo;était l&amp;rsquo;un des seuls incluant OpenVPN &lt;strong&gt;ET&lt;/strong&gt; supportant l&amp;rsquo;architecture armlv7 x32, ce qui n&amp;rsquo;était pas évident à trouver. C&amp;rsquo;est d&amp;rsquo;ailleurs la raison pour laquelle j&amp;rsquo;installe ce nouveau NAS.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;arrête donc mon container QB, adapte les paramètres du nouveau &lt;code&gt;compose.yaml&lt;/code&gt; avec mes valeurs, et le lance : même chose qu&amp;rsquo;avec l&amp;rsquo;autre container, il faut copier le fichier du fournisseur de VPN dans le répertoire créé après le premier démarrage. Pour le reste, tout fonctionne immédiatement et je peux me logguer via la WebUI sans problème.&lt;/p&gt;&#xA;&lt;p&gt;Finalement ce problème d&amp;rsquo;accès à la WebUI a été positif, puisque j&amp;rsquo;ai maintenant un container plus à jour, et appris une méthode intéressante pour tester l&amp;rsquo;IP utilisée par le client Qbittorrent.&lt;/p&gt;&#xA;&lt;p&gt;La WebUI est plus récente : elle affiche dans le bas de la fenêtre l&amp;rsquo;adresse IP externe utilisée. J&amp;rsquo;en profite aussi pour activer une option évitant d&amp;rsquo;avoir saisir le mot de passe à partir de mon PC :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;309px&#34; data-flex-grow=&#34;128&#34; height=&#34;448&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-07-25-18-16-55.png&#34; width=&#34;577&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;installation-nextcloud&#34;&gt;Installation Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;Ce que j&amp;rsquo;imaginais le plus difficile s&amp;rsquo;est finalement plutôt très bien passé. Il faut par contre tout définir correctement au niveau réseau avant de lancer le container :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;au niveau d&amp;rsquo;internet, via mon fournisseur d&amp;rsquo;accès, pour définir le sous-domaine DNS que j&amp;rsquo;ai défini.&lt;/li&gt;&#xA;&lt;li&gt;au niveau de la box internet, pour bien rediriger les port 80 et 443 sur la bonne machine.&lt;/li&gt;&#xA;&lt;li&gt;Dans les fichiers de configuration Nextcloud et Swag, pour bien obtenir les certificats LetsEncrypt.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Sinon, je précise tout de même que l&amp;rsquo;on ne peut accéder à l&amp;rsquo;interface Web de Nextcloud (pour la phase &amp;ldquo;web-based&amp;rdquo; installation de Nextcloud) via l&amp;rsquo;adresse IP locale (sinon on arrive sur la page de swag) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;620px&#34; data-flex-grow=&#34;258&#34; height=&#34;206&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/Capture-decran-du-2025-06-28-15-15-04.png&#34; width=&#34;533&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut absolument utiliser le nom de domaine que l&amp;rsquo;on a défini dans le fichier &lt;code&gt;compose.yaml&lt;/code&gt;. En même temps, c&amp;rsquo;est le rôle de Swag de protéger l&amp;rsquo;accès du serveur, donc rien de vraiment surprenant en y réfléchissant !&lt;/p&gt;&#xA;&lt;p&gt;Après la web-install de Nextcloud (on ne peut le faire avant), je modifie le fichier &lt;code&gt;/srv/dev-disk-by-uuid-f39c071a-91e2-4184-971f-a722a7697ca5/AppData/Nextcloud/config/www/nextcloud/config/config.php&lt;/code&gt; de Nextcloud comme je l&amp;rsquo;avais fait sur l&amp;rsquo;ancienne machine :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trusted_proxies&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;127.21.0.0/16&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trusted_domains&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;192.168.1.32:443&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nextcloud.xxxx.yyy.fr&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;J&amp;rsquo;ajoute la ligne avec l&amp;rsquo;adresse IP dans la section &amp;ldquo;trusted-domains&amp;rdquo; mais cela ne résout pas le pb swag rencontré plus haut comme je le pensais : cette ligne ne sert donc peut-être à rien.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Et j&amp;rsquo;ajoute la partie &amp;ldquo;trusted_proxies&amp;rdquo; qui n&amp;rsquo;existe pas par défaut, après avoir vérifié l&amp;rsquo;adresse utilisée par le container (accès au terminal via Dockge) :&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;361px&#34; data-flex-grow=&#34;150&#34; height=&#34;351&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-nas-installation-des-containers/lan.png&#34; width=&#34;529&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce n&amp;rsquo;est pas obligatoire, mais cela génère un avertissement dans Nextcloud-Paramètres d&amp;rsquo;administration, dans les Avertissements de sécurité &amp;amp; configuration (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/&#34; &gt;cet article&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Finalement, tout a été assez facile. C&amp;rsquo;est évidemment très pratique d&amp;rsquo;avoir encore la machine précédente qui fonctionne si l&amp;rsquo;on a besoin de comparer des choses. Grâce à ma question sur le forum d&amp;rsquo;OMV, j&amp;rsquo;ai même un container QB incluant OpenVPN plus récent et activement mis à jour.&lt;/p&gt;&#xA;&lt;p&gt;Mes containers sont désormais tous à jour avec des versions x64 supportées, ce qui n&amp;rsquo;était plus le cas depuis un bout de temps avec l&amp;rsquo;architecture x32.&lt;/p&gt;&#xA;&lt;p&gt;Ce nouveau NAS est beaucoup plus puissant et rapide, je suis curieux de voir si j&amp;rsquo;aurai encore des problèmes à visionner certaines vidéos comme je l&amp;rsquo;avais sur l&amp;rsquo;ancien : notamment le &amp;ldquo;bit rate&amp;rdquo; qui semblait poser problème à partir d&amp;rsquo;un certain seuil. Ce ne devrait plus être le cas désormais&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, il ne me reste qu&amp;rsquo;à voir quels nouveaux containers je vais pouvoir installer maintenant que mon serveur est en x64 : sans doute &lt;strong&gt;pi-hole&lt;/strong&gt; qui me permettra de dédier mon raspberry à Volumio et m&amp;rsquo;évitera d&amp;rsquo;avoir à &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/installation-pi-hole-sur-mon-raspberry-volumio/&#34; &gt;bidouiller l&amp;rsquo;image système&lt;/a&gt; pour faire cohabiter les deux&amp;hellip; et peut-être Calibre, l&amp;rsquo;idée de disposer de ses e-books à distance me plaît pas mal&amp;hellip; et peut-être d&amp;rsquo;autres puisque je ne suis limité par un hardware dépassé !&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Beelink Me mini, mon nouveau NAS</title>
            <link>https://pled.fr/beelink-me-mini-mon-nouveau-nas/</link>
            <pubDate>Mon, 23 Jun 2025 09:56:14 +0000</pubDate>
            <guid>https://pled.fr/beelink-me-mini-mon-nouveau-nas/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;mini-nas-1.jpg#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ça y est, j&amp;rsquo;ai craqué pour un nouveau NAS avec ce &lt;a class=&#34;link&#34; href=&#34;https://www.bee-link.com/products/beelink-me-mini-n150&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Beelink Me mini&lt;/a&gt; qui me semble bien prometteur, et qui coche toutes les cases demandées, et même plus.&lt;/p&gt;&#xA;&lt;p&gt;Mon NAS actuel, un Odroid-HC2, avec son architecture x32 (plus de containers docker disponibles), devenait problématique à maintenir à jour, il était temps de le remplacer.&lt;/p&gt;&#xA;&lt;p&gt;En premier lieu, je souhaitais donc un processeur de la génération N100 d&amp;rsquo;Intel pour sa faible consommation (TDP 6W) alliée à de bonnes performances (architecture Alder Lake) ainsi que la capacité à décoder les formats vidéos (techno &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;QuickSync&lt;/a&gt; pour le décodage hardware).&lt;/p&gt;&#xA;&lt;p&gt;Et la deuxième chose que je souhaitais, c&amp;rsquo;était du stockage sous forme de NVMe SSD pour le gain de place. Quelque chose de pas vraiment nécessaire pour mon usage, un stockage en SSD SATA aurait été largement suffisant, mais le côté mini-machine me plaisait pas mal.&lt;/p&gt;&#xA;&lt;p&gt;Avec ce Beelink Me mini, j&amp;rsquo;ai donc :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;un processeur N150 (arch. Twin Lake), soit la toute dernière génération.&lt;/li&gt;&#xA;&lt;li&gt;12 Go de RAM (soudé, impossible d&amp;rsquo;avoir plus).&lt;/li&gt;&#xA;&lt;li&gt;64 Go de stockage de base en eMMC, typiquement pour l&amp;rsquo;OS.&lt;/li&gt;&#xA;&lt;li&gt;6 ports M.2 compatibles du 2230 au 2280 NVMe représentant 24 To de stockage potentiel !&lt;/li&gt;&#xA;&lt;li&gt;2 ports Ethernet de 2.5 Gbps.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Belle petite machine tout de même ! :cool: Ce modèle est actuellement vendu sur AMZ au prix de 409 €, incluant 1 NVMe de 2 To Micron Crucial. (On dirait que le prix a déjà augmenté : je le vois désormais 489 € ?). Il reste semble-t-il la possibilité de le commander directement sur le site constructeur, voir &lt;a class=&#34;link&#34; href=&#34;https://www.minimachines.net/actu/le-nas-pc-beelink-me-mini-sous-intel-n150-est-enfin-officiel-133937&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article sur le site minimachines&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Voyons la bête d&amp;rsquo;un peu plus près, ainsi que l&amp;rsquo;installation d&amp;rsquo;OpenMediaVault pour commencer à exploiter cette belle machine.&lt;/p&gt;&#xA;&lt;h3 id=&#34;recherche-du-nas&#34;&gt;Recherche du NAS&#xA;&lt;/h3&gt;&lt;p&gt;Avec les pré-requis que j&amp;rsquo;avais défini, j&amp;rsquo;ai commencé à faire des recherches, et j&amp;rsquo;avais bien repéré ce modèle Beelink, mais il n&amp;rsquo;était pas encore disponible. Je m&amp;rsquo;étais alors rabattu vers un mini PC de marque CWWK, qui offre 4 slots NVMe, et qui me revenait à 374 € avec 16 Go de RAM, 1 SSD de 128 Go pour l&amp;rsquo;OS, et un autre de 2 To pour les data.&lt;/p&gt;&#xA;&lt;p&gt;À noter qu&amp;rsquo;avec ce type de matériel, on est obligé de sacrifier un NVMe pour le système&amp;hellip; Hélas (ou plutôt tant mieux), au moment de commander sur AMZ, un beau message d&amp;rsquo;erreur s&amp;rsquo;affichait :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;634px&#34; data-flex-grow=&#34;264&#34; height=&#34;286&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/cwwk.jpg&#34; width=&#34;756&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je les ai contacté sans vraiment obtenir de réponse satisfaisante (une vague vérification serait en cours par Amazon auprès de ses revendeurs chinois), mais c&amp;rsquo;est peut-être bien lié aux taxes que Trump veut imposer&amp;hellip; Il restait la solution AliExpress, mais j&amp;rsquo;ai un peu de mal à leur faire confiance en cas de problème : j&amp;rsquo;ai vu des prix pour des NVMe SSD de 2 To irréalistes, peu crédibles et cela ne donne pas confiance en la plateforme. Amazon, on peut critiquer, mais le service client est au top.&lt;/p&gt;&#xA;&lt;p&gt;Bref, j&amp;rsquo;ai du me remettre à chercher un autre modèle, et le temps passant (il faut toujours prendre son temps), j&amp;rsquo;ai soudain vu que le Beelink Me mini était enfin disponible ! J&amp;rsquo;ai vite passé la commande.&lt;/p&gt;&#xA;&lt;h3 id=&#34;beelink-me-mini&#34;&gt;Beelink Me mini&#xA;&lt;/h3&gt;&lt;p&gt;Le premier avantage de cette machine, c&amp;rsquo;est ce stockage eMMC de 64 Go qui permet d&amp;rsquo;y installer le système de son choix (même si la machine est vendue avec Windows 11 est préinstallé sur la barette NVMe de 2 To). Cela permet de dédier les 6 emplacements NVMe au stockage, de monter des configs RAID, etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Ensuite, la conception a l&amp;rsquo;air sérieuse, avec une structure en aluminium pour la dissipation calorifique (les NVMe chauffent pas mal). Lors de mes recherches, j&amp;rsquo;ai vu pas mal de modèles tout en plastique, qui posent question sur ce sujet. La conception avec le positionnement en vertical des disques NVMe est aussi très bien pensée je trouve.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;267px&#34; data-flex-grow=&#34;111&#34; height=&#34;464&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/mini-nas-2.png&#34; width=&#34;517&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bref, on a là une belle machine, totalement silencieuse, qui pourrait d&amp;rsquo;ailleurs très bien fonctionner comme un mini PC pour un usage de bureautique : en plus, le design est soigné et le coffret très esthétique.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sauvegarde-image-windows-11&#34;&gt;Sauvegarde image Windows 11&#xA;&lt;/h3&gt;&lt;p&gt;La machine est livrée avec Windows 11 préinstallé sur le disque NVMe de 2 To. J&amp;rsquo;ai donc démarré sur une clef USB Clonezilla (enfin sur ma clef &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/ventoy-la-clef-usb-universelle/&#34; &gt;Ventoy&lt;/a&gt;), et fait une image de ce disque (4 partitions), au cas où je voudrais l&amp;rsquo;utiliser (il y a une licence MS). L&amp;rsquo;ensemble de l&amp;rsquo;image fait 11,1 Go, il faut donc prévoir où la sauvegarder avec Clonezilla. Heureusement que j&amp;rsquo;ai mis Ventoy sur ma nouvelle clef SSD de 1 To :cool:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;332px&#34; data-flex-grow=&#34;138&#34; height=&#34;514&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/beelink-me-mini-mon-nouveau-nas/Capture-decran-du-2025-06-19-18-29-57.png&#34; width=&#34;713&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je branche un écran, un clavier USB et ma clef Ventoy, rentre donc dans le BIOS, modifie l&amp;rsquo;ordre de boot, et voilà c&amp;rsquo;est parti ! Et je sauvegarde l&amp;rsquo;image du disque que me génère Clonezilla.&lt;/p&gt;&#xA;&lt;h3 id=&#34;truenas-ou-omv-&#34;&gt;TrueNAS ou OMV ?&#xA;&lt;/h3&gt;&lt;p&gt;Après, je me suis posé la question d&amp;rsquo;installer soit TrueNAS (dont on entend beaucoup parler) ou bien de continuer avec OpenMediaVault que je connais déjà. Après quelques lectures, j&amp;rsquo;ai choisi de rester avec OMV car il reste moins gourmand en ressource mémoire.&lt;/p&gt;&#xA;&lt;p&gt;Car s&amp;rsquo;il y a bien un TrueNAS &amp;ldquo;Scale&amp;rdquo; basé sur Debian, le pré-requis mémoire est de 8 Go minimum, et même 16 Go de recommandé. C&amp;rsquo;est semble-t-il lié au système de fichier ZFS, adapté aux NAS pour sa performance, ses capacités de configurations RAID, les snapshots de disques, etc&amp;hellip; Or mon utilisation n&amp;rsquo;est pas celle d&amp;rsquo;un NAS très sollicité sur son système de fichiers. Je n&amp;rsquo;ai pas encore prévu de faire du RAID d&amp;rsquo;ailleurs, on verra ça plus tard, pour l&amp;rsquo;instant, de simples sauvegardes de ce qu&amp;rsquo;il serait gênant de perdre me suffit.&lt;/p&gt;&#xA;&lt;p&gt;Sur ce NAS, il y a 12 Go de RAM soudée, et donc sans possibilité de changement. Donc TrueNAS aurait fonctionné, mais quand je compare avec OMV qui demande 1 Go mini et 8 Go recommandé, vu mes besoins, il n&amp;rsquo;y a pas photo.&lt;/p&gt;&#xA;&lt;h3 id=&#34;installation-omv&#34;&gt;Installation OMV&#xA;&lt;/h3&gt;&lt;p&gt;Je redémarre donc sur une clef OMV 7.4 et procède à l&amp;rsquo;installation sur l&amp;rsquo;eMMC de 64 GB. L&amp;rsquo;installation d&amp;rsquo;OMV se fait sans problème, je fais une mise à jour et je redémarre. Pour cela, j&amp;rsquo;ai suivi &lt;a class=&#34;link&#34; href=&#34;https://wiki.omv-extras.org/doku.php?id=omv7:new_user_guide#amd64_openmediavault_installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la doc officielle&lt;/a&gt;, c&amp;rsquo;est très simple.&lt;/p&gt;&#xA;&lt;p&gt;Après la phase installation proprement dite, je peux dès lors débrancher l&amp;rsquo;écran et y accéder via l&amp;rsquo;interface Web (ou par SSH quand nécessaire). J&amp;rsquo;utilise d&amp;rsquo;ailleurs cette dernière en root pour la création d&amp;rsquo;un user &amp;ldquo;pascal&amp;rdquo; avec ajout groupe sudo + _ssh. Ceci afin d&amp;rsquo;éviter le login en root, toujours déconseillé&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# adduser pascal&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# usermod -aG sudo pascal&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# usermod -aG _ssh pascal&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis côté PC, je copie la clef SSH avec &lt;code&gt;ssh-copy-id&lt;/code&gt; pour le user pascal pour pouvoir me logguer sur le NAS sans avoir à taper le mot de passe à chaque fois.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ssh-keygen &lt;span style=&#34;color:#75715e&#34;&gt;# pour identifier mon fichier de clefs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ssh-copy-id -i /home/pascal/.ssh/id_ed25519 pascal@192.168.1.XX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà, enfin je crée un alias &lt;code&gt;sshn150&lt;/code&gt; et voilà l&amp;rsquo;accès ssh du PC vers le NAS prêt à l&amp;rsquo;emploi.&lt;/p&gt;&#xA;&lt;p&gt;Pour la partie &amp;ldquo;Basic OMV configuration&amp;rdquo;, j&amp;rsquo;installe bien sûr les &lt;strong&gt;OMV-Extras&lt;/strong&gt; comme indiqué via SSH :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis j&amp;rsquo;active &amp;ldquo;Docker repo&amp;rdquo; dans menu Système - OMV-Extras. J&amp;rsquo;installe aussi &amp;ldquo;openmediavault-compose&amp;rdquo; depuis Système-Extensions.&lt;/p&gt;&#xA;&lt;p&gt;Côté disque, j&amp;rsquo;utilise bien sûr le disque NVMe de 2 To : j&amp;rsquo;efface le contenu, puis je le formatte en NTFS puis configure le Mount.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, cette première étape est achevée, le système est prêt à être utilisé. Ce sera l&amp;rsquo;objet de futurs articles, je devrais commencer par installer un container Plex, et pouvoir tester si certaines vidéos que je ne pouvais décoder avec mon odroid-hc2 passent désormais sans problème ni lag&amp;hellip;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Réinstallation d&#39;OMV7 et Docker après perte du serveur</title>
            <link>https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/</link>
            <pubDate>Tue, 18 Feb 2025 17:05:42 +0000</pubDate>
            <guid>https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;omvdocker.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mauvaise surprise la semaine dernière : mon serveur OMV ne démarre plus. Impossible d&amp;rsquo;y accéder donc, même après un arrêt électrique. Le boot du système apparemment ne va pas très loin, je n&amp;rsquo;entends même pas le HD se mettre en route. Pas de réseau donc, et aucun moyen d&amp;rsquo;intervenir pour investiguer le problème. :sad:&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai vérifié l&amp;rsquo;intégrité (scandisk) de la sdcard sur le PC : aucune erreur de détectée, réessayé un démarrage, rien à faire. À ce stade, j&amp;rsquo;étais un peu en panne d&amp;rsquo;inspiration pour dépanner le système&amp;hellip; Je ne sais pas ce qui s&amp;rsquo;est passé, j&amp;rsquo;avais reçu un mail me demandant de redémarrer après une mise à jour : manifestement celle-ci s&amp;rsquo;est mal passée&amp;hellip; sans doute aurais-je du regarder les logs avant de lancer ce redémarrage, mais bon, c&amp;rsquo;est plutôt courant comme opération, alors&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Ma dernière sauvegarde datait d&amp;rsquo;environ un an, j&amp;rsquo;étais encore en OMV5 à l&amp;rsquo;époque ! j&amp;rsquo;ai pu démarre dessus, et pensé à refaire la mise à jour vers OMV6 puis OMV7, mais j&amp;rsquo;ai eu de beaux messages d&amp;rsquo;erreur que je n&amp;rsquo;ai pas cherché à comprendre (OMV5 c&amp;rsquo;est vieux maintenant), et je suis vite parti sur l&amp;rsquo;idée de refaire une installation tout fraîche d&amp;rsquo;OMV7.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;Odroid-HC2 est plutôt bien conçu : une sdcard pour le système (soit Armbian+OMV) et un bon vieux HD 3,5&amp;quot; que l&amp;rsquo;on vient connecter directement sur la carte. Toutes mes données, y compris Docker, sont installées sur le HD, je n&amp;rsquo;ai donc qu&amp;rsquo;à installer OMV7 et recréer les liens vers le HD.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;400px&#34; data-flex-grow=&#34;166&#34; height=&#34;360&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/odroid-hc2.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tout s&amp;rsquo;est passé assez facilement, revenir à un système opérationnel a finalement été assez rapide et sans aucune perte de données. :cool:&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir tout ça : je ne reprends pas une installation d&amp;rsquo;OMV en détail (déjà fait), mais les seulement étapes importantes de cette réinstallation.&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-système&#34;&gt;Le système&#xA;&lt;/h3&gt;&lt;p&gt;Malgré que mon Odroid-HC2 se fasse un peu vieux maintenant, et surtout soit une machine x32, j&amp;rsquo;ai pu retrouver une image armbian disponible sur &lt;a class=&#34;link&#34; href=&#34;https://www.armbian.com/odroid-xu4/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt; : c&amp;rsquo;est la même image que pour le modèle XU4.&lt;/p&gt;&#xA;&lt;p&gt;Il faut télécharger l&amp;rsquo;image, la dézipper, puis copier l&amp;rsquo;image sur la sd-card, puis on démarre dessus. Ensuite, on se connecte en SSH avec le compte root(mdp : 1234), rien de très compliqué. On peut ensuite aller optimiser un peu la configuration pour les modèles HC (1 ou 2) en lançant l&amp;rsquo;outil &lt;code&gt;armbian-config&lt;/code&gt;, choisir Système puis Kernel, et enfin &amp;ldquo;Select Odroid board configuration&amp;rdquo; où l&amp;rsquo;on pourra sélectionne la série &amp;ldquo;HC&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;305px&#34; data-flex-grow=&#34;127&#34; height=&#34;656&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/armbian-config.png&#34; srcset=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/armbian-config_hu_ccef142bd10847ec.png 800w, https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/armbian-config.png 835w&#34; width=&#34;835&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;omv-7&#34;&gt;OMV 7&#xA;&lt;/h3&gt;&lt;p&gt;Ensuite on installe OMV7 en suivant &lt;a class=&#34;link&#34; href=&#34;https://wiki.omv-extras.org/doku.php?id=omv7:raspberry_pi_install#install_omv&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la doc&lt;/a&gt; , ce qui se résume aux commandes suivantes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# apt update&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# apt upgrade&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | bash&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cela prend un peu de temps (30 min), puis le système redémarre. Voilà, OMV est installé, on peut se logguer via l&amp;rsquo;interface web.&lt;/p&gt;&#xA;&lt;p&gt;Quand on a déjà installé OMV une fois, le reste est assez simple, sinon on suit la doc. En gros, on change, le port 80 de l&amp;rsquo;interface, puis on va dans &lt;strong&gt;Stockage&lt;/strong&gt; créer les dossiers partagés pour les services Docker. Comme tout est déjà existant sur mon HD, il suffit de recréer les liens.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;602px&#34; data-flex-grow=&#34;250&#34; height=&#34;291&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/Capture-decran-du-2025-02-18-11-17-07.png&#34; width=&#34;730&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;La seule différence que j&amp;rsquo;ai noté c&amp;rsquo;est le chemin absolu vers mes dossiers sur le HD n&amp;rsquo;est plus le même : je suis passé de :&lt;br&gt;&#xA;&lt;code&gt;/srv/dev-disk-by-label-DATA&lt;/code&gt;&lt;br&gt;&#xA;à&lt;br&gt;&#xA;&lt;code&gt;/srv/dev-disk-by-uuid-ecc74bd0-fd45-4e9b-a223-60dbfe940601&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je vais devoir modifier mes fichiers docker compose en conséquence (voir ci-dessous).&lt;/p&gt;&#xA;&lt;p&gt;Passons à l&amp;rsquo;installation de Docker, comme indiqué dans &lt;a class=&#34;link&#34; href=&#34;https://wiki.omv-extras.org/doku.php?id=omv7:docker_in_omv&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la doc&lt;/a&gt;. J&amp;rsquo;installe d&amp;rsquo;abord l&amp;rsquo;extension &lt;strong&gt;openmediavault-compose&lt;/strong&gt; à partir du menu Système - Extensions :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;589px&#34; data-flex-grow=&#34;245&#34; height=&#34;134&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/Capture-decran-du-2025-02-18-11-07-49.png&#34; width=&#34;329&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ensuite je vais dans Services - Compose - Parameters : il s&amp;rsquo;agit essentiellement de définir le dossier AppData comme défini dans les dossiers partagés précédemment :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;306px&#34; data-flex-grow=&#34;127&#34; height=&#34;271&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/Capture-decran-du-2025-02-18-11-17-28.png&#34; width=&#34;346&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;en profite aussi pour déplacer Docker sur le HD :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;434px&#34; data-flex-grow=&#34;180&#34; height=&#34;330&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/Capture-decran-du-2025-02-18-11-18-02.png&#34; width=&#34;597&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et je fais une réinstallation afin d&amp;rsquo;être sûr que tout est à jour grâce au bouton en bas de page :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;3292px&#34; data-flex-grow=&#34;1372&#34; height=&#34;50&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/reinstalldocker.png&#34; width=&#34;686&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;dockge&#34;&gt;Dockge&#xA;&lt;/h3&gt;&lt;p&gt;Maintenant que mon système OMV est opérationnel, il ne me reste plus qu&amp;rsquo;à réinstaller mes containers Docker. J&amp;rsquo;utilise depuis quelque temps Dockge pour les gérer, c&amp;rsquo;est vraiment très bien fait et beaucoup plus efficace que les interfaces proposées par OMV. J&amp;rsquo;installe donc ce container en premier, en suivant l&amp;rsquo;article que j&amp;rsquo;avais fait : &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/dockge-gestion-des-container-docker/&#34; &gt;/dockge-gestion-des-container-docker/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une fois démarré, Docke voit bien mes containers Dockers (Nextcloud, Plex, Qbittorrent) mais affiche &amp;ldquo;This stack is not managed by Dockge&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est normal, je dois les redéfinir comme expliqué dans l&amp;rsquo;article. Heureusement, j&amp;rsquo;ai gardé les fichiers &lt;code&gt;compose.yaml&lt;/code&gt; de chacun de mes services, je modifie donc toutes les références à &lt;code&gt;/srv/dev-disk-by-label-DATA&lt;/code&gt; et je les remplace par &lt;code&gt;/srv/dev-disk-by-uuid-ecc74bd0-fd45-4e9b-a223-60dbfe940601&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Tout cela prend très peu de temps à remettre en place, je redémarre tous mes services, et voilà ! tout fonctionne comme auparavant ! :cool:&lt;/p&gt;&#xA;&lt;h3 id=&#34;swag-dashboard&#34;&gt;Swag Dashboard&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;en ai profité pour réinstaller Swag Dashboard en suivant &lt;a class=&#34;link&#34; href=&#34;https://colinfo.fr/installation-du-dashboard-de-swag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article&lt;/a&gt;. C&amp;rsquo;est extrêmement simple, je modifie la stack de Nextcloud, section swag, en y ajoutant 2 lignes :&lt;br&gt;&#xA;- DOCKER_MODS=linuxserver/mods:swag-dashboard dans environment&lt;br&gt;&#xA;- 81:81dans ports.&lt;br&gt;&#xA;Ce qui donne pour la partie Swag :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swag:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    image: linuxserver/swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    container_name: swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cap_add:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - NET_ADMIN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    environment:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PUID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;995&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PGID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - TZ&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Europe/Paris&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - URL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xxx.pled.fr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - SUBDOMAINS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - DOCKER_MODS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;linuxserver/mods:swag-dashboard&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - VALIDATION&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - EMAIL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xxx@pled.fr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    volumes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-uuid-ecc74bd0-fd45-4e9b-a223-60dbfe940601/AppData/swag:/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ports:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 443:443&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 80:80&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 81:81&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    restart: unless-stopped&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis grâce à Dockge un arrêt suivi d&amp;rsquo;un redémarrage suffit à prendre en compte le nouveau fichier et créer un nouveau container.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai désormais un dashboard pour Swag, ce qui n&amp;rsquo;est pas sans intérêt :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;472px&#34; data-flex-grow=&#34;196&#34; height=&#34;986&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/swag-dashboard-1.png&#34; srcset=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/swag-dashboard-1_hu_5d638ad1c5bb1182.png 800w, https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/swag-dashboard-1_hu_7ffcf47efa9c7e31.png 1600w, https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/swag-dashboard-1.png 1940w&#34; width=&#34;1940&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Tout remettre en état s&amp;rsquo;est finalement révélé assez simple et rapide. L&amp;rsquo;installation de l&amp;rsquo;image armbian et d&amp;rsquo;OMV7 est tout de même simplissime. L&amp;rsquo;expérience de la première installation s&amp;rsquo;est révélée utile pour le paramétrage d&amp;rsquo;OMV, et l&amp;rsquo;utilisation de Dockge simplifie beaucoup la gestion des containers Docker. Tout cela est globalement positif.&lt;/p&gt;&#xA;&lt;p&gt;Évidemment, si j&amp;rsquo;avais eu une sauvegarde récente, tout aurait été encore plus simple. Lorsque je suis passé à OMV7 (en mars 2024), j&amp;rsquo;aurais du faire une sauvegarde de la sdcard, j&amp;rsquo;ai vraiment m&amp;hellip; sur ce coup là. D&amp;rsquo;ailleurs, j&amp;rsquo;en fais une immédiatement après cette installation, avec l&amp;rsquo;outil Disques de Gnome :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;350px&#34; data-flex-grow=&#34;146&#34; height=&#34;652&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/disks.png&#34; srcset=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/disks_hu_90108a12b1920a8a.png 800w, https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/disks.png 952w&#34; width=&#34;952&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Si j&amp;rsquo;avais perdu le HD, la situation serait sans doute plus compliquée, mais gérable avec la &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/openmediavault-sauvegarde-des-containers-docker/&#34; &gt;sauvegarde de mes containers&lt;/a&gt; plus celles de la médiathèque Plex avec &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/&#34; &gt;mes sauvegardes rsync&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai tout de même vu que je pourrais ajouter à ces sauvegardes rsync un ou deux dossiers comme le home de mon utilisateur sur mon NAS, où traînent quelques scripts utiles, ou encore les dossiers des fichiers &lt;code&gt;compose.yaml&lt;/code&gt; de Dockge.&lt;/p&gt;&#xA;&lt;p&gt;Mais bon, globalement, une bonne expérience qui se termine bien.&lt;/p&gt;&#xA;&lt;p&gt;Un dernier petit screenshot :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;333px&#34; data-flex-grow=&#34;138&#34; height=&#34;600&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/armbian.png&#34; srcset=&#34;https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/armbian_hu_6e41d1cf5ca9875c.png 800w, https://pled.fr/reinstallation-domv7-et-docker-apres-perte-du-serveur/armbian.png 833w&#34; width=&#34;833&#34;&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Streaming de sa propre musique avec l&#39;application Nextcloud Music</title>
            <link>https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/</link>
            <pubDate>Mon, 05 Aug 2024 15:33:58 +0000</pubDate>
            <guid>https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;nc-music2.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tout a commencé par la lecture de cet article : &lt;a class=&#34;link&#34; href=&#34;https://blog.flozz.fr/2024/06/21/je-quitte-spotify-pour-mon-propre-cloud-musical-autoheberge/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Je quitte Spotify pour mon propre cloud musical autohébergé&lt;/a&gt; ! L&amp;rsquo;auteur y explique comment il est passé de &lt;strong&gt;Spotify&lt;/strong&gt; à une solution auto-hébergée avec Nextcloud et son application &lt;strong&gt;Music&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Il y soulève d&amp;rsquo;ailleurs plusieurs points intéressants à propos de l&amp;rsquo;usage de Spotify : d&amp;rsquo;abord l&amp;rsquo;absence de certains artistes, ou de leur disparition soudaine pour d&amp;rsquo;obscures raisons contractuelles, en d&amp;rsquo;autres termes l&amp;rsquo;absence de contrôle sur la musique que l&amp;rsquo;on souhaite écouter. Mais aussi un autre point très intéressant : utilisateur des &amp;ldquo;Daily Mix&amp;rdquo; (des playlists générées chaque jour en fonction de vos goûts), il s&amp;rsquo;est vite vu s&amp;rsquo;auto-censurer en n&amp;rsquo;allant pas écouter une musique dont il avait entendu parler de peur que l&amp;rsquo;algorithme ne vienne altérer ses &amp;ldquo;Daily Mix&amp;rdquo; !&lt;/p&gt;&#xA;&lt;p&gt;On voit par ces deux exemples les limites de ce que propose Spotify ou Deezer : on perd le contrôle, jusqu&amp;rsquo;à s&amp;rsquo;auto-censurer à cause d&amp;rsquo;algorithmes qui font des choix à notre place. C&amp;rsquo;est d&amp;rsquo;ailleurs de plus en plus vrai, avec l&amp;rsquo;AI qui arrive partout, yc dans les navigateurs, et que je m&amp;rsquo;empresserai de désactiver quand le pourrai, vu que cela n&amp;rsquo;apporte rien à part de la confusion. Ce n&amp;rsquo;est pour moi que le dernier élément marketing des GAFAMs pour vendre leur tambouille du rêve et collecter encore plus de données.&lt;/p&gt;&#xA;&lt;p&gt;Mais revenons à l&amp;rsquo;article : je me suis dit pourquoi ne pas &amp;ldquo;streamer&amp;rdquo; ma propre musique puisque j&amp;rsquo;ai mon instance Nextcloud qui tourne sur mon NAS OMV et qui est accessible depuis internet grâce à swag/nginx, le Proxy Server installé ? (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;cet article&lt;/a&gt; pour la configuration de mon serveur Nextcloud sur le NAS OpenMediaVault). Le seul souci que je voyais finalement était que ma bibliothèque musicale est assez importante (+14 000 titres) et que je ne voulais surtout pas avoir à dupliquer sur le NAS.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;200&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/powerampache.png&#34; width=&#34;200&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Concernant l&amp;rsquo;application de lecture côté Android (puisqu&amp;rsquo;il s&amp;rsquo;agit de streamer sa propre musique en dehors de chez soi), j&amp;rsquo;ai utilisé celle mentionnée dans l&amp;rsquo;article de Flozz, qui m&amp;rsquo;avait l&amp;rsquo;air très bien (totalement open-source) puisque Nextcloud Music accepte les clients utilisant l&amp;rsquo; &lt;strong&gt;API Ampache&lt;/strong&gt;. C&amp;rsquo;est là que je suis tombé sur un sérieux problème, car il était impossible de me connecter à mon instance Nextcloud Music. J&amp;rsquo;ai mis du temps à identifier l&amp;rsquo;origine du problème, mais avec de l&amp;rsquo;aide côté dev Ampache et Nextcloud, nous avons finis par identifier un problème de configuration sur le proxy serveur &lt;strong&gt;nginx&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai également du mettre à jour mon instance Nextcloud, et là je suis tombé sur un nouveau problème lors de l&amp;rsquo;upgrade. Enfin un problème d&amp;rsquo;affichage de pochettes m&amp;rsquo;a embêté quelque temps avant de me rendre compte que cela provenait de la configuration réseau sur mon LAN.&lt;/p&gt;&#xA;&lt;p&gt;Cela n&amp;rsquo;a donc pas été sans peine, mais j&amp;rsquo;ai finalement réussi à tout mettre en ordre de marche. Je vais essayer de reprendre ici toutes les étapes et les problèmes rencontrés.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est parti !&lt;/p&gt;&#xA;&lt;h3 id=&#34;bibliothèque-musicale&#34;&gt;Bibliothèque musicale&#xA;&lt;/h3&gt;&lt;p&gt;Ma bibliothèque musicale est en premier lieu sur mon PC, mais celui-ci n&amp;rsquo;est pas allumé en permanence. Pour l&amp;rsquo;utiliser avec Volumio sur mon Raspberry, je la synchronise donc sur un disque USB du Raspberry via un script rsync et un accès SSH (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=15743&#34; &gt;cet article&lt;/a&gt;). Le raspberry est lui tout le temps allumé, et la connexion SSH était donc déjà toute configurée. :cool:&lt;/p&gt;&#xA;&lt;p&gt;Comme je ne voulais exposer toute ma bibliothèque, je l&amp;rsquo;ai vite réorganisée, en créant deux dossiers à la base de l&amp;rsquo;arborescence : &lt;strong&gt;Intranet&lt;/strong&gt; (pour la maison uniquement) et &lt;strong&gt;Internet&lt;/strong&gt; (accessible de l&amp;rsquo;extérieur). Puis j&amp;rsquo;ai déplacé l&amp;rsquo;essentiel dans Intranet, et disons toutes mes &lt;strong&gt;playlists&lt;/strong&gt; dans Internet (ce que j&amp;rsquo;écoute le plus facilement), qui représente tout de même 3 400 titres. Ce devrait être suffisant pour streamer hors de la maison&amp;hellip;&lt;/p&gt;&#xA;&lt;h4 id=&#34;un-mot-sur-les-playlists&#34;&gt;Un mot sur les playlists&#xA;&lt;/h4&gt;&lt;p&gt;Sur mon PC, les playlists (avec Rhythmbox) sont en fait des titres réunis dans un même dossier. Or l&amp;rsquo;API Ampache n&amp;rsquo;offre pas de fonction de type &amp;ldquo;vue dossier&amp;rdquo;. Elle affiche par contre les Playlists que Nextcloud Music permet de créer, et NC Music offre une vue dossier : voir en fin d&amp;rsquo;article comment gérer cela, c&amp;rsquo;est très simple.&lt;/p&gt;&#xA;&lt;h4 id=&#34;nextcloud-external-storage-support&#34;&gt;Nextcloud External Storage Support&#xA;&lt;/h4&gt;&lt;p&gt;Nextcloud fournit une application &amp;ldquo;External Storage support&amp;rdquo; qui va me permettre de configurer un accès via SFTP à ma bibliothèque musicale sur le disque USB de Volumio. Il suffit donc d&amp;rsquo;installer cette application, de créer d&amp;rsquo;abord un dossier dans Nextcloud Fichiers qui servira de point de montage (ici &lt;code&gt;MyMusic&lt;/code&gt;), puis d&amp;rsquo;aller dans &amp;ldquo;Paramètres d&amp;rsquo;administration - Administration - Stockage externe&amp;rdquo;, et d&amp;rsquo;y donner les informations de connexion à la machine Volumio :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;566px&#34; data-flex-grow=&#34;236&#34; height=&#34;531&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/external-storage.png&#34; srcset=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/external-storage_hu_34ca0ff1aa05638e.png 800w, https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/external-storage.png 1254w&#34; width=&#34;1254&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut ensuite aller dans l&amp;rsquo;application Music, de définir le chemin de votre collection de musique, puis de lancer le scan&amp;hellip; qui peut prendre plus ou moins de temps ! On peut d&amp;rsquo;ailleurs exclure certains dossiers du scan si on le souhaite à ce moment (autre approche).&lt;/p&gt;&#xA;&lt;p&gt;Cette partie a été vraiment très simple à régler, et j&amp;rsquo;ai pu tout de suite tester le lecteur dans le navigateur. Tout fonctionnait parfaitement.&lt;/p&gt;&#xA;&lt;p&gt;Reste tout de même à configurer l&amp;rsquo;accès à partir du client Ampache : pour ce faire, aller sur la page Nextcloud Music, choisir Settings en bas à gauche, vous y trouverez l&amp;rsquo;URL qu&amp;rsquo;il faudra utiliser côté client, ainsi que la possibilité de générer le mot de passe à utiliser pour l&amp;rsquo;utilisateur Nextcloud :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;322px&#34; data-flex-grow=&#34;134&#34; height=&#34;500&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/NCapikey.png&#34; width=&#34;671&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Notez bien le mot de passe qui est fourni, car une fois la boîte fermée, il n&amp;rsquo;apparaîtra plus nulle part. On ne peut que l&amp;rsquo;effacer et en créer un nouveau.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, côté Nexcloud, tout est prêt. Passons maintenant au client Ampache côté Android.&lt;/p&gt;&#xA;&lt;h3 id=&#34;power-ampache-2&#34;&gt;Power Ampache 2&#xA;&lt;/h3&gt;&lt;p&gt;Power Ampache 2, disponible sur F-Droid, est une application totalement open source, et comme j&amp;rsquo;ai eu l&amp;rsquo;occasion d&amp;rsquo;aborder le sujet avec le développeur, elle ne comporte aucun tracking : en effet, alors que j&amp;rsquo;investiguais le problème des pochettes (voir plus bas), j&amp;rsquo;avais noté que &lt;a class=&#34;link&#34; href=&#34;https://reports.exodus-privacy.eu.org/fr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Exodus Privacy&lt;/a&gt; avait repéré un tracker dans l&amp;rsquo;application :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;340px&#34; data-flex-grow=&#34;141&#34; height=&#34;287&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/exodus.png&#34; width=&#34;407&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà la réponse du développeur :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;All the requests Power Ampache 2 makes are directed to the ampache server you specified at login. I absolutely do not make any third party or tracking requests. All the libraries used are open source and do not make any network request on their own.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Even the &amp;ldquo;(1) pisteur&amp;rdquo; you see in your report, that&amp;rsquo;s for email crash report, and you can just refuse to send the email if a crash happens, if you want.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Tout est parfait donc, et l&amp;rsquo;application est très esthétique je trouve :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;332px&#34; data-flex-grow=&#34;138&#34; height=&#34;556&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/ampache.png&#34; width=&#34;770&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mais il faut d&amp;rsquo;abord se connecter au serveur, et c&amp;rsquo;est là que les ennuis ont commencé, il m&amp;rsquo;était impossible de me connecter :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;220px&#34; data-flex-grow=&#34;91&#34; height=&#34;556&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/PA2.png&#34; width=&#34;510&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai commencé à regarder les logs que fourni l&amp;rsquo;application dans les paramètres (bonne conception) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2024-06-23 15:51:54&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;retrofit2.HttpException: HTTP &lt;span style=&#34;color:#ae81ff&#34;&gt;404&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;exception&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    at retrofit2.KotlinExtensions$await$2$2.onResponse&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;KotlinExtensions.kt:53&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    at retrofit2.OkHttpCall$1.onResponse&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;OkHttpCall.java:161&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    at okhttp3.internal.connection.RealCall$AsyncCall.run&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;RealCall.kt:535&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    at java.util.concurrent.ThreadPoolExecutor.runWorker&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;ThreadPoolExecutor.java:1145&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    at java.util.concurrent.ThreadPoolExecutor$Worker.run&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;ThreadPoolExecutor.java:644&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    at java.lang.Thread.run&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;Thread.java:1012&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;authorize&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; - cannot load data HttpException &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;:404,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{ \&amp;#34;exception\&amp;#34; : \&amp;#34;java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.\&amp;#34; }&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;detailMessage&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;HTTP 404 { \&amp;#34;exception\&amp;#34; : \&amp;#34;java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.\&amp;#34; }&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;stackTrace&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#f92672&#34;&gt;[]&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;suppressedExceptions&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#f92672&#34;&gt;[]}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le message semblait pointer un problème de certification (&amp;ldquo;Trust anchor for certification&amp;hellip;&amp;rdquo;), or mon certificat était bien valide, puisque je pouvais accéder en HTTPS via le navigateur. Je ne comprenais donc pas le problème. En regardant les logs du serveur nginx, je pouvais voir quelque chose de ce genre :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;92.xxx.yyy.zzz - - &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;23/Jun/2024:18:11:56 +0200&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;GET /apps/music/ampache/server/json.server.php?action=handshake&amp;amp;auth=0dc8eab854xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx289e9ded5423&amp;amp;user=xxxxxxx×tamp=1719159117 HTTP/2.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;404&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;146&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PowerAmpache2-1.00-60-fdroid&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Erreur 404&lt;/strong&gt;(not found), celle-là tout le monde la connaît ! Mais cela ne m&amp;rsquo;aidait guère&amp;hellip; Je me suis alors tourné vers le dev Ampache pour leur &lt;a class=&#34;link&#34; href=&#34;https://github.com/ampache/ampache/issues/3973&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;demander de l&amp;rsquo;aide&lt;/a&gt;. Le dev a vite pensé à un problème avec le proxy et les &amp;ldquo;Nextcloud rewrites&amp;rdquo; (on verra plus tard que c&amp;rsquo;était bien le problème). Il ajoutait que cela pouvait être aussi un problème avec la version de Nextcloud ou celle de Nextcloud Music&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;mise-à-jour-serveur-nextcloud&#34;&gt;Mise à jour serveur Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;Je me suis donc d&amp;rsquo;abord tourné vers mon serveur Nextcloud, qui n&amp;rsquo;était effectivement pas à jour : je devais être à la version 25 alors que la 29 venait de sortir. Il était temps de me mettre à jour.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc dans un premier temps fait les mises à jour via l&amp;rsquo;interface de Nextcloud, passant de la 25 à la 26, puis 26 -&amp;gt; 27 -&amp;gt; 28 -&amp;gt; jusqu&amp;rsquo;à la dernière version disponible, soit la 29.0.3. Tout s&amp;rsquo;est très bien passé à ce niveau, c&amp;rsquo;est vraiment la meilleure façon de mettre à jour Nextcloud dans son container Docker. Les scripts de Nextcloud sont vraiment bien faits, ils font même une sauvegarde de la version de départ au cas où un problème surviendrait.&lt;/p&gt;&#xA;&lt;p&gt;En écrivant cet article, j&amp;rsquo;ai vérifié si une nouvelle version était dispo, et c&amp;rsquo;était le cas avec la 29.0.4. J&amp;rsquo;ai donc en toute confiance lancé la mise à jour, et bien sûr, comme je venais d&amp;rsquo;écrire que les scripts étaient super bien faits, cette fois ça a planté :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;207px&#34; data-flex-grow=&#34;86&#34; height=&#34;720&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-08-05-09-40-55.png&#34; width=&#34;623&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et là, j&amp;rsquo;étais bloqué, le bouton &amp;ldquo;Retry update&amp;rdquo; ne donnait rien. J&amp;rsquo;ai fini par recharger la page, et j&amp;rsquo;ai alors eu droit à ce message et cette commande un peu rebutante :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;889px&#34; data-flex-grow=&#34;370&#34; height=&#34;261&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/imagen-2.png.webp&#34; srcset=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/imagen-2.png_hu_68f87532b0c9fb7d.webp 800w, https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/imagen-2.png.webp 967w&#34; width=&#34;967&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est un peu obscur à première vue, mais en fait assez simple à gérer : d&amp;rsquo;abord se connecter en SSH sur la machine, et coller la commande indiquée.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;pascal&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;odroidhc2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:~&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;php&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;r&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;$password = trim(shell_exec(&amp;#34;openssl rand -base64 48&amp;#34;));if(strlen($password) === 64) {$hash = password_hash($password, PASSWORD_DEFAULT) . &amp;#34;\n&amp;#34;; echo &amp;#34;Insert as \&amp;#34;updater.secret\&amp;#34;: &amp;#34;.$hash; echo &amp;#34;The plaintext value is: &amp;#34;.$password.&amp;#34;\n&amp;#34;;}else{echo &amp;#34;Could not execute OpenSSL.\n&amp;#34;;};&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Insert&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;updater.secret&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;y&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;q&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;oWf0b&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;bBlGxxxxxx&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;The&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;plaintext&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;is&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MUk9s3iBnUFjip0mptqSxxxxxx&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;pascal&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;odroidhc2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:~&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il suffit lors d&amp;rsquo;ajouter la valeur de &amp;ldquo;updater.secret&amp;rdquo; à la fin du fichier &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/www/nextcloud/config/config.php&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dbpassword&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;keepsecret&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;installed&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;theme&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;loglevel&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;maintenance&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;maintenance_window_start&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;has_rebuilt_cache&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;app_install_overwrite&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;carnet&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;updater.secret&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;$2y$10$5q.oWf0b.bBlGxxxxxxxxx&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis sur la page web de rentrer le mot de passe en &amp;ldquo;plain text value&amp;rdquo; et de cliquer sur le bouton &amp;ldquo;Login&amp;rdquo;. La mise à jour vous propose alors de reprendre où elle avait échouée, et se termine sans encombres.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;237px&#34; data-flex-grow=&#34;99&#34; height=&#34;629&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-08-05-10-02-16.png&#34; width=&#34;623&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;NOTE : La ligne ajoutée précédemment au fichier &lt;code&gt;config.php&lt;/code&gt; est automatiquement supprimée une fois utilisée ! Encore une bonne chose d&amp;rsquo;apprise avec Nextcloud ! :oops:&lt;/p&gt;&#xA;&lt;p&gt;Une fois cette première phase terminée, on peut soit continuer via l&amp;rsquo;interface Web (une nouvelle page s&amp;rsquo;ouvre) pour démarrer la mise à jour proprement dit. On peut tout aussi bien ouvrir une boite de commande via &lt;strong&gt;Portainer&lt;/strong&gt; ou &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=20704&#34; &gt;Dockge&lt;/a&gt; (au passage un très bon outil pour gérer ses containers, j&amp;rsquo;en suis très content) pour lancer la mise à jour très simplement avec la commande &lt;code&gt;occ upgrade&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;335px&#34; data-flex-grow=&#34;139&#34; height=&#34;791&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-08-05-09-33-30.png&#34; srcset=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-08-05-09-33-30_hu_7406e1d1ca3a02c3.png 800w, https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-08-05-09-33-30.png 1107w&#34; width=&#34;1107&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai ensuite pu installer l&amp;rsquo;application Music à la version 2.0.0 comme recommandé sur l&amp;rsquo;écran de connexion du client Power Ampache (voir plus haut).&lt;/p&gt;&#xA;&lt;h4 id=&#34;messages-derreur-warnings&#34;&gt;Messages d&amp;rsquo;erreur (warnings)&#xA;&lt;/h4&gt;&lt;p&gt;Toujours dans Nextcloud, j&amp;rsquo;avais deux alertes (en rouge) dans la page &amp;ldquo;Vue d&amp;rsquo;ensemble&amp;rdquo; des paramètres d&amp;rsquo;administration que je me suis attaché à corriger, afin de partir d&amp;rsquo;une situation la plus propre possible :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;658px&#34; data-flex-grow=&#34;274&#34; height=&#34;242&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-06-29-09-35-28.png&#34; width=&#34;664&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Le premier message a été corrigé en modifiant le fichier &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/nginx/site-confs/default.conf&lt;/code&gt; du serveur nginx (il suffit d&amp;rsquo;ajouter l&amp;rsquo;extension &lt;code&gt;mjs&lt;/code&gt; pour le javascript) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;include mime.types;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;types &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        text/javascript js mjs;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        application/wasm wasm;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour la seconde erreur, c&amp;rsquo;était un peu plus compliqué. Mon fichier &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/www/nextcloud/config/config.php&lt;/code&gt; était configuré comme ceci concernant les &amp;quot; &lt;code&gt;trusted_proxies&lt;/code&gt;&amp;quot; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trusted_proxies&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  array &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    0 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;swag&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Depuis la console de l&amp;rsquo;instance Docker de Nextcloud, je pouvais voir son adresse IP et celle du proxy swag/nginx comme ceci :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@0e47f46ce787:/# ip address&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;158: eth0@if159:  mtu &lt;span style=&#34;color:#ae81ff&#34;&gt;1500&lt;/span&gt; qdisc noqueue state UP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    link/ether 02:42:ac:1a:00:03 brd ff:ff:ff:ff:ff:ff&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    inet 172.26.0.3/16 brd 172.26.255.255 scope global eth0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       valid_lft forever preferred_lft forever&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@0e47f46ce787:/#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@0e47f46ce787:/# ping swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PING swag &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;172.26.0.4&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;56&lt;/span&gt; data bytes &lt;span style=&#34;color:#ae81ff&#34;&gt;64&lt;/span&gt; bytes from 172.26.0.4: seq&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; ttl&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;64&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;1.020 ms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et dans la console Docker Swag, je pouvais aussi vérifier son adresse :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@8077149332c5:/# ip addr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;160: eth0@if161:  mtu &lt;span style=&#34;color:#ae81ff&#34;&gt;1500&lt;/span&gt; qdisc noqueue state UP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    link/ether 02:42:ac:1a:00:04 brd ff:ff:ff:ff:ff:ff&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    inet 172.26.0.4/16 brd 172.26.255.255 scope global eth0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       valid_lft forever preferred_lft forever&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ce qui me permettait d&amp;rsquo;utiliser la notation CIDR suivante pour que Nextcloud soit content pour la déclaration de ses &amp;ldquo;trusted_proxies&amp;rdquo; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trusted_proxies&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  array &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    0 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;127.26.0.0/16&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà, je suis désormais à jour côté serveur Nextcloud, et je n&amp;rsquo;ai plus aucune erreur critique (en rouge). Une bonne chose de faite finalement.&lt;/p&gt;&#xA;&lt;p&gt;Il reste bien quelques messages, mais non critiques, comme de me signaler que j&amp;rsquo;utilise une version 32 bits de PHP et que je ferais mieux de passer à une version 64 bits ! Information dont je suis bien conscient, mais mon odroid-hc2 fonctionnant parfaitement, je le garderai tant que ce sera le cas ou que je me retrouverai coincé (j&amp;rsquo;ai déjà vu que mes containers Docker n&amp;rsquo;étaient plus disponibles, voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=20704&#34; &gt;cet article&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;h3 id=&#34;erreur-404&#34;&gt;Erreur 404&#xA;&lt;/h3&gt;&lt;p&gt;Mais hélas, il m&amp;rsquo;est toujours impossible de me connecter à partir du client Ampache, et toujours avec la même erreur. Je peux toutefois raisonnablement penser que côté Nextcloud, tout est bon.&lt;/p&gt;&#xA;&lt;h3 id=&#34;première-solution&#34;&gt;Première solution&#xA;&lt;/h3&gt;&lt;p&gt;Je finis par trouver un ticket ouvert sur le Github de Music qui correspond à mon message d&amp;rsquo;erreur : &lt;a class=&#34;link&#34; href=&#34;https://github.com/owncloud/music/issues/851&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Ampache api with nextcloud served by nginx gets 404 when following nextclou admin docs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Apparemment, &lt;strong&gt;quand Nextcloud est utilisé avec nginx&lt;/strong&gt; (pas de problème avec Apache), il ne manipule pas correctement les fichiers avec une extension &lt;code&gt;.php&lt;/code&gt;, renvoyant l&amp;rsquo;erreur 404. Bon, je n&amp;rsquo;ai pas tout maîtrisé ici, mais la directive &lt;strong&gt;try_files&lt;/strong&gt; pose problème. en la modifiant comme ci-dessous, je peux effectivement enfin me connecter avec le client Ampache.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--- nextcloud-old.conf  2021-05-05 01:02:35.871870022 +0200&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+++ nextcloud.conf      2021-05-05 01:03:11.491904219 +0200&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@ -113,7 +113,7 @@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         fastcgi_split_path_info ^&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.+?&lt;span style=&#34;color:#ae81ff&#34;&gt;\.&lt;/span&gt;php&lt;span style=&#34;color:#f92672&#34;&gt;)(&lt;/span&gt;/.*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         set $path_info $fastcgi_path_info;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-        try_files $fastcgi_script_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;404;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+        try_files $fastcgi_script_name /index.php$fastcgi_script_name?$args;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         include fastcgi_params;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dans ma configuration, le fichier de configuration en question, celui de nginx, est &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/nginx/site-confs/default.conf&lt;/code&gt;. Il est préconfiguré pour être utilisé avec Nextcloud, puisque j&amp;rsquo;utilise une solution &amp;ldquo;clef en main&amp;rdquo; fournie par Linuxserver.io avec les 3 containers Docker requis : Nextcloud, Mariadb et Swag (Swag intègre nginx + fail2ban + Letsencrypt).&lt;/p&gt;&#xA;&lt;p&gt;Sauf que la modifier de cette façon peut avoir un impact sur le fonctionnement global de Nextcloud. Et sur les conseils du dev Ampache, j&amp;rsquo;ai ajouté une nouvelle &amp;quot; &lt;code&gt;location&lt;/code&gt;&amp;quot; dans le fichier de configuration de Nextcloud pour traiter spécifiquement les fichiers concernant ampache et de laisser le reste du code tel quel :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;location ~ ^/apps/music/ampache/server/.*&lt;span style=&#34;color:#ae81ff&#34;&gt;\.&lt;/span&gt;php$ &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     fastcgi_split_path_info ^&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.+?&lt;span style=&#34;color:#ae81ff&#34;&gt;\.&lt;/span&gt;php&lt;span style=&#34;color:#f92672&#34;&gt;)(&lt;/span&gt;/.*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     set $path_info $fastcgi_path_info;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     try_files $fastcgi_script_name /index.php$fastcgi_script_name?$args;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     include fastcgi_params;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     fastcgi_param PATH_INFO $path_info;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fastcgi_param HTTPS on;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fastcgi_param modHeadersAvailable true;         &lt;span style=&#34;color:#75715e&#34;&gt;# Avoid sending the security headers twice&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fastcgi_param front_controller_active true;     &lt;span style=&#34;color:#75715e&#34;&gt;# Enable pretty urls&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fastcgi_pass php-handler;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fastcgi_intercept_errors on;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fastcgi_request_buffering off;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le problème semble donc réglé ! :cool: Reste à signaler le problème à qui de droit.&lt;/p&gt;&#xA;&lt;h3 id=&#34;la-documentation-nextcloud&#34;&gt;La documentation Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;Pour faire les choses bien, et comme conseillé par un dev de Music, le meilleur endroit pour déclarer ce problème, c&amp;rsquo;est la doc de Nextcloud. En effet, cette dernière donne les infos pour configurer le serveur nginx sur &lt;a class=&#34;link&#34; href=&#34;https://docs.nextcloud.com/server/21/admin_manual/installation/nginx.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;. Je crée donc un ticket &lt;a class=&#34;link&#34; href=&#34;https://github.com/nextcloud/documentation/issues/11951&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt; pour signaler le problème et suggérer d&amp;rsquo;ajouter ce cas de figure dans la section &lt;strong&gt;Tips and tricks&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Quelques jours plus tard, une personne me répond qu&amp;rsquo;effectivement, l&amp;rsquo;API Ampache (exposée par l&amp;rsquo;application Music) possède des routes qui intègrent des fichiers &lt;code&gt;.php&lt;/code&gt;. et que nginx gère cela différemment qu&amp;rsquo;Apache. Il me propose une autre solution, plus simple et qui évite de créer une &amp;ldquo;location&amp;rdquo; spécifique. En se basant sur &lt;a class=&#34;link&#34; href=&#34;https://github.com/nextcloud/documentation/blob/e9dd877fc5585a3948e91dafa352cfb4bc18d48b/admin_manual/installation/nginx-root.conf.sample#L145&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ce document&lt;/a&gt;, on ajoute une règle qui devrait être présente pour bien gérer les fichiers &lt;code&gt;.php&lt;/code&gt; de l&amp;rsquo;API Ampache.&lt;/p&gt;&#xA;&lt;p&gt;La personne m&amp;rsquo;en propose une modifiée pour Ampache, mais ce sera finalement la ligne de &lt;code&gt;rewrite&lt;/code&gt; de la documentation qui va se révéler la bonne. Elle est indiquée comme &amp;ldquo;required for legacy&amp;rdquo;, mais n&amp;rsquo;était pas présente dans le fichier que j&amp;rsquo;utilisais, et qui venait des containers nextcloud+mariadb+swag proposés &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/general/swag/?h=nextcloud#nextcloud-subdomain-reverse-proxy-example&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Ensure this block, which passes PHP files to the PHP process, is above the blocks&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# which handle static assets (as seen below). If this block is not declared first,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# then Nginx will encounter an infinite rewriting loop when it prepends `/index.php`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# to the URI, resulting in a HTTP 500 error response.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    location ~ &lt;span style=&#34;color:#ae81ff&#34;&gt;\.&lt;/span&gt;php&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;?:$|/&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;    &lt;span style=&#34;color:#75715e&#34;&gt;# Pascal - added for Nextcloud Music and Ampache client PHP (routes handling)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;    &lt;span style=&#34;color:#75715e&#34;&gt;# Required for legacy support&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;rewrite ^/&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;?!index|remote|public|cron|core&lt;span style=&#34;color:#ae81ff&#34;&gt;\/&lt;/span&gt;ajax&lt;span style=&#34;color:#ae81ff&#34;&gt;\/&lt;/span&gt;update|status|ocs&lt;span style=&#34;color:#ae81ff&#34;&gt;\/&lt;/span&gt;v&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;12&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;|updater&lt;span style=&#34;color:#ae81ff&#34;&gt;\/&lt;/span&gt;.+|ocs-provider&lt;span style=&#34;color:#ae81ff&#34;&gt;\/&lt;/span&gt;.+|.+&lt;span style=&#34;color:#ae81ff&#34;&gt;\/&lt;/span&gt;richdocumentscode&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;_arm64&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;?&lt;span style=&#34;color:#ae81ff&#34;&gt;\/&lt;/span&gt;proxy&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; /index.php$request_uri;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        fastcgi_split_path_info ^&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.+?&lt;span style=&#34;color:#ae81ff&#34;&gt;\.&lt;/span&gt;php&lt;span style=&#34;color:#f92672&#34;&gt;)(&lt;/span&gt;/.*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        set $path_info $fastcgi_path_info;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;try_files $fastcgi_script_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;404;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cette fois tout est bon ? Euh&amp;hellip; un autre problème va apparaître.&lt;/p&gt;&#xA;&lt;h3 id=&#34;pas-de-pochettes-affichées&#34;&gt;Pas de pochettes affichées&#xA;&lt;/h3&gt;&lt;p&gt;Dans la plupart des cas de ma bibliothèque musicale, chaque dossier correspond à un album, et contient en plus des morceaux un fichier image &lt;code&gt;cover.jpg&lt;/code&gt;. représentant la pochette de l&amp;rsquo;album. C&amp;rsquo;est assez standard et fonctionne généralement sans problème particulier.&lt;/p&gt;&#xA;&lt;p&gt;Si la connexion fonctionnait désormais :cool:, je n&amp;rsquo;ai pas les pochettes dans le cient Ampache, alors que je les ai dans le navigateur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;278px&#34; data-flex-grow=&#34;116&#34; height=&#34;438&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Music.png&#34; width=&#34;509&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sur ce coup là, je n&amp;rsquo;ai pas été très bon, car le problème venait de ma config, et j&amp;rsquo;aurais pu/du le trouver tout seul. J&amp;rsquo;ai d&amp;rsquo;abord sollicité le dev de Music, qui m&amp;rsquo;a vite répondu en m&amp;rsquo;expliquant comment cela fonctionnait et comment je pouvais tester. Par exemple, en utilisant une URL de ce type :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://your_server_url/apps/music/ampache/server/json.server.php?action=stats&amp;amp;auth=5577f70e9eed2ba5d14a45dc5aac4328&amp;amp;limit=40&amp;amp;username=pascal&amp;amp;type=album&amp;amp;filter=random&amp;amp;offset=0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;&lt;code&gt;https://your_server_url/apps/music/ampache/server/json.server.php?action=stats&amp;amp;auth=5577f70e9eed2ba5d14a45dc5aac4328&amp;amp;limit=40&amp;amp;username=pascal&amp;amp;type=album&amp;amp;filter=random&amp;amp;offset=0&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;(en utilisant un token &lt;code&gt;auth&lt;/code&gt; valide), je devais avoir une réponse avec une autre URL pour la clef &lt;code&gt;art&lt;/code&gt;., qu&amp;rsquo;il me suffisait alors de tester : si j&amp;rsquo;obtenais la pochette, alors tout était bon côté Nextcloud Music.&lt;/p&gt;&#xA;&lt;p&gt;Pour obtenir un token valide, il me suffisait de me connecter avec Ampache tout en affichant les logs de nginx. Exemple :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@odroidhc2# cd /srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/log/nginx#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@odroidhc2# tail -f access.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.126 - - &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;30/Jul/2024:17:01:12 +0200&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;GET /apps/music/ampache/server/json.server.php?action=stats&amp;amp;auth=d41a91089dcxxxxxxxxxxxx&amp;amp;limit=40&amp;amp;username=pascal&amp;amp;type=album&amp;amp;filter=newest&amp;amp;offset=0 HTTP/1.1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3298&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PowerAmpache2-1.00-62-fdroid&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il me suffisait alors d&amp;rsquo;utiliser &lt;code&gt;auth=d41a91089dcxxxxxxxxxxxx&lt;/code&gt; dans l&amp;rsquo;URL indiquée par le dev de Music pour pouvoir la tester. Et j&amp;rsquo;obtenais bien une autre URL &amp;ldquo;art&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;368px&#34; data-flex-grow=&#34;153&#34; height=&#34;521&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-07-08-09-40-49.png&#34; width=&#34;799&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et l&amp;rsquo;URL m&amp;rsquo;affichait bien la pochette ! Voilà, je laisse cette info ici car cela peut servir pour tester le fonctionnement de Nextcloud Music.&lt;/p&gt;&#xA;&lt;p&gt;En fait le problème venait tout bêtement de ma config réseau. Lorsque j&amp;rsquo;avais mis en place mes containers Nextcloud-Mariadb-Swag, pour des conflits de ports entre Nextcloud et Swag, j&amp;rsquo;avais du rediriger le port 443 vers le 444 entre la box et le proxy :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;782px&#34; data-flex-grow=&#34;326&#34; height=&#34;368&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/network1.png&#34; srcset=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/network1_hu_c95e4005a8963322.png 800w, https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/network1.png 1200w&#34; width=&#34;1200&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce qui m&amp;rsquo;obligeait, quand j&amp;rsquo;étais à la maison, à définir le port 444 à la fin de l&amp;rsquo;URL pour accéder à mes services, et qui compliquait inutilement les choses. J&amp;rsquo;avais fait ça, je crois, parce que dans ma stack Nextcloud, je définissais le port 443, et que je faisais de même dans la stack Swag, j&amp;rsquo;avais alors un conflit de port au démarrage des containers et cela ne fonctionnait pas.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;---&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2.1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;services&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;nextcloud&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;ports&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;swag&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;ports&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En fait la solution était toute simple : ne rien spécifier pour Nextcloud (supprimer la déclaration &amp;ldquo;ports&amp;rdquo;), le port https par défaut étant 443 et dès lors tout démarrait sans erreur et fonctionnait sur toute la chaîne sur le port 443 (j&amp;rsquo;ai bien sûr modifié le routeur de la box et aussi le fichier de configuration Nextcloud : &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/www/nextcloud/config/config.php&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trusted_domains&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  array &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    0 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;192.168.1.30:443&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    1 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nextcloud.xxx.pled.fr&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et me voilà de retour à une configuration plus standard et moins problématique.&lt;/p&gt;&#xA;&lt;p&gt;Dès lors, Power Ampache 2 affichait bien mes pochettes (si tant est qu&amp;rsquo;elles étaient fournies par mes fichiers audio), et tout fonctionnait à merveille : je pouvais enfin &amp;ldquo;streamer&amp;rdquo; ma propre musique en allant me promener ! :cool:&lt;/p&gt;&#xA;&lt;h3 id=&#34;playlists&#34;&gt;Playlists&#xA;&lt;/h3&gt;&lt;p&gt;Reste à gérer mes playlists ! Comme je l&amp;rsquo;expliquais plus haut, elles viennent de Rhythmbox sur mon PC, et sont chacune dans un dossier spécifique qui contient tous les titres (pas de playlist dynamique réunissant X titres provenant de Y dossiers. Je n&amp;rsquo;utilise donc pas de fichier de type &lt;code&gt;m3u&lt;/code&gt; par défaut. Même les playlists de Rhythmbox créées au fil des écoutes et contenant donc des chemins absolus vers différents dossiers, j&amp;rsquo;ai fini par les transformer en dossier &amp;ldquo;playlist&amp;rdquo; : cela duplique les-dits morceaux, mais cela simplifie largement le passage des playlists vers &lt;strong&gt;Volumio&lt;/strong&gt; : en effet il est très facile via l&amp;rsquo;interface web de Volumio de sélectionner un dossier et de choisir &amp;ldquo;Ajouter à la playlist&amp;rdquo; puis d&amp;rsquo;en créer une nouvelle. De cette façon, j&amp;rsquo;ai pu recréer très facilement mes playlists de Rhythmbox.&lt;/p&gt;&#xA;&lt;p&gt;Or, l&amp;rsquo;API Ampache, comme me l&amp;rsquo;a confirmé le développeur, ne propose pas de vue par dossier. Elle propose par contre les Playlists que l&amp;rsquo;on crée à partir de NC Music. Heureusement, NC Music permet non seulement de créer des Playlists, mais propose aussi une vue &amp;ldquo;Dossier&amp;rdquo; : il suffit donc de créer une nouvelle playlist, puis de passer en vue &amp;ldquo;Dossier&amp;rdquo;, et de faire un &amp;ldquo;glisser-déposer&amp;rdquo; du nom du dossier sur celui de la playlist, et le tour est joué ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;Par contre, si l&amp;rsquo;on souhaite avoir les pochettes dans cette configuration, il va falloir intégrer chacune d&amp;rsquo;entre elles dans le fichier &lt;code&gt;.mp3&lt;/code&gt; ou &lt;code&gt;.ogg&lt;/code&gt; s&amp;rsquo;il ne la contient pas déjà. Dans ce cas, je l&amp;rsquo;ajoute avec &lt;a class=&#34;link&#34; href=&#34;https://docs.puddletag.net/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Puddletag&lt;/a&gt; (mais ce ne sont pas éditeurs de tags qui manquent) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;502px&#34; data-flex-grow=&#34;209&#34; height=&#34;302&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/Capture-decran-du-2024-08-02-18-44-40.png&#34; width=&#34;632&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Voilà, cela n&amp;rsquo; a pas été de tout repos, mais finalement c&amp;rsquo;est assez simple, hormis les deux problèmes rencontrés :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;l&amp;rsquo;un était du à l&amp;rsquo;absence d&amp;rsquo;une directive de &lt;strong&gt;rewrite&lt;/strong&gt; dans le fichier de configuration du proxy serveur, pourtant marquée comme &amp;ldquo;required for legacy&amp;rdquo;. Un problème sans doute lié à la configuration par défaut proposée par le container &lt;strong&gt;Swag&lt;/strong&gt;. Celui-là n&amp;rsquo;était pas simple à résoudre.&lt;/li&gt;&#xA;&lt;li&gt;Le deuxième, celui des pochettes était du à ma configuration et j&amp;rsquo;aurais du y penser tout de suite. En fait, je testais tout à partir de mon LAN, ayant remis à plus tard son utilisation depuis l&amp;rsquo;extérieur en attendant que tout fonctionne : en l&amp;rsquo;utilisant hors de la maison, j&amp;rsquo;aurais vu les pochettes arriver, et j&amp;rsquo;aurais rapidement fait le lien ! Finalement, cela m&amp;rsquo;a forcé à corriger ce problème de config avec le port 443 et les deux containers pointant dessus, ce qui est une bonne chose, cela m&amp;rsquo;avait déjà posé des contraintes avec d&amp;rsquo;autres applications (Joplin).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;En dehors de ces deux points, il m&amp;rsquo;a fallu mettre à jour mon instance Nextcloud, afin de bénéficier de Music 2.0.0. L&amp;rsquo;occasion de vérifier que la mise à jour via leur interface est plutôt fiable et robuste (mais un problème peut toujours survenir !). Tout est parfaitement détaillé &lt;a class=&#34;link&#34; href=&#34;https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;sur cette page&lt;/a&gt; (bravo à la qualité de la documentation Nextcloud).&lt;/p&gt;&#xA;&lt;p&gt;Enfin, pour rappel, voilà les tickets Github que j&amp;rsquo;ai créé soit pour demander de l&amp;rsquo;aide, soit pour signaler ce que je croyais être un bug, ou encore pour signaler qu&amp;rsquo;une mise à jour de la doc était nécessaire :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Trust Anchor - Ampache : &lt;a class=&#34;link&#34; href=&#34;https://github.com/ampache/ampache/issues/3973&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/ampache/ampache/issues/3973&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;No cover - NC Music : &lt;a class=&#34;link&#34; href=&#34;https://github.com/owncloud/music/issues/1156&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/owncloud/music/issues/1156&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;No cover - Power Ampache : &lt;a class=&#34;link&#34; href=&#34;https://github.com/icefields/Power-Ampache-2/issues/136&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/icefields/Power-Ampache-2/issues/13&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;NC Music documentation : &lt;a class=&#34;link&#34; href=&#34;https://github.com/nextcloud/documentation/issues/11951&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/nextcloud/documentation/issues/11951&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Et encore merci à tous ces devs qui m&amp;rsquo;ont aidé à investiguer ce problème, ils ont tous été vraiment super !&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Homepage, pour un beau tableau de bord (dashboard)</title>
            <link>https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/</link>
            <pubDate>Sat, 08 Jun 2024 15:33:21 +0000</pubDate>
            <guid>https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;homepage.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est sur une discussion reddit que j&amp;rsquo;ai vu une belle image de &amp;ldquo;dashboard&amp;rdquo;, et renseignements pris, il s&amp;rsquo;agissait de &lt;a class=&#34;link&#34; href=&#34;https://gethomepage.dev/latest/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Homepage&lt;/a&gt;. Cela m&amp;rsquo;a paru sympa, et pratique pour avoir une vue globale des différents services/applications qui tournent sur mon réseau local et/ou sur mon hébergeur.&lt;/p&gt;&#xA;&lt;p&gt;Disponible en container Docker (mais aussi pour Unraid ou Kubernetes), Homepage est facile à installer. Il suffit ensuite d&amp;rsquo;y déclarer ses services, avec pas mal de choses bien pensées qui facilitent leur supervision : que ce soit un container Docker, ou une application pour laquelle un widget est disponible (une centaine d&amp;rsquo;applications sont listées). Si aucune de ces deux conditions ne sont réunies, il sera toujours possible d&amp;rsquo;afficher un simple lien et la disponibilité du service.&lt;/p&gt;&#xA;&lt;p&gt;On peut aussi y ajouter de simples liens vers des sites de son choix via le fichier &lt;code&gt;bookmarks.yalm&lt;/code&gt;, une barre de recherche pointant sur le moteur de son choix, ou encore les ressources de la machine (cpu, mémoire, disk). Bref, de quoi se configurer un beau tableau de bord !&lt;/p&gt;&#xA;&lt;p&gt;Une fois installé et configuré, cela peut donner un truc comme ça :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;344px&#34; data-flex-grow=&#34;143&#34; height=&#34;944&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/Capture-decran-du-2024-06-08-11-36-15.png&#34; srcset=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/Capture-decran-du-2024-06-08-11-36-15_hu_9e63bfbaaa1fec7a.png 800w, https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/Capture-decran-du-2024-06-08-11-36-15.png 1356w&#34; width=&#34;1356&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voyons ça de plus près&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;installation&#34;&gt;Installation&#xA;&lt;/h3&gt;&lt;p&gt;À noter tout de même l&amp;rsquo;avertissement de sécurité :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;766px&#34; data-flex-grow=&#34;319&#34; height=&#34;181&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/Capture-decran-du-2024-06-07-10-28-31.png&#34; width=&#34;578&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Homepage n&amp;rsquo;inclut pas de couche d&amp;rsquo;authentification, mais permet via ses widgets d&amp;rsquo;accéder à des informations personnelles. Il est donc recommandé de ne pas l&amp;rsquo;exposer sans être protégé par un proxy incluant authentification, SSL, etc.. ou derrière un VPN. En ce qui me concerne, rien ne sera exposé, je prévois de ne l&amp;rsquo;utiliser qu&amp;rsquo;en local.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai choisi l&amp;rsquo;installation en mode Docker, via un container. La documentation est &lt;a class=&#34;link&#34; href=&#34;https://gethomepage.dev/installation/docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;en ai profité pour utiliser l&amp;rsquo;interface d&amp;rsquo;OMV 7 pour créer le fichier &lt;code&gt;compose&lt;/code&gt;. Il suffit d&amp;rsquo;aller dans Services - Fichiers, puis de créer le fichier en question :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;584px&#34; data-flex-grow=&#34;243&#34; height=&#34;249&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/Capture-decran-du-2024-06-07-10-13-24.png&#34; width=&#34;606&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Le contenu du fichier est comme suit, en ayant créé le dossier &lt;code&gt;homepage&lt;/code&gt; dans AppData auparavant, comme indiqué :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# https://github.com/benphelps/homepage&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;homepage&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ghcr.io/gethomepage/homepage:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;homepage&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;3000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;3000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-label-DATA/AppData/homepage:/app/config&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Make sure your local config directory exists&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/var/run/docker.sock:/var/run/docker.sock&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# (optional) For docker integrations&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: la ligne concernant &lt;code&gt;docker.sock&lt;/code&gt; va permettre d&amp;rsquo;accéder directement aux containers lors de la configuration des services de type docker.&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à cliquer sur le bouton &amp;ldquo;Up&amp;rdquo; dans l&amp;rsquo;interface d&amp;rsquo;OMV. Le service est désormais accessible à l&amp;rsquo;adresse d&amp;rsquo;OMV sur le port 3000 (ou celui de votre choix défini ci-dessus).&lt;/p&gt;&#xA;&lt;h3 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h3&gt;&lt;p&gt;La documentation se trouve &lt;a class=&#34;link&#34; href=&#34;https://gethomepage.dev/configs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;. C&amp;rsquo;est assez simple et bien expliqué. On déclare et configure les services dans un fichier &lt;code&gt;services.yaml&lt;/code&gt;, les liens dans un fichier &lt;code&gt;bookmarks.yalm&lt;/code&gt;, les réglages généraux sont dans un fichier &lt;code&gt;settings.yaml&lt;/code&gt;, etc&amp;hellip; Tous ces fichiers se trouvent dans &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/homepage&lt;/code&gt; (selon fichier compose ci-dessus).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# pwd&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/srv/dev-disk-by-label-DATA/AppData/homepage&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# ls&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bookmarks.yaml  custom.js    kubernetes.yaml  services.yaml       settings.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;custom.css      docker.yaml  logs             services.yaml.good  widgets.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il y a beaucoup de possibilités, il suffit de parcourir toutes les options et d&amp;rsquo;appliquer les exemples fournis. Ou de chercher en cas de besoin spécifique.&lt;/p&gt;&#xA;&lt;h3 id=&#34;les-widgets&#34;&gt;Les Widgets&#xA;&lt;/h3&gt;&lt;p&gt;Le plus intéressant, ce sont donc les widgets disponibles pour une centaine de services (dans mon cas OMV, Portainer, Plex, Nextcloud, qBittorrent, Pihole), souvent à travers un &amp;ldquo;web service&amp;rdquo; ou une API. Exemple pour Nextcloud :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;690px&#34; data-flex-grow=&#34;287&#34; height=&#34;144&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/widget-2.png&#34; width=&#34;414&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;NOTE: pour afficher ces champs par défaut (sans avoir à cliquer sur le service), ajouter &lt;code&gt;showStats: true&lt;/code&gt; dans le fichier &lt;code&gt;settings.yaml&lt;/code&gt; (sinon le définir au niveau de chaque service). Par défaut, tous les champs disponibles seront affichés, sinon on les définit avec la propriété &lt;code&gt;fields&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;docker-socket&#34;&gt;Docker socket&#xA;&lt;/h3&gt;&lt;p&gt;D&amp;rsquo;autres informations seront renvoyées par l&amp;rsquo;accès au container via la socket Docker.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;794px&#34; data-flex-grow=&#34;330&#34; height=&#34;126&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/socket.png&#34; width=&#34;417&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;nextcloud&#34;&gt;Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;On obtient donc ceci :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;505px&#34; data-flex-grow=&#34;210&#34; height=&#34;198&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/Capture-decran-du-2024-06-08-16-19-38.png&#34; width=&#34;417&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà la définition complète pour mon serveur Nextcloud dans le fichiers &lt;code&gt;services.yaml&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;Nextcloud&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;icon&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nextcloud.png&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;href&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;https://nextcloud.xxxxx.yyyy.fr/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;description&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Serveur Nextcloud&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;server&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;my-docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;container&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nextcloud2023&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;widget&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nextcloud&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;url&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;https://nextcloud.xxxxx.yyyy.fr/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;key&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;SZzC2-sFH3Q-jY2Eg-AaFMk-zzzzz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour générer la clef (key) ou le &amp;ldquo;NC-Token&amp;rdquo;, il faut aller dans l&amp;rsquo;interface Nextcloud, Paramètres personnels - Sécurité, puis en bas de la page cliquer sur &amp;ldquo;Créer un nouveau mot de passe d&amp;rsquo;application&amp;rdquo;. Après s&amp;rsquo;être identifié, un token vous est proposé qu&amp;rsquo;il faudra copier car une fois cliqué sur Terminé, il ne sera plus jamais affiché.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;632px&#34; data-flex-grow=&#34;263&#34; height=&#34;206&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/Capture-decran-du-2024-06-07-11-10-58-1.png&#34; width=&#34;543&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut ensuite le définir au niveau système ; pour ce faire, j&amp;rsquo;accède au mode console du container grâce à &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=20704&#34; &gt;Dockge&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;466px&#34; data-flex-grow=&#34;194&#34; height=&#34;309&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/homepage-pour-un-beau-tableau-de-bord-dashboard/bash-1.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis je tape la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@0e47f46ce787:/# occ config:app:set serverinfo token --value vvvvv-wwwww-xxxxx-yyyyy-zzzzz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Config value token &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; app serverinfo set to vvvvv-wwwww-xxxxx-yyyyy-zzzzz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@0e47f46ce787:/#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, le container Nextcloud est configuré ! Je vous laisse découvrir la liste des widgets disponibles et leur syntaxe sur &lt;a class=&#34;link&#34; href=&#34;https://gethomepage.dev/widgets/services/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la page de documentation&lt;/a&gt;. Il y a aussi des widgets de type &amp;ldquo;info&amp;rdquo; capables d&amp;rsquo;afficher les ressources système ou les infos météo, ou ajouter une barre de recherche&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;portainer&#34;&gt;Portainer&#xA;&lt;/h3&gt;&lt;p&gt;Pour Portainer, il faudra faire deux choses :&lt;/p&gt;&#xA;&lt;p&gt;Identifier l&amp;rsquo;environnement : via l&amp;rsquo;interface, aller dans environnement, puis le sélectionner (&amp;ldquo;local&amp;rdquo; par défaut) et observer l&amp;rsquo;URL du navigateur. Dans mon cas, c&amp;rsquo;était &lt;a class=&#34;link&#34; href=&#34;http://192.168.1.30:9000/#!/endpoints/2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;http://192.168.1.30:9000/#!/endpoints/2&lt;/a&gt;, l&amp;rsquo;ID à utiliser est donc 2.&lt;/p&gt;&#xA;&lt;p&gt;I va aussi falloir générer une clef. Toujours dans l&amp;rsquo;interface de Portainer, cliquer en haut à droite sur &amp;ldquo;my account&amp;rdquo;, puis dans &amp;ldquo;Access tokens&amp;rdquo; choisir &amp;ldquo;Add Access token&amp;rdquo;. Une fois le token affiché, on le copie et on l&amp;rsquo;ajoute au service défini dans &lt;code&gt;services.yaml&lt;/code&gt;. Qui est comme suit :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;Portainer&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;icon&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;portainer.png&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;href&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://192.168.1.30:9000/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;description&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Portainer, gestion de container Docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;server&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;my-docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;container&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;portainer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;widget&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;portainer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;url&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://192.168.1.30:9000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;env&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;key&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ptr_accesskeyaccesskeyaccesskeyaccesskey&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;ping-et-statusstyle&#34;&gt;Ping et statusStyle&#xA;&lt;/h3&gt;&lt;p&gt;On peut aussi vérifier la disponibilité d&amp;rsquo;un service non docker avec une fonction de &lt;code&gt;ping&lt;/code&gt; (OMV, Pihole, Volumio) et &lt;code&gt;statusStyle&lt;/code&gt; pour le format d&amp;rsquo;affichage. Exemple avec Pihole :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;Pihole&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;icon&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;pi-hole.png&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;href&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://192.168.1.17:8080/admin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;description&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Pihole, bloqueur de pubs et DHCP Serveur&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;ping&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://192.168.1.17:8080&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;statusStyle&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dot&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;widget&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;pihole&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;url&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http://192.168.1.17:8080/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;#version: 6 # required if running v6 or higher, defaults to 5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;key&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;yourpiholeapikey&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# optional&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Après avoir mis à jour mon Pihole à la dernière version soit la 5.18.2 (juin 2024), j&amp;rsquo;ai du renseigner l&amp;rsquo;API key, sinon je n&amp;rsquo;obtenais pas les valeurs.&lt;br&gt;&#xA;On la trouve facilement via l&amp;rsquo;interface de Pihole, dans Settings-API, bouton &amp;ldquo;Show API token&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;La version 6 n&amp;rsquo;est pour l&amp;rsquo;instant disponible qu&amp;rsquo;en status &amp;ldquo;beta&amp;rdquo;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;les-icônes&#34;&gt;Les icônes&#xA;&lt;/h3&gt;&lt;p&gt;Autre truc sympa : les icônes sont automatiquement retrouvées depuis &lt;a class=&#34;link&#34; href=&#34;https://github.com/walkxcode/dashboard-icons&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Dashboard Icons&lt;/a&gt;, il ne suffit plus dès lors qu&amp;rsquo;à un indiquer le nom du fichier comme &lt;code&gt;nextcloud.png&lt;/code&gt;, et Homepage se débrouille du reste. Les autres options (material design, local, etc&amp;hellip;) sont détaillées &lt;a class=&#34;link&#34; href=&#34;https://gethomepage.dev/configs/services/#descriptions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Pour utiliser des icônes locales, il faut monter un nouveau volume &lt;code&gt;/app/public/icons&lt;/code&gt; dans le fichier &lt;code&gt;compose.yaml&lt;/code&gt; (et créer le dossier correspondant) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-label-DATA/AppData/homepage/icons:/app/public/icons&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;et référencer les icônes ainsi dans le fichier services.yaml : &lt;code&gt;icon: /icons/myicon.png&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;C&amp;rsquo;est vraiment très pratique de pouvoir tout avoir sur une page, de visualiser si les services sont bien Up, de pouvoir accéder d&amp;rsquo;un click au service de son choix pour un besoin quelconque.&lt;/p&gt;&#xA;&lt;p&gt;Pour ma part, j&amp;rsquo;ai viré la barre de recherche présente par défaut, laissé les infos système en haut de page, et ajouté mes containers, ainsi qu&amp;rsquo;OMV, Pihole et Dockge. Dommage que ce dernier ne fasse pas partie de la liste des 100 services pour lesquels un widget a été prévu, je n&amp;rsquo;ai donc que les infos fournies par la socket Docker. Enfin j&amp;rsquo;ai ajouté des liens vers les services qui tournent sur mon hébergeur.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Dockge - Gestion des containers Docker</title>
            <link>https://pled.fr/dockge-gestion-des-container-docker/</link>
            <pubDate>Mon, 03 Jun 2024 07:39:49 +0000</pubDate>
            <guid>https://pled.fr/dockge-gestion-des-container-docker/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;dockge.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je suis tombé sur cet outil un peu par hasard, et comme je n&amp;rsquo;étais pas satisfait des possibilités offertes par les interfaces de OMV7 ou de Portainer, j&amp;rsquo;ai testé (et adopté) &lt;strong&gt;Dockge&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/louislam/dockge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Dockge&lt;/a&gt; est un gestionnaire de stack Docker, orienté &lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/compose/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Docker Compose&lt;/a&gt; (fichier &lt;code&gt;compose.yaml&lt;/code&gt;). En gros, cela permet de configurer plusieurs containers dans un seul fichier, comme j&amp;rsquo;ai du le faire pour Nextcloud (qui utilise Nextcloud, une base de données Mariadb et un serveur proxy Swag, voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;cet article&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Quand on utilise des containers simples (une application pour un container), ce n&amp;rsquo;est pas forcément utile d&amp;rsquo;utiliser Docker Compose, un simple script avec une commande &lt;code&gt;docker run&lt;/code&gt; suffit, comme je l&amp;rsquo;ai fait pour mes autres services (plex, qbittorrent). Mais rien ne l&amp;rsquo;empêche non plus.&lt;/p&gt;&#xA;&lt;p&gt;Et du coup, j&amp;rsquo;ai tout passé sous Dockge, car son interface est à la fois simple et complète : on peut arrêter, redémarrer, voir les logs, accéder au shell, éditer le fichier compose.yaml, et même (last but not least) effectuer une mise à jour ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;343px&#34; data-flex-grow=&#34;143&#34; height=&#34;945&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/dockge-gestion-des-container-docker/Capture-decran-du-2024-06-02-11-16-07.png&#34; srcset=&#34;https://pled.fr/dockge-gestion-des-container-docker/Capture-decran-du-2024-06-02-11-16-07_hu_90ec775fd772e444.png 800w, https://pled.fr/dockge-gestion-des-container-docker/Capture-decran-du-2024-06-02-11-16-07.png 1352w&#34; width=&#34;1352&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà comment je l&amp;rsquo;ai installé et configuré.&lt;/p&gt;&#xA;&lt;h3 id=&#34;installation&#34;&gt;Installation&#xA;&lt;/h3&gt;&lt;p&gt;L&amp;rsquo;installation est simplissime. On se connecte sur la machine (mon odroid-hc2 en l&amp;rsquo;occurence) où tournent les containers docker, et on suit les étapes : Création des répertoires pour nos stacks et celle de Dockge, téléchargement du fichier pour le container Dockge, et démarrage :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-bahs&#34; data-lang=&#34;bahs&#34;&gt;$ su&#xA;# mkdir -p /opt/stacks /opt/dockge&#xA;# cd /opt/dockge&#xA;#&#xA;# curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml&#xA;#&#xA;# docker compose up -d&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Voilà, l&amp;rsquo;application Dockge tourne sur http://localhost:5001. Difficile de faire plus simple.&lt;/p&gt;&#xA;&lt;h3 id=&#34;importer-ou-créer-les-containers-existants&#34;&gt;Importer ou créer les containers existants&#xA;&lt;/h3&gt;&lt;p&gt;Pour Nextcloud, ayant déjà utilisé une stack (et donc un fichier compose), il a suffit d&amp;rsquo;arrêter l&amp;rsquo;application (i.e. le container, via Portainer par exemple, puisque l&amp;rsquo;interface d&amp;rsquo;OMV ne permet qu&amp;rsquo;un redémarrage), puis &amp;ldquo;d&amp;rsquo;importer&amp;rdquo; le fichier dans Dockge :&lt;/p&gt;&#xA;&lt;p&gt;Pour cela, aller dans Portainer - Stack, sélectionner Nextcloud, aller dans l&amp;rsquo;onglet Editor, et copier le contenu dans un fichier que l&amp;rsquo;on appellera &lt;code&gt;compose.yaml&lt;/code&gt;. Sur la machine, on crée alors un dossier pour le service, et on y copie le fichier que l&amp;rsquo;on aura transféré auparavant sur la machine :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-bahs&#34; data-lang=&#34;bahs&#34;&gt;$ su&#xA;# mkdir /opt/stacks/nextcloud&#xA;# cp /home/pascal/compose.yaml /opt/stacks/netxcloud/compose.yaml&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Il suffit alors de recharger la page de Dockge pour voir le service Nextcloud apparaître, il ne reste plus qu&amp;rsquo;à le démarrer.&lt;/p&gt;&#xA;&lt;p&gt;Pour mes deux autres services, je n&amp;rsquo;avais pas utilisé de stack, mais un simple script utilisant &lt;code&gt;docker run&lt;/code&gt;. J&amp;rsquo;ai donc du créer un fichier &lt;code&gt;compose.yaml&lt;/code&gt; pour chacun, et cela m&amp;rsquo;a permis de découvrir deux choses.&lt;/p&gt;&#xA;&lt;h4 id=&#34;plex&#34;&gt;Plex&#xA;&lt;/h4&gt;&lt;p&gt;Pour Plex, j&amp;rsquo;ai arrêté l&amp;rsquo;application via Portainer, créé le fichier &lt;code&gt;compose.yaml&lt;/code&gt; comme indiqué sur &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/images/docker-plex/#arm-devices&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la documentation&lt;/a&gt;, puis copié dans &lt;code&gt;/opt/stacks/plex&lt;/code&gt;. En démarrant Plex, j&amp;rsquo;ai vu ce message concernant la mise à jour qui m&amp;rsquo;a intrigué :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;646px&#34; data-flex-grow=&#34;269&#34; height=&#34;284&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/dockge-gestion-des-container-docker/Capture-decran-du-2024-06-02-16-14-00.png&#34; width=&#34;765&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme quoi une interface bien pensée peut être utile ! En allant voir sur le site du container, j&amp;rsquo;ai alors vu que l&amp;rsquo;architecture armv7l (x32) de mon bon vieux odroid-hc2 n&amp;rsquo;était plus supportée :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;417px&#34; data-flex-grow=&#34;173&#34; height=&#34;261&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/dockge-gestion-des-container-docker/Capture-decran-du-2024-06-02-16-15-33.png&#34; width=&#34;454&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après quelques recherches, la décision sur linuxserver.io de ne plus supporter cette architecture a été &lt;a class=&#34;link&#34; href=&#34;https://www.linuxserver.io/blog/end-of-an-arch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;clairement annoncé&lt;/a&gt; dès mai 2022. Et de fait, le support est terminé &lt;a class=&#34;link&#34; href=&#34;https://www.linuxserver.io/blog/a-farewell-to-arm-hf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;depuis juillet 2023&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ce qui veut dire que l&amp;rsquo;odroid-hc2 acheté il y a quatre ans va devenir compliqué à mettre à jour. C&amp;rsquo;est de ma faute, j&amp;rsquo;avais oublié de vérifier ce point en l&amp;rsquo;achetant, les architectures 32 bits sont obsolètes, les constructeurs devraient les avoir abandonnées depuis longtemps.&lt;/p&gt;&#xA;&lt;p&gt;Bref, tant que tout fonctionne, je vais faire durer la situation tant que possible. Mais je peux déjà engager une réflexion sur mon prochain NAS, ce sera peut-être un miniPC avec par exemple un processeur Intel N100 qui offre avec le Quick Sync un meilleur décodage vidéo, chose importante pour Plex, et un point faible que j&amp;rsquo;ai observé avec l&amp;rsquo;odroid-hc2. Voir &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video#Hardware_decoding_and_encoding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt; intéressante pour choisir une plateforme Intel. Ces infos viennent d&amp;rsquo;une &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/france/comments/1d35m2e/mercredi_tech_20240529/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;discussion à ce propos sur reddit&lt;/a&gt; la semaine dernière (premier sujet).&lt;/p&gt;&#xA;&lt;h4 id=&#34;qbittorrent&#34;&gt;Qbittorrent&#xA;&lt;/h4&gt;&lt;p&gt;Pour Qbittorrent, ça a été un peu différent. J&amp;rsquo;avais déjà eu du mal à trouver un container alliant qbittorrent et openvpn pour mon architecture (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17202&#34; &gt;cet article&lt;/a&gt;) : j&amp;rsquo;ai un compte Mullvad et souhaite utiliser OpenVPN pour m&amp;rsquo;y connecter.&lt;/p&gt;&#xA;&lt;p&gt;Le site est &lt;a class=&#34;link&#34; href=&#34;https://github.com/chrisjohnson00/docker-qBittorrentvpn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;, et comme le mentionne Chris, il propose bien une version multi-architecture. Hélas, il ne propose que la commande &lt;code&gt;docker run&lt;/code&gt; pour créer le container.&lt;/p&gt;&#xA;&lt;p&gt;Et je n&amp;rsquo;avais pas réussi à l&amp;rsquo;époque à créer un fichier compose valide dans Portainer, avec une erreur au démarrage &amp;quot; &lt;code&gt;Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)&lt;/code&gt;&amp;quot; probablement due à l&amp;rsquo;option &amp;quot; &lt;code&gt;--priviledged -d&lt;/code&gt;&amp;quot; utilisée avec &lt;code&gt;docker run&lt;/code&gt; que je n&amp;rsquo;arrivais pas à définir dans le fichier compose.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai recréé un fichier compose à partir de mes notes de l&amp;rsquo;époque, et tenté de le faire fonctionner avec Dockge. Après quelques tentatives et modifications, j&amp;rsquo;ai finalement réussi à en créer un de valide :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;version: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;services:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  qbittorrent-openvpn:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    image: chrisjohnson00/qbittorrent-openvpn:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    container_name: qb-openvpn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    privileged: true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sysctls:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - net.ipv6.conf.all.disable_ipv6&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    volumes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/Download:/downloads&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/AppData/Qbittorrent:/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    environment:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - VPN_ENABLED&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;yes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - LAN_NETWORK&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.1.0/24&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - NAME_SERVERS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;8.8.8.8,8.8.4.4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - VPN_USERNAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xxxxxxx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - VPN_PASSWORD&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;yyyyyyy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PUID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PGID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - WEBUI_PORT_ENV&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - INCOMING_PORT_ENV&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;8999&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ports:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 8080:8080&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 8999:8999&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 8999:8999/udp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    restart: unless-stopped&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et cerise sur le gâteau, au premier démarrage, le container est allé chercher le dernière version automatiquement ! Ce qui m&amp;rsquo;a permis de tester avec succès cette fonctionnalité extrêmement pratique.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, j&amp;rsquo;ai une interface pour les containers Docker qui semble complète. Elle s&amp;rsquo;appuie sur Docker, il faut donc que Docker tourne bien sûr ! Mais pour le reste, elle répond bien aux besoins que l&amp;rsquo;on peut avoir, de façon simple et efficace.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Mise à jour openmediavault v5 vers v7</title>
            <link>https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/</link>
            <pubDate>Tue, 19 Mar 2024 17:50:46 +0000</pubDate>
            <guid>https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;omv.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Le temps passe vite en informatique, et la durée de vie des produits ou du matériel encore plus.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais acheté mon Odroid-HC2 et installé OMV V5 en 2020. Quatre ans plus tard, si tout fonctionne encore, je recevais quotidiennement des mails m&amp;rsquo;informant que la mise à jour système avait échouée :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT RUN &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;/etc/cron-apt/config&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;: Tue Mar  &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; 07:05:30 CET &lt;span style=&#34;color:#ae81ff&#34;&gt;2024&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT SLEEP: 2353, Tue Mar  &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; 07:44:43 CET &lt;span style=&#34;color:#ae81ff&#34;&gt;2024&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT ACTION: 0-update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT LINE: /usr/bin/apt-get  update -o quiet&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: The repository &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://apt.armbian.com buster Release&amp;#39;&lt;/span&gt; does not have a Release file.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En regardant tout ça de plus près, je me suis rendu compte que plus rien n&amp;rsquo;était supporté : ni le matériel, ni l&amp;rsquo;OS, pas plus que la version d&amp;rsquo;OpenMediaVault ! Il était temps de faire quelque chose&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;obsolescence&#34;&gt;Obsolescence&#xA;&lt;/h3&gt;&lt;p&gt;Je vois que &lt;a class=&#34;link&#34; href=&#34;https://mirror.vinehost.net/armbian/apt/dists/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;le dépot &lt;code&gt;armbian&lt;/code&gt;&lt;/a&gt; pour Buster (soit Debian 10) n&amp;rsquo;existe effectivement plus. Une petite vérification côté Debian me montre que la version Buster ne sera plus supporté le 20 juin 2024. Les équipes d&amp;rsquo; &lt;strong&gt;armbian&lt;/strong&gt; ont donc juste un peu d&amp;rsquo;avance, sans doute parce que leurs ressources sont limitées.&lt;/p&gt;&#xA;&lt;p&gt;Rien d&amp;rsquo;alarmant, je pourrais rester en l&amp;rsquo;état (tant que ça marche&amp;hellip;), mais ce n&amp;rsquo;est jamais une très bonne solution, je fais donc un peu de recherches complémentaires. Et je m&amp;rsquo;aperçois qu&amp;rsquo;OMV5 est également passé en &lt;strong&gt;E&lt;/strong&gt; nd &lt;strong&gt;O&lt;/strong&gt; f &lt;strong&gt;L&lt;/strong&gt; ife depuis juin 2022.&lt;/p&gt;&#xA;&lt;p&gt;Côté matériel, ce n&amp;rsquo;est pas mieux : ma carte Odroid-HC2 est elle aussi passée en &amp;ldquo;Obsoleted Product&amp;rdquo;, et il n&amp;rsquo;y a plus d&amp;rsquo;images de fournies pour Debian v11 ou même v12&amp;hellip; &lt;a class=&#34;link&#34; href=&#34;https://www.armbian.com/download/?device_support=Standard%20support&amp;amp;arch=armhf&amp;amp;__year=2015-2020&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;La page armbian&lt;/a&gt; n&amp;rsquo;affiche même plus de modèles Odroid pour une architecture armhf ! Je vous le dis, le temps passe vite et en 4 ans, plus rien n&amp;rsquo;est supporté ! :eek:&lt;/p&gt;&#xA;&lt;p&gt;Ma seule option est alors de faire une mise à jour d&amp;rsquo;OMV5 vers OMV6 pour passer à Debian 11.&lt;/p&gt;&#xA;&lt;h3 id=&#34;suppression-des-mails&#34;&gt;Suppression des mails&#xA;&lt;/h3&gt;&lt;p&gt;Mais dans un premier temps, comme cela me fatiguait de recevoir un mail d&amp;rsquo;erreur tous les matins, j&amp;rsquo;ai commencé par mettre en commentaire le lien pointant sur le dépôt en question dans le fichier &lt;code&gt;/etc/apt/sources.list.d/armbian.list&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat /etc/apt/sources.list.d/armbian.list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# deb http://apt.armbian.com buster main buster-utils buster-desktop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cela a fonctionné, mais j&amp;rsquo;ai alors reçu un autre mail quotidien concernant le dépôt de plugins :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT RUN &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;/etc/cron-apt/config&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;: Sun Mar &lt;span style=&#34;color:#ae81ff&#34;&gt;17&lt;/span&gt; 07:37:59 CET &lt;span style=&#34;color:#ae81ff&#34;&gt;2024&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT SLEEP: 1502, Sun Mar &lt;span style=&#34;color:#ae81ff&#34;&gt;17&lt;/span&gt; 08:03:01 CET &lt;span style=&#34;color:#ae81ff&#34;&gt;2024&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT ACTION: 0-update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT LINE: /usr/bin/apt-get  update -o quiet&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: The repository &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://dl.bintray.com/openmediavault-plugin-developers/usul buster Release&amp;#39;&lt;/span&gt; does not have a Release file.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et donc même façon de résoudre le problème, je commente la ligne dans &lt;code&gt;/etc/apt/sources.list.d/omvextras.list&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat /etc/apt/sources.list.d/omvextras.list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# deb https://dl.bintray.com/openmediavault-plugin-developers/usul buster main&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;mise-à-jour-omv6&#34;&gt;Mise à jour OMV6&#xA;&lt;/h3&gt;&lt;p&gt;Bon, je savais que tout cela devait être temporaire, et je me décide pour faire une mise à jour d&amp;rsquo;OMV5 vers OMV6.&lt;/p&gt;&#xA;&lt;p&gt;Prudent, je commence par faire une image de ma carte microSD avec Clonezilla histoire de pouvoir revenir en arrière si la mise à jour plante, car je ne souhaite pas me retrouver bloqué sans serveur Plex, Nextcloud ou Qbittorrent&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Puis je lance la commande suivante pour m&amp;rsquo;assurer que tout est à jour :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo omv-upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Huit paquets sont d&amp;rsquo;ailleurs mis à jour, parfait. J&amp;rsquo;enchaîne avec la véritable commande de mise à jour vers OMV6 et Debian 11. En fait les deux sont liés, chaque version d&amp;rsquo;OMV est associée à une version de Debian, et le script de mise à jour en tient compte bien sûr.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo omv-release-upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La fenêtre suivante s&amp;rsquo;affiche :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;366px&#34; data-flex-grow=&#34;152&#34; height=&#34;547&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/upgrade.png&#34; srcset=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/upgrade_hu_b20d3b27fabbe761.png 800w, https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/upgrade.png 835w&#34; width=&#34;835&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je valide, et la mise à jour démarre. Cela prend du temps, mais à la fin le système redémarre et je découvre la nouvelle interface d&amp;rsquo;OMV6, dont un écran de connexion inspiré de Matrix du plus bel effet :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;345px&#34; data-flex-grow=&#34;143&#34; height=&#34;539&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/veille.png&#34; width=&#34;775&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sauf que je m&amp;rsquo;aperçois que tout ce qui concerne les plugins a été totalement revu et profondément modifié. Et de ce fait, je n&amp;rsquo;ai aucun plugin d&amp;rsquo;installé, et bien sûr aucun de mes conteneurs Docker ne fonctionne.&lt;/p&gt;&#xA;&lt;p&gt;Je commence à regarder tout ça, à chercher un tuto sur internet, et puis je me dis que dans ces conditions, autant en profiter pour passer à OMV7. Il sera toujours temps de refaire la configuration des plugins ensuite, et j&amp;rsquo;aurai une version très récente d&amp;rsquo;Openmediavault, puisque cette version date du 03 mars 2024.&lt;/p&gt;&#xA;&lt;p&gt;Aussitôt dit aussitôt fait, un coup de &lt;code&gt;omv-upgrade&lt;/code&gt; suivi d&amp;rsquo;un &lt;code&gt;omv-release-upgrade&lt;/code&gt; et me voilà en OMV7 sous Debian 12 Bookworm. :cool:&lt;/p&gt;&#xA;&lt;h3 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h3&gt;&lt;p&gt;Je me retrouve donc au même point qu&amp;rsquo;avec OMV6 : aucun plugin d&amp;rsquo;installé. Il faut commencer par installer les OMV Extras en téléchargeant un script comme indiqué sur &lt;a class=&#34;link&#34; href=&#34;https://wiki.omv-extras.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour ma part, j&amp;rsquo;ai du d&amp;rsquo;abord télécharger le fichier, puis l&amp;rsquo;exécuter, le &amp;ldquo;pipe&amp;rdquo; sur bash ne fonctionnait pas. Donc cette commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo wget https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis je renomme le fichier en &lt;code&gt;installomvextra.sh&lt;/code&gt; et lance le script, qui extrait un fichier &lt;code&gt;openmediavault-omvextrasorg_latest_all7.deb&lt;/code&gt; puis procède à l&amp;rsquo;installation.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, nos plugins sont désormais disponibles, et pour Docker, il faut installer &lt;code&gt;openmediavault-compose&lt;/code&gt; dans &lt;code&gt;Système-Extensions&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;518px&#34; data-flex-grow=&#34;216&#34; height=&#34;303&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/compose.png&#34; width=&#34;655&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;À ce stade, j&amp;rsquo;ai un beau menu dans &lt;strong&gt;Services-Compose&lt;/strong&gt; qui me remplit d&amp;rsquo;espoir : Docker a l&amp;rsquo;air beaucoup mieux intégré à l&amp;rsquo;interface d&amp;rsquo;OMV, on y retrouve directement les containers par exemple, mais pas que :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;349px&#34; data-flex-grow=&#34;145&#34; height=&#34;412&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/compose1.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mais quand je vais dans &lt;strong&gt;Conteneur&lt;/strong&gt;, si je vois bien mes conteneurs (c&amp;rsquo;est déjà ça), il sont tous à l&amp;rsquo;arrêt et refusent de démarrer. Il faut d&amp;rsquo;abord aller dans &lt;strong&gt;Shared Folders&lt;/strong&gt;, vérifier que tout est correct et corriger ce qui ne l&amp;rsquo;est pas.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;561px&#34; data-flex-grow=&#34;233&#34; height=&#34;385&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/shared.png&#34; srcset=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/shared_hu_7ad76d64cedb5776.png 800w, https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/shared.png 900w&#34; width=&#34;900&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis aller dans &lt;strong&gt;Compose - Paramètres&lt;/strong&gt; vérifier les deux entrées suivantes qui correspondent aux données des containers créés (Compose Files), et à l&amp;rsquo;emplacement de Docker (j&amp;rsquo;avais déplacé Docker sur le disque externe du NAS, voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17223&#34; &gt;cet article&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;224px&#34; data-flex-grow=&#34;93&#34; height=&#34;632&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/compose-params.png&#34; width=&#34;591&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une fois tout ceci vérifié, j&amp;rsquo;essaie à nouveau de démarrer un container, et nouvel échec ! Le message d&amp;rsquo;erreur n&amp;rsquo;est pas évident, si ce n&amp;rsquo;est que le container ne peut être démarré, et un beau &amp;quot; &lt;code&gt;function not implemented&lt;/code&gt;&amp;quot; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Failed to execute command &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export LANG=C.UTF-8; export LANGUAGE=; docker restart  25dcc66efa478d729cc7a600f85cd6813632d504e82cd63902f0f21a86f1a7dc 2&amp;gt;&amp;amp;1&amp;#39;&lt;/span&gt;: Error response from daemon: Cannot restart container 25dcc66efa478d729cc7a600f85cd6813632d504e82cd63902f0f21a86f1a7dc: failed to create task &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error setting cgroup config &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; procHooks process: bpf_prog_query&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;BPF_CGROUP_DEVICE&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; failed: &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; not implemented: unknown&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OMV&lt;span style=&#34;color:#ae81ff&#34;&gt;\E&lt;/span&gt;xecException: Failed to execute command &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export LANG=C.UTF-8; export LANGUAGE=; docker restart  25dcc66efa478d729cc7a600f85cd6813632d504e82cd63902f0f21a86f1a7dc 2&amp;gt;&amp;amp;1&amp;#39;&lt;/span&gt;: Error response from daemon: Cannot restart container 25dcc66efa478d729cc7a600f85cd6813632d504e82cd63902f0f21a86f1a7dc: failed to create task &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error setting cgroup config &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; procHooks process: bpf_prog_query&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;BPF_CGROUP_DEVICE&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; failed: &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; not implemented: unknown in /usr/share/openmediavault/engined/rpc/compose.inc:1080&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Stack trace:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#0 /usr/share/php/openmediavault/rpc/serviceabstract.inc(622): OMVRpcServiceCompose-&amp;gt;{closure}()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#1 /usr/share/openmediavault/engined/rpc/compose.inc(1068): OMV\Rpc\ServiceAbstract-&amp;gt;execBgProc()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#2 [internal function]: OMVRpcServiceCompose-&amp;gt;doContainerCommand()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#3 /usr/share/php/openmediavault/rpc/serviceabstract.inc(122): call_user_func_array()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#4 /usr/share/php/openmediavault/rpc/rpc.inc(86): OMV\Rpc\ServiceAbstract-&amp;gt;callMethod()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#5 /usr/sbin/omv-engined(535): OMV\Rpc\Rpc::call()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#6 {main}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;le-kernel&#34;&gt;Le Kernel&#xA;&lt;/h3&gt;&lt;p&gt;Je fais alors une recherche sur internet, et je dois dire que je suis assez chanceux, car je tombe immédiatement sur &lt;a class=&#34;link&#34; href=&#34;https://github.com/docker/cli/issues/3481&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;, qui indique que le problème vient d&amp;rsquo;une version de kernel trop ancienne.&lt;/p&gt;&#xA;&lt;p&gt;Je vérifie sur ma machine et effectivement, mon kernel ne semble pas à niveau :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ uname -a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Linux odroidhc2 4.14.222-odroidxu4 &lt;span style=&#34;color:#75715e&#34;&gt;#1 SMP PREEMPT Mon Nov 22 12:13:27 UTC 2021 armv7l GNU/Linux&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker info&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Kernel Version: 4.14.222-odroidxu4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mon premier réflexe est d&amp;rsquo;aller voir le fichier que j&amp;rsquo;avais modifié manuellement pour éviter le premier mail : il est toujours en l&amp;rsquo;état avec le ligne pour Buster commentée, j&amp;rsquo;y ajoute la ligne qui correspond à ma nouvelle version de Debian :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat /etc/apt/sources.list.d/armbian.list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# deb http://apt.armbian.com buster main buster-utils buster-desktop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;deb http://apt.armbian.com bookworm main bookworm-utils bookworm-desktop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis je lance une mise à jour, et je vois que 3 paquets vont être mis à jour : &lt;code&gt;armbian-config armbian-firmware base-files&lt;/code&gt;. Mais cela ne change pas la version du kernel, et ne résout pas mon problème.&lt;/p&gt;&#xA;&lt;p&gt;Pour identifier le kernel à installer, la commande suivante permet de les afficher :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt-cache search linux-image | grep odroid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;linux-image-current-odroidxu4 - Armbian Linux current kernel image 6.1.79-current-odroidxu4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;linux-image-edge-odroidxu4 - Armbian Linux edge kernel image 6.1.77-edge-odroidxu4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;linux-image-legacy-odroidxu4 - Linux kernel, version 4.14.222-odroidxu4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et j&amp;rsquo;ai déjà vu lors de l&amp;rsquo;installation de la première image que ma carte odroid-hc2 utilise la même image que celle d&amp;rsquo;un odroid-xu4 : voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16961&#34; &gt;cet article sur le changement du motd&lt;/a&gt; ! :wink: . À priori, il faudrait prendre le &amp;ldquo;current&amp;rdquo;. Mais bon j&amp;rsquo;ai quand même quelques interrogations, je n&amp;rsquo;ai jamais fait cette opération, et évidemment il n&amp;rsquo;y a pas le droit à l&amp;rsquo;erreur&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Mais internet va me fournir une solution alternative, avec &lt;a class=&#34;link&#34; href=&#34;https://docs.armbian.com/User-Guide_Armbian-Config/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;un outil &lt;strong&gt;armbian&lt;/strong&gt;&lt;/a&gt; dédié pour configurer les cartes ARM, et qu&amp;rsquo;il suffit d&amp;rsquo;installer :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt-get install armbian-config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à le lancer en mode &lt;code&gt;sudo&lt;/code&gt;, puis de choisir &lt;code&gt;System&lt;/code&gt;, et enfin de sélectionner &lt;code&gt;Switch to other kernels&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;361px&#34; data-flex-grow=&#34;150&#34; height=&#34;553&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/switchkernel.png&#34; srcset=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/switchkernel_hu_a4ffc0f091f1912b.png 800w, https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/switchkernel.png 832w&#34; width=&#34;832&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à laisser l&amp;rsquo;outil récupérer les versions disponibles, et choisir parmi celles qu&amp;rsquo;il vous propose : et l&amp;rsquo;outil me propose bien la même version de kernel que la commande apt, cela me rassure. Je valide, et le nouveau kernel est installé avant que le système ne redémarre :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;366px&#34; data-flex-grow=&#34;152&#34; height=&#34;547&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/kernel.png&#34; srcset=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/kernel_hu_46dc95a75c40af9e.png 800w, https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/kernel.png 835w&#34; width=&#34;835&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après le redémarrage, je vérifie et cette fois mon kernel est passé en version 6 :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ uname -a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Linux odroidhc2 6.1.79-current-odroidxu4 &lt;span style=&#34;color:#75715e&#34;&gt;#3 SMP PREEMPT Thu Feb  8 13:10:24 UTC 2024 armv7l GNU/Linux&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voici venu le moment décisif : je retourne dans &lt;code&gt;Services - Compose - Conteneurs&lt;/code&gt; pour démarrer un container Docker, et &lt;strong&gt;YES !&lt;/strong&gt; il démarre sans aucun problème&amp;hellip; :razz:&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;La mise à jour d&amp;rsquo;OMV s&amp;rsquo;est tout de même très bien passée, puisque j&amp;rsquo;ai quand même fait un saut de 2 versions majeures où la gestion des plugins a été complètement revues et modifiée, tout en incluant une mise à jour de l&amp;rsquo;OS (Debian 10 à Debian 12).&lt;/p&gt;&#xA;&lt;p&gt;Ce n&amp;rsquo;était donc pas une mince affaire, et finalement, je n&amp;rsquo;ai eu que quelques paramètres à vérifier côté purement OMV. Pour la version de Kernel, c&amp;rsquo;était un peu plus compliqué à priori, mais l&amp;rsquo;utilitaire fourni par &lt;strong&gt;armbian&lt;/strong&gt; a parfaitement rempli sa fonction et résolu mon problème en quelques minutes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;429px&#34; data-flex-grow=&#34;179&#34; height=&#34;467&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/motd.png&#34; srcset=&#34;https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/motd_hu_76a652562c39a234.png 800w, https://pled.fr/mise-a-jour-openmediavault-v5-vers-v7/motd.png 836w&#34; width=&#34;836&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, il me reste à découvrir un peu mieux cette nouvelle version d&amp;rsquo;OMV. À priori, je n&amp;rsquo;aurai sans doute plus besoin de la page Portainer pour gérer mes conteneurs, tout semble gérable à partir de l&amp;rsquo;interface d&amp;rsquo;OMV7. Et je suis normalement tranquille pour quelques années de support ! :cool:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>OMV : Mise à jour des containers Nextcloud et Plex</title>
            <link>https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/</link>
            <pubDate>Sun, 12 Mar 2023 17:49:30 +0000</pubDate>
            <guid>https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;linuxserverio.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà un moment que je cherchais comment mettre à jour proprement mon instance Docker de Nextcloud. En fait l&amp;rsquo;info était bien disponible, bien que peu détaillée, sur la &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/linuxserver/nextcloud&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;page du container&lt;/a&gt;, mais je me mélangeais un peu les pinceaux entre l&amp;rsquo;image, le container, et l&amp;rsquo;application elle-même.&lt;/p&gt;&#xA;&lt;p&gt;Voilà ce qui est indiqué dans la documentation fournie par Linuxserver.io, ce n&amp;rsquo;est pas hyper clair, et la section &amp;ldquo;Updating Info&amp;rdquo; pour chaque container n&amp;rsquo;est vraiment ni détaillée ni très explicite :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;La plupart de nos images sont statiques, versionnées, et nécessitent une mise à jour de l&amp;rsquo;image et une recréation du conteneur pour mettre à jour l&amp;rsquo;application qu&amp;rsquo;elles contiennent. À quelques exceptions près (par exemple, nextcloud, plex), nous ne recommandons ni ne prenons en charge la mise à jour des applications à l&amp;rsquo;intérieur du conteneur.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Sur les forums Docker, on déconseille également l&amp;rsquo;utilisation de &lt;strong&gt;Portainer&lt;/strong&gt;, l&amp;rsquo;interface fournie par défaut dans &lt;strong&gt;OpenMediaVault&lt;/strong&gt; pour gérer ses images et containers Docker. En particulier pour des problèmes de gestion de version des applications justement.&lt;/p&gt;&#xA;&lt;p&gt;Donc pour la création d&amp;rsquo;un nouveau container, rien ne vaut une bonne vieille commande &lt;code&gt;docker run&lt;/code&gt;, et tant qu&amp;rsquo;à faire autant la mettre dans un script pour pouvoir la réutiliser facilement. Pour &lt;strong&gt;Plex&lt;/strong&gt;, cela suffira à utiliser la dernière version de l&amp;rsquo;application au sein de ce nouveau container. Pour &lt;strong&gt;Nextcloud&lt;/strong&gt;, on procédera de la même manière pour mettre à jour le container (si nécessaire), sinon on passera par l&amp;rsquo;interface de Nextcloud pour faire les mises à jour, cela fonctionne très bien.&lt;/p&gt;&#xA;&lt;p&gt;Enfin, je parlerai vite fait de la mise à jour d&amp;rsquo;OMV lui-même à la fin de l&amp;rsquo;article.&lt;/p&gt;&#xA;&lt;p&gt;Allons-y&amp;hellip;&lt;/p&gt;&#xA;&lt;h2 id=&#34;plex&#34;&gt;Plex&#xA;&lt;/h2&gt;&lt;p&gt;Commençons par le plus simple&amp;hellip; J&amp;rsquo;ai commencé par vouloir faire la mise à jour à partir de Portainer : mais j&amp;rsquo;avais beau recréer une nouvelle image puis un nouveau container, ce n&amp;rsquo;était jamais la bonne version de binaire qui était exécutée quand je vérifais les logs.&lt;/p&gt;&#xA;&lt;p&gt;Après plusieurs essais infructueux, j&amp;rsquo;ai fini par poser des questions sur un forum Discourse consacré à Docker. On m&amp;rsquo;a alors fortement déconseillé l&amp;rsquo;utilisation de Portainer typiquement pour les problèmes que j&amp;rsquo;avais observés. On me recommandait d&amp;rsquo;utiliser les commandes &lt;code&gt;docker&lt;/code&gt;, directement, afin d&amp;rsquo;éviter tout problème.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc fini par faire un script pour recréer un nouveau container (plex2023) comme si c&amp;rsquo;était la première création, tout en gardant les mêmes emplacements pour mes dossiers médias bien entendu. Ça donne ceci dans mon cas :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d --name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;plex2023 --net&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;host -e PUID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt; -e PGID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt; -e VERSION&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;docker -v /srv/dev-disk-by-label-DATA/AppData/Plex:/config -v /srv/dev-disk-by-label-DATA/OMV-DATA/Series:/Series -v /srv/dev-disk-by-label-DATA/OMV-DATA/Films:/Films -v /srv/dev-disk-by-label-DATA/OMV-DATA/Docus:/Docus lscr.io/linuxserver/plex:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà, c&amp;rsquo;est tout simple. Il suffit d&amp;rsquo;arrêter l&amp;rsquo;ancien container Plex et de lancer celui-ci, et c&amp;rsquo;est la dernière version de Plex qui tourne. Une fois que l&amp;rsquo;on a vérifié que tout fonctionne correctement, il ne reste plus qu&amp;rsquo;à effacer l&amp;rsquo;ancien container.&lt;/p&gt;&#xA;&lt;h3 id=&#34;nextcloud&#34;&gt;Nextcloud&#xA;&lt;/h3&gt;&lt;h4 id=&#34;mise-à-jour-majeure&#34;&gt;Mise à jour majeure&#xA;&lt;/h4&gt;&lt;p&gt;Pour passer d&amp;rsquo;une version majeure à une autre, ou cas de problème lors d&amp;rsquo;une mise à jour via l&amp;rsquo;interface comme ci-dessus, il peut être aussi simple de recréer de nouveaux containers à partir de nouvelles images.&lt;/p&gt;&#xA;&lt;p&gt;On commence par arrêter les 3 containers (nextcloud-mariadb-swag), puis télécharger les dernières versions des images Docker. Là aussi, autant passer passer par le mode commande de Docker, c&amp;rsquo;est aussi simple et plus clair :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker image pull linuxserver/nextcloud:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker image pull linuxserver/mariadb:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker image pull linuxserver/swag:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Les nouvelles images vont apparaître dans Portainer, ce sont celles-ci qui seront utilisées pour créer les containers. Pour cela, je vais utiliser Portainer et les &amp;ldquo;stacks&amp;rdquo; qui sont bien pratiques pour tout créer en une seule fois. J&amp;rsquo;ai juste changé le nom des containers pour me repérer (en ajoutant &amp;ldquo;2023&amp;rdquo; à la fin), et gardé les mêmes chemins des volumes (config, data&amp;hellip;). Pour les détails de la config, voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;le premier article sur la création du container Nextcloud&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2.1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;nextcloud&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;linuxserver/nextcloud&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nextcloud2023&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PUID=997&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PGID=100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config:/config&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/data:/data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;depends_on&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;mariadb&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mariadb&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;linuxserver/mariadb&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nextclouddb2023&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PUID=997&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PGID=100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;MYSQL_ROOT_PASSWORD=keepsecret&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-label-DATA/AppData/Nextclouddb:/config&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;3306&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;3306&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;swag&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;linuxserver/swag&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;swag2023&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cap_add&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;NET_ADMIN&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PUID=997&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PGID=100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;URL=xxx.pled.fr&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;SUBDOMAINS=nextcloud&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;VALIDATION=http&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;EMAIL=yyy@zzz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;/srv/dev-disk-by-label-DATA/AppData/swag:/config&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;444&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;81&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Penser tout de même à vérifier sur les pages de linuxserver (&lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/images/docker-nextcloud&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt; pour nextcloud) pour chaque container si les paramètres à utiliser n&amp;rsquo;ont pas changé.&lt;/p&gt;&#xA;&lt;p&gt;Une fois les containers créés, il n&amp;rsquo;y a plus qu&amp;rsquo;à les lancer. Mais en procédant ainsi, Nextcloud n&amp;rsquo;est pas mis à jour, je suis toujours en version 23 (comme pour Plex plus haut donc). Pourtant quand je regarde mon image Docker, c&amp;rsquo;est bien la v25 (qui est censée fournir Nextcloud 25) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker inspect -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{{ index .Config.Labels &amp;#34;build_version&amp;#34; }}&amp;#39;&lt;/span&gt; nextcloud2023&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;sudo&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; password &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; pascal:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Linuxserver.io version:- 25.0.2-ls216 Build-date:- 2023-01-08T09:28:17-06:00&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ce n&amp;rsquo;est donc pas suffisant, même si c&amp;rsquo;est toujours utile de mettre à jour le container. J&amp;rsquo;ai fini par tomber sur &lt;a class=&#34;link&#34; href=&#34;https://forum.openmediavault.org/index.php?thread/31542-how-to-upgrade-nextcloud-in-docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;, qui donne la bonne solution (et même 2 manières de procéder, j&amp;rsquo;ai choisi la seconde puisqu&amp;rsquo;il est mentionné que c&amp;rsquo;est la meilleure). Et tout a parfaitement fonctionné.&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai depuis effectué plusieurs mises à jour de Nextcloud en passant tout simplement par l&amp;rsquo;interface de Nextcloud sans modifier quoique ce soit auparavant.&#xA;Il suffit d&amp;rsquo;aller dans &amp;ldquo;Paramètres d&amp;rsquo;administration&amp;rdquo; dans le menu en haut à droite, puis de suivre les indications.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;opération prend plus ou moins de temps, mais cela a l&amp;rsquo;air assez bien fait (y compris un backup) et je n&amp;rsquo;ai rencontré aucun problème en procédant de cette manière.&lt;/p&gt;&#xA;&lt;p&gt;Au pire, on relance la page en cas de time-out réseau ou quand une étape échoue : le script va reprendre au bon endroit comme un grand.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est donc vraiment une manip très simple et il est désormais facile de rester à jour en terme de version de Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;Je laisse ci-dessous la méthode indiquée via une connexion &lt;code&gt;ssh&lt;/code&gt; sur la machine, cela peut toujours servir. On peut aussi directement exécuter les comandes &lt;code&gt;occ upgrade&lt;/code&gt; à partir de la console que propose Portainer pour le container Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;Je lance donc la première commande une fois connecté en ssh à mon NAS OMV : à noter que c&amp;rsquo;est bien l&amp;rsquo;utilisateur &lt;code&gt;abc&lt;/code&gt; qu&amp;rsquo;il faut utiliser ! J&amp;rsquo;ai d&amp;rsquo;abord cru à un exemple et remplacé par &lt;code&gt;admin&lt;/code&gt; ou mon nom d&amp;rsquo;utilisateur nextcloud, mais non, il faut garder la commande telle quelle.&lt;/p&gt;&#xA;&lt;p&gt;Répondre &amp;ldquo;yes&amp;rdquo; pour l&amp;rsquo;update, puis &amp;ldquo;no&amp;rdquo; pour l&amp;rsquo;upgrade d&amp;rsquo; &lt;strong&gt;occ&lt;/strong&gt;. Garder le mode maintenance actif si c&amp;rsquo;est demandé.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker exec -it nextcloud2023 sudo -u abc php /config/www/nextcloud/occ upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nextcloud or one of the apps require upgrade - only a limited number of commands are available&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;You may use your browser or the occ upgrade command to &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; the upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Setting log level to debug&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating database schema&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated database&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.12.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.12.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.19.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 2.16.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.7.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Fix broken values of calendar objects&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Done&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    0/0 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;-&amp;gt;--------------------------&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;   0%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Clean up old calendar subscriptions from deleted users that were not cleaned-up&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Done&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    0/0 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;-----&amp;gt;----------------------&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;   0%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.22.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.16.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.17.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 2.6.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 2.13.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.13.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 2.12.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.15.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Migrate old user config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Done&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    1/1 &lt;span style=&#34;color:#f92672&#34;&gt;[============================]&lt;/span&gt; 100%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.10.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 7.4.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 2.5.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.3.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 2.9.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.6.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.8.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.3.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.6.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.7.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.12.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 3.5.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.13.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.4.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating  ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updated  to 1.8.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Starting code integrity check...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Finished code integrity check&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Update successful&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Maintenance mode is kept active&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Resetting log level&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tout cela prend un peu de temps, mais la commande s&amp;rsquo;exécute sans erreur. Puis on lance la deuxième commande pour mettre à jour &lt;strong&gt;occ&lt;/strong&gt; (le nom vient à l&amp;rsquo;origine de &lt;strong&gt;o&lt;/strong&gt; wn &lt;strong&gt;c&lt;/strong&gt; loud &lt;strong&gt;c&lt;/strong&gt; onsole) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker exec -it nextcloud sudo -u abc php /config/www/nextcloud/occ upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enfin, on désactive le mode maintenance :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker exec -it nextcloud2023 sudo -u abc php /config/www/nextcloud/occ maintenance:mode --off&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà : j&amp;rsquo;ai enfin mis à jour mon container Nextcloud ! Il ne reste plus qu&amp;rsquo;à aller sur la page web pour vérifer tout ça.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1045px&#34; data-flex-grow=&#34;435&#34; height=&#34;118&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/Capture-decran-du-2023-03-12-18-47-11.png&#34; width=&#34;514&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;mise-à-jour-mineure&#34;&gt;Mise à jour mineure&#xA;&lt;/h4&gt;&lt;p&gt;Plus tard, pour une mise à jour mineure, j&amp;rsquo;ai utilisé l&amp;rsquo;interface de Nextcloud, il s&amp;rsquo;agissait de passer de la v25.0.2 à la v25.0.12. Et tout s&amp;rsquo;est passé sans souci. Il y a deux étapes, il faut patienter un peu, mais globalement c&amp;rsquo;est parfait .&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;442px&#34; data-flex-grow=&#34;184&#34; height=&#34;736&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/nextcloud.png&#34; srcset=&#34;https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/nextcloud_hu_d2bcae1d35f2b53a.png 800w, https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/nextcloud.png 1357w&#34; width=&#34;1357&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1221px&#34; data-flex-grow=&#34;509&#34; height=&#34;100&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/mineure.png&#34; width=&#34;509&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Comme indiqué plus haut dans l&amp;rsquo;article, que ce soit pour une mise à jour mineure ou majeure, c&amp;rsquo;est la meilleure et la plus simple façon de procéder.&lt;/p&gt;&#xA;&lt;h3 id=&#34;omv&#34;&gt;OMV&#xA;&lt;/h3&gt;&lt;p&gt;Pour OMV, la première chose à faire est d&amp;rsquo;aller dans le Gestionnaire de mises à jour et de les appliquer. Il y a peut-être un paquet &lt;code&gt;openmediavault&lt;/code&gt; de proposé parmi toutes les mises à jour disponibles. En fait c&amp;rsquo;est l&amp;rsquo;équivalent d&amp;rsquo;un &lt;code&gt;sudo apt update ; sudo apt upgrade&lt;/code&gt; en ligne de commande.&lt;/p&gt;&#xA;&lt;p&gt;Je l&amp;rsquo;ai fait récemment, et je suis passé en 5.6.26-1 :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt policy openmediavault&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;sudo&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; password &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; pascal:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openmediavault:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Installed: 5.6.26-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Candidate: 5.6.26-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Version table:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; *** 5.6.26-1 &lt;span style=&#34;color:#ae81ff&#34;&gt;500&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ae81ff&#34;&gt;500&lt;/span&gt; http://packages.openmediavault.org/public usul/main armhf Packages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ae81ff&#34;&gt;500&lt;/span&gt; https://openmediavault.github.io/packages usul/main armhf Packages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt; /var/lib/dpkg/status&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il y a aussi la commande &lt;code&gt;omv-upgrade&lt;/code&gt;, qui fait exactement la même chose, comme l&amp;rsquo;indique &lt;a class=&#34;link&#34; href=&#34;https://docs.openmediavault.org/en/5.x/various/apt.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la documentation&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;En l&amp;rsquo;état, je suis donc en OMV v5 avec un système avec les toutes dernières mises à jour de cette version. Comment faire pour passer en OMV v6 ? Ce sera la commande &lt;code&gt;omv-release-upgrade&lt;/code&gt;, et la documentation indique ceci :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;&lt;strong&gt;omv-release-upgrade&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Il s&amp;rsquo;agit d&amp;rsquo;un script qui n&amp;rsquo;est inclus que dans les dernières versions d&amp;rsquo;openmediavault avant de passer à la version majeure suivante, par exemple de 5.6.x à 6.x. Cette commande migre le système vers la version majeure suivante d&amp;rsquo;openmediavault (qui inclut généralement une mise à jour de la distribution Debian).&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Personnellement, je ne l&amp;rsquo;ai pas encore fait, puisque tout fonctionne comme je le souhaite avec la v5. Je verrai cela plus tard. D&amp;rsquo;autant que OMV 6 est basé sur Bebian 11 (Bullseye), le script effectuera en même temps la mise à jour du système puisque je suis en Debian 10 Buster :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;341px&#34; data-flex-grow=&#34;142&#34; height=&#34;561&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/omv-mise-a-jour-des-containers-nextcloud-et-plex-et-domv/Capture-decran-du-2023-03-12-18-21-14.png&#34; width=&#34;798&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce n&amp;rsquo;est donc pas une &amp;ldquo;minor update&amp;rdquo;, mais bien une &amp;ldquo;major upgrade&amp;rdquo; ! Il faut donc préparer sérieusement ce genre de mise à jour avant de se lancer ! On trouve des conseils sur &lt;a class=&#34;link&#34; href=&#34;https://forum.openmediavault.org/index.php?thread/42340-is-there-a-guide-to-in-place-upgrade/&amp;amp;postID=305564#post305564&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page du forum OMV&lt;/a&gt;. Les pré-requis sont indiqués &lt;a class=&#34;link&#34; href=&#34;https://docs.openmediavault.org/en/latest/prerequisites.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Je suis plutôt content, car ça faisait un bout de temps que je voulais mettre à jour mon Nextcloud sans trouver la bonne méthode. Avec celle décrite ici, c&amp;rsquo;est nickel.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai pu aussi voir les limites de Portainer, car j&amp;rsquo;ai passé du temps et fait pas mal d&amp;rsquo;essais infructueux pour essayer d&amp;rsquo;upgrader Plex. Finalement le mode commande de Docker est très puissant, assez simple à utiliser, la documentation bien faite, alors autant l&amp;rsquo;utiliser parce qu&amp;rsquo;au on est sûr de ce que l&amp;rsquo;on fait&amp;hellip; et ça marche !&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>OpenMediaVault : Installation de Nextcloud version 23</title>
            <link>https://pled.fr/openmediavault-installation-de-nextcloud-version-23/</link>
            <pubDate>Thu, 10 Feb 2022 17:48:21 +0000</pubDate>
            <guid>https://pled.fr/openmediavault-installation-de-nextcloud-version-23/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;nextcloud.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Suite au &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=18468&#34; &gt;changement de HD sur mon NAS&lt;/a&gt;, j&amp;rsquo;ai été amené à réinstaller mes containers Docker. L&amp;rsquo;occasion d&amp;rsquo;en &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17665&#34; &gt;apprendre un peu&lt;/a&gt; sur les sauvegardes d&amp;rsquo;images que je faisais et comment les restaurer.&lt;/p&gt;&#xA;&lt;p&gt;Pour Nextcloud, j&amp;rsquo;ai finalement décidé d&amp;rsquo;en profiter pour installer la dernière version disponible, et d&amp;rsquo;oublier l&amp;rsquo;idée d&amp;rsquo;une restauration. J&amp;rsquo;étais en v21.0.4, et c&amp;rsquo;est actuellement la v23.0.0 qui est disponible sur &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/images/docker-nextcloud&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;linuxserver.io&lt;/a&gt;. Allons-y pour une installation toute neuve, mais en gardant mon fichier &lt;code&gt;config.php&lt;/code&gt;, spécifique à mon réseau.&lt;/p&gt;&#xA;&lt;p&gt;Tout n&amp;rsquo;a pas été simple, loin de là. J&amp;rsquo;ai pu constater que l&amp;rsquo;installation avait pas mal changé depuis la première installation (v20), et que la restauration de mon dossier de configuration devait se faire plus tard, sinon l&amp;rsquo;installation bloquait ! J&amp;rsquo;ai aussi noté quelques trucs utiles en cas de problème sur les logs et l&amp;rsquo;accès à la Base de Données. Pour finir, j&amp;rsquo;ai aussi eu une erreur de type &amp;ldquo;mise à jour&amp;rdquo; ! :mad:&lt;/p&gt;&#xA;&lt;p&gt;Revoyons un peu tout ça&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;fichier-can_install&#34;&gt;Fichier CAN_INSTALL&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai tout d&amp;rsquo;abord repris ma &amp;ldquo;stack&amp;rdquo; de l&amp;rsquo;installation précédente, celle qui inclut nextcloud/mariadb/swag (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;cet article&lt;/a&gt;). J&amp;rsquo;ai juste modifié le nom des images qui avait changé dans l&amp;rsquo;exemple fournit par &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/general/swag#nextcloud-subdomain-reverse-proxy-example&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;linuxsserver.io/nextcloud&lt;/a&gt; : on passait de &amp;ldquo;linuxserver/xxx&amp;rdquo; à &amp;ldquo;lscr.io/linuxserver/xxx&amp;rdquo; pour chaque composant.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais aussi remarqué que pour MariaDB, il y avait trois paramètres supplémentaires : &lt;code&gt;MYSQL_DATABASE&lt;/code&gt;, &lt;code&gt;MYSQL_USER&lt;/code&gt; et &lt;code&gt;MYSQL_PASSWORD&lt;/code&gt;. Mais je ne les ai pas ajoutés, ce qui m&amp;rsquo;amènera à une erreur (voir plus bas) : il est donc préférable de les ajouter à la stack de base (l&amp;rsquo;utilisateur de la base à renseigner est le nom de l&amp;rsquo;administrateur nextcloud). Bref, j&amp;rsquo;aurais tout aussi bien fait de reprendre &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/general/swag#nextcloud-subdomain-reverse-proxy-example&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la nouvelle stack proposée&lt;/a&gt;, et d&amp;rsquo;y modifier mes paramètres, que de faire l&amp;rsquo;inverse&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Pour la suite de cet article, le container MariaDB s&amp;rsquo;appelle &lt;code&gt;nextclouddb&lt;/code&gt; ( &lt;code&gt;container_name&lt;/code&gt; dans la stack). C&amp;rsquo;est aussi le nom que je donne à la base de données lors du setup de Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc déployé la nouvelle stack (avec nouvelle version des softs, au moins pour Nextcloud). Puis j&amp;rsquo;ai arrêté le container Nextcloud et recopié tout le dossier &amp;ldquo;config&amp;rdquo; de ma version précédente défini dans la stack : &amp;quot; &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config:/config&lt;/code&gt;&amp;quot;.&lt;/p&gt;&#xA;&lt;p&gt;Mais en relançant Nextcloud, j&amp;rsquo;ai eu un beau message sur la page du navigateur (dommage, je n&amp;rsquo;ai pas fait de capture), me disant grosso-modo:&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Il semble que vous essayez de réinstaller votre Nextcloud. Cependant le fichier CAN_INSTALL est manquant dans votre répertoire de configuration. Veuillez créer le fichier CAN_INSTALL dans votre répertoire de configuration pour continuer.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Je me suis dit que j&amp;rsquo;étais sur la bonne voie, il ne restait qu&amp;rsquo;à créer un fichier CAN_INSTALL vide dans le répertoire de config. Hélas, j&amp;rsquo;ai eu beau créer ce fichier dans &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/www/nextcloud/config&lt;/code&gt;, impossible de finir l&amp;rsquo;installation qui restait bloquée sur cette page d&amp;rsquo;erreur.&lt;/p&gt;&#xA;&lt;p&gt;Après quelques recherches sur le web, il semble que ce message soit un &amp;ldquo;faux ami&amp;rdquo;, et n&amp;rsquo;ait en fait rien à voir avec la vraie source de l&amp;rsquo;erreur, qui serait plutôt lié à la base de donnée pas encore accessible.&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-fichier-configphp&#34;&gt;Le fichier config.php&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai alors redéployé ma stack, mais cette fois sans recopier mon dossier config, me disant que finalement, je pouvais repartir d&amp;rsquo;une installation propre et recréer ce dont j&amp;rsquo;avais besoin facilement (je n&amp;rsquo;utilise Nextcloud que pour le partage de dossiers).&lt;/p&gt;&#xA;&lt;p&gt;Mais je voulais tout de même réutiliser mon fichier &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/www/nextcloud/config/config.php&lt;/code&gt; (voir [la première installation](http://le fichier /srv/dev-disk-by-label-DATA/AppData/Nextcloud/www/nextcloud/config/config.php :)) pour correspondre à mon environnement réseau (les &amp;ldquo;trusted_domains&amp;rdquo; notamment, ce fichier n&amp;rsquo;est pas évident à configurer).&lt;/p&gt;&#xA;&lt;p&gt;Et c&amp;rsquo;est là que je me suis rendu compte que le fichier &lt;code&gt;config.php&lt;/code&gt; n&amp;rsquo;existait pas encore. Je le créais donc, mais c&amp;rsquo;était quand même inattendu !? Du coup, la page Nextcloud affichait une belle erreur &amp;ldquo;Internal Server error&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2022/02/internal.png&#34; &gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1168px&#34; data-flex-grow=&#34;486&#34; height=&#34;214&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud-version-23/internal.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-nextcloud-version-23/internal_hu_3ed2765d9eb7a4d6.png 800w, https://pled.fr/openmediavault-installation-de-nextcloud-version-23/internal.png 1042w&#34; width=&#34;1042&#34;&gt;&lt;/a&gt; Message peu parlant, et rien trouvé dans les logs !&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai fini par comprendre que je ne devais pas créer ce fichier &lt;code&gt;config.php&lt;/code&gt; à ce stade (contrairement à la v20). Dès le déploiement de la stack, sans modifier quoique ce soit, la page de Nextcloud était disponible pour y fournir les informations de connexion habituelles : compte admin, infos base de données, avant de cliquer sur le bouton &amp;ldquo;Terminer l&amp;rsquo;installation&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;99px&#34; data-flex-grow=&#34;41&#34; height=&#34;400&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud-version-23/nextcloud-setup.png&#34; width=&#34;166&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce n&amp;rsquo;est qu&amp;rsquo;une fois que l&amp;rsquo;on a fournit ces infos et cliqué sur le bouton &amp;ldquo;Terminer&amp;hellip;&amp;rdquo; que l&amp;rsquo;installation se termine et que le fichier &lt;code&gt;config.php&lt;/code&gt; est téléchargé, comme beaucoup d&amp;rsquo;autres fichiers d&amp;rsquo;ailleurs. Ce n&amp;rsquo;était pas le cas avec la v20, la procédure d&amp;rsquo;installation a vraiment changé depuis cette version, et la copie de fichiers semble se faire désormais en deux étapes.&lt;/p&gt;&#xA;&lt;h4 id=&#34;les-logs&#34;&gt;Les Logs&#xA;&lt;/h4&gt;&lt;p&gt;Avant de continuer, un petit mot sur les logs. Le premier endroit à aller voir est celui du container. Soit via Portainer, soit en mode commande (nextcloud étant le nom du container) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker logs -f nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si l&amp;rsquo;on ne trouve rien à ce niveau (attendre parfois quelques minutes, j&amp;rsquo;ai observé des messages qui arrivaient avec un certain délai), il faut alors se tourner vers les logs Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;Le fichier à consulter est celui-ci (dans ma config) : &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/data/nextcloud.log&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;On peut modifier le niveau de log en allant éditer le fichier &lt;code&gt;config.php&lt;/code&gt; mentionné plus haut. Le paramètre &amp;rsquo;loglevel&amp;rsquo; est à 2 par défaut, on peut éventuellement le passer à DEBUG pour avoir le maximum d&amp;rsquo;informations (&lt;a class=&#34;link&#34; href=&#34;https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/logging_configuration.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;source&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;h3 id=&#34;base-de-données&#34;&gt;Base de données&#xA;&lt;/h3&gt;&lt;p&gt;Une fois l&amp;rsquo;installation terminée, je peux enfin y copier mon fichier &lt;code&gt;config.php&lt;/code&gt; en lieu et place de celui fournit par défaut.&lt;/p&gt;&#xA;&lt;p&gt;Je ne sais plus trop à quel moment j&amp;rsquo;ai encore une erreur liée à la base de donnée. C&amp;rsquo;est en fait lié aux trois paramètres supplémentaires que je n&amp;rsquo;ai pas indiqué dans la stack : &lt;code&gt;MYSQL_DATABASE&lt;/code&gt;, &lt;code&gt;MYSQL_USER&lt;/code&gt; et &lt;code&gt;MYSQL_PASSWORD&lt;/code&gt;. Là aussi, c&amp;rsquo;est nouveau par rapport à la v20. Et comme je ne les ai pas déclarés, Nextcloud se retrouve incapable d&amp;rsquo;accéder à la Base de Données avec l&amp;rsquo;utilisateur &amp;ldquo;pascal&amp;rdquo;. Cette fois, j&amp;rsquo;ai un message clair dans le log du container Nextcloud :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Doctrine&lt;span style=&#34;color:#ae81ff&#34;&gt;\D&lt;/span&gt;BAL&lt;span style=&#34;color:#ae81ff&#34;&gt;\E&lt;/span&gt;xception: Failed to connect to the database: An exception occurred in the driver: SQLSTATE&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;HY000&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;1045&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Access denied &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; user &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pascal&amp;#39;&lt;/span&gt;@&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;172.21.0.1&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;using password: YES&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; in /config/www/nextcloud/lib/private/DB/Connection.php:87&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Heureusement, la solution est assez facile pour résoudre ce problème, à savoir créer la BdD, l&amp;rsquo;utilisateur pascal et lui accorder les droits. On peut accéder à l&amp;rsquo;interface MySQL soit via la console de Portainer, soit dans un terminal avec la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ pascal@odroidhc2:~$ sudo docker exec -it nextclouddb bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;sudo&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; password &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; pascal:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@cdd5100474d7:/#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@cdd5100474d7:/# mysql -u root -p&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Enter password:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Welcome to the MariaDB monitor.  Commands end with ; or &lt;span style=&#34;color:#ae81ff&#34;&gt;\g&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Your MariaDB connection id is &lt;span style=&#34;color:#ae81ff&#34;&gt;42838&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Server version: 10.5.13-MariaDB-log MariaDB Server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Copyright &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;c&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; 2000, 2018, Oracle, MariaDB Corporation Ab and others.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Type &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;help;&amp;#39;&lt;/span&gt; or &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\h&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; help. Type &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\c&amp;#39;&lt;/span&gt; to clear the current input statement.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MariaDB &lt;span style=&#34;color:#f92672&#34;&gt;[(&lt;/span&gt;none&lt;span style=&#34;color:#f92672&#34;&gt;)]&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si l&amp;rsquo;on choisit la console Portainer du container MariaDB (appelé ici &lt;code&gt;nextclouddb&lt;/code&gt;), on ne tape que la commande mysql bien sûr. Une fois que l&amp;rsquo;on a le prompt MariaDB on exécute les commandes suivantes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MariaDB &lt;span style=&#34;color:#f92672&#34;&gt;[(&lt;/span&gt;none&lt;span style=&#34;color:#f92672&#34;&gt;)]&lt;/span&gt;&amp;gt; CREATE USER &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pascal&amp;#39;&lt;/span&gt; IDENTIFIED BY &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MariaDB &lt;span style=&#34;color:#f92672&#34;&gt;[(&lt;/span&gt;none&lt;span style=&#34;color:#f92672&#34;&gt;)]&lt;/span&gt;&amp;gt; CREATE DATABASE IF NOT EXISTS nextclouddb;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GRANT ALL PRIVILEGES ON nextclouddb.* TO &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pascal&amp;#39;&lt;/span&gt; IDENTIFIED BY &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FLUSH PRIVILEGES;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà, avec ces changements, l&amp;rsquo;installation de Nextcloud peut enfin se terminer correctement.&lt;/p&gt;&#xA;&lt;h3 id=&#34;mise-à-jour&#34;&gt;Mise à jour&#xA;&lt;/h3&gt;&lt;p&gt;Cette fois, la page d&amp;rsquo;accueil de Nextcloud s&amp;rsquo;ouvre enfin : je crois alors en avoir fini avec cette installation, mais un message m&amp;rsquo;informe qu&amp;rsquo;une mise à jour va avoir lieu&amp;hellip; Pourquoi pas, je valide, et un message d&amp;rsquo;erreur apparaît alors :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;360px&#34; data-flex-grow=&#34;150&#34; height=&#34;501&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud-version-23/Update-error.png&#34; width=&#34;752&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cette fois, j&amp;rsquo;ai tout de suite le bon réflexe : je vais voir le fameux fichier &lt;code&gt;config.php&lt;/code&gt; que j&amp;rsquo;ai recopié de l&amp;rsquo;ancienne version (pour ma configuration réseau). Et il y a bien une ligne : &lt;code&gt;&#39;version&#39; =&amp;gt; &#39;21.0.4.1&#39;,&lt;/code&gt; (soit mon ancienne version Nextcloud) que je transforme tout de suite en &lt;code&gt;&#39;version&#39; =&amp;gt; &#39;23.0.0.0&#39;,&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Je rafraîchis la page et la mise à jour s&amp;rsquo;effectue alors sans problème :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;513px&#34; data-flex-grow=&#34;213&#34; height=&#34;354&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud-version-23/update.png&#34; width=&#34;757&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, mon nouveau Nextcloud est enfin opérationnel !! :cool:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;353px&#34; data-flex-grow=&#34;147&#34; height=&#34;511&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud-version-23/nextcloud-final.png&#34; width=&#34;752&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Il m&amp;rsquo;est également arrivé après une mise à jour mineure (29.0.3 ver 29.0.11) de me retrouver avec une message m&amp;rsquo;informant que le serveur est en mode de maintenance, alors que la mise à jour a l&amp;rsquo;air de s&amp;rsquo;être bien passée.&lt;br&gt;&#xA;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2022/02/Capture-decran-du-2025-02-03-17-34-34.png&#34; &gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;571px&#34; data-flex-grow=&#34;238&#34; height=&#34;309&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud-version-23/Capture-decran-du-2025-02-03-17-34-34.png&#34; width=&#34;736&#34;&gt;&lt;/a&gt;&#xA;Là aussi, il faut aller dans le fichier &lt;code&gt;config.php&lt;/code&gt; et passer le paramètre &lt;code&gt;&#39;maintenance&#39; =&amp;gt; false&lt;/code&gt;, puis de rafraîchir la page.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Cela n&amp;rsquo;a pas été sans mal, mais je suis finalement assez satisfait : j&amp;rsquo;ai appris quelques nouveaux trucs utiles : la phase d&amp;rsquo;installation en deux temps, aller voir les logs, accéder à la Base de Données&amp;hellip; Ça peut servir dans l&amp;rsquo;avenir !&lt;/p&gt;&#xA;&lt;p&gt;Et j&amp;rsquo;ai aussi vu que pour l&amp;rsquo;utilisation que j&amp;rsquo;en fais (partage de dossiers), une réinstallation n&amp;rsquo;est pas un gros souci. Je n&amp;rsquo;utilise aucune APP, mes contacts et calendriers sont sauvegardés d&amp;rsquo;une autre manière, etc&amp;hellip; Recréer les dossiers de partage, et y recopier les fichiers (qui sont synchronisés sur le PC) n&amp;rsquo;est pas un problème et ne prend pas tant de temps que ça.&lt;/p&gt;&#xA;&lt;p&gt;Je rappelle tout de même que l&amp;rsquo;on peut à priori mettre à jour son container Nextcloud assez facilement, voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17941&#34; &gt;cet article&lt;/a&gt;. J&amp;rsquo;avoue que je l&amp;rsquo;avais un peu oublié quand je me suis lancé dans ma restauration, j&amp;rsquo;aurais sans doute pu m&amp;rsquo;en inspirer et me simplifier la vie ! :neutral:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Nouveau HD pour mon NAS  OpenMediaVault</title>
            <link>https://pled.fr/nouveau-hd-pour-mon-nas-openmediavault/</link>
            <pubDate>Fri, 04 Feb 2022 18:06:50 +0000</pubDate>
            <guid>https://pled.fr/nouveau-hd-pour-mon-nas-openmediavault/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;omv-icon.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme je commençais à recevoir des mails m&amp;rsquo;informant que mon disque externe (DATA) était occupé à 85%, je me suis dit qu&amp;rsquo;il était temps de le remplacer par un plus grand.&lt;/p&gt;&#xA;&lt;p&gt;Lors de &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16854&#34; &gt;l&amp;rsquo;installation d&amp;rsquo;OMV sur mon ODROID-HC2&lt;/a&gt;, j&amp;rsquo;avais utilisé un vieux HD de 1 To que j&amp;rsquo;avais en stock. Il était temps de doubler la taille : pour une cinquantaine d&amp;rsquo;euros, j&amp;rsquo;ai donc acheté un HD 3,5&amp;quot; - Seagate BarraCuda 2 To sur Amazon (je sais, c&amp;rsquo;est mal).&lt;/p&gt;&#xA;&lt;p&gt;Restait à effectuer le remplacement, et ça n&amp;rsquo;a pas été aussi simple que je l&amp;rsquo;aurais souhaité : entre le hard-reset du PC pendant la création d&amp;rsquo;une image Clonezilla, le crash de la SDcard qui contient l&amp;rsquo;OS du NAS OMV, les copies inutiles, les errements avec Docker, j&amp;rsquo;ai eu droit à un bel échantillon de la loi des emm.. maximum ! (également appelée &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Loi_de_Murphy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;loi de Murphy&lt;/a&gt;) :eek:&lt;/p&gt;&#xA;&lt;p&gt;Tout est désormais reparti, j&amp;rsquo;ai pu finalement tout restaurer même Nextcloud, mais pour ce dernier je ferais un article dédié.&lt;/p&gt;&#xA;&lt;p&gt;Dans cet article, je me limiterai au changement du HD. Finalement, j&amp;rsquo;aurais tout aussi bien pu le brancher directement et y restaurer mes sauvegardes &lt;code&gt;rsync&lt;/code&gt;, j&amp;rsquo;aurais gagné du temps ! Mais comme souvent, j&amp;rsquo;aurais au moins appris des choses qui me seront utiles la prochaine fois !&lt;/p&gt;&#xA;&lt;p&gt;Concernant la restauration des images Docker, j&amp;rsquo;ai mis à jour l&amp;rsquo;article &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17665&#34; &gt;OpenMediaVault : Sauvegarde &amp;amp; Restauration des containers Docker&lt;/a&gt; avec explications et exemple pas-à-pas.&lt;/p&gt;&#xA;&lt;h3 id=&#34;clonezilla&#34;&gt;Clonezilla&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai donc commencé par vouloir faire une image du disque de 1To avec Clonezilla, que j&amp;rsquo;aurais restaurée sur le nouveau. Du simple et efficace, à la restauration sur le nouveau HD, je devais juste passer en mode expert, et cocher l&amp;rsquo;option &amp;ldquo;-k1&amp;rdquo; pour étendre la partition à la nouvelle taille du disque. J&amp;rsquo;étais confiant ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;Une fois résolu le problème de trouver de la place de libre sur mes disques pour y écrire une image de presque 1To (!), branché le HD à l&amp;rsquo;arrache à la place de mon lecteur de DVD sur le PC, démarré sur la clef USB Clonezilla, et lancé la création de l&amp;rsquo;image, tout allait encore bien&amp;hellip; Et comme il y en avait pour des heures de copie, je suis donc sorti prendre l&amp;rsquo;air. Au retour, le PC avait redémarré et affichait le premier écran de Clonezilla. Je ne sais pas ce qu&amp;rsquo;il s&amp;rsquo;est passé, mais un bon gros &amp;ldquo;hard-reset&amp;rdquo; comme ça, ça ne sent pas bon, et mieux valait abandonner toute de suite que de relancer une tentative, vu la durée de l&amp;rsquo;opération. Bref, il était temps de passer au plan B.&lt;/p&gt;&#xA;&lt;h3 id=&#34;rsync&#34;&gt;Rsync&#xA;&lt;/h3&gt;&lt;p&gt;Puisque la solution Clonezilla avait échoué, je décide d&amp;rsquo;utiliser l&amp;rsquo;outil &lt;code&gt;rsync&lt;/code&gt;. Je lance donc la commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -av /media/pascal/DATA /New2GO/ODROID-EXT-HD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;/media/pascal/DATA&lt;/code&gt; est le point de montage de mon HD 1To connecté au PC.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;/New2GO/ODROID-EXT-HD&lt;/code&gt; est le dossier que j&amp;rsquo;ai créé sur un disque local pour la sauvegarde.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Et là, deuxième problème : au bout d&amp;rsquo;un moment la copie semble s&amp;rsquo;arrêter sur un fichier, plus rien ne se passe, et aucun message d&amp;rsquo;erreur ! le système répond au ping, mais pas à une connexion SSH&amp;hellip; Le diagnostique sera rapide : la SDcard de l&amp;rsquo;ODROID qui sert de disque système à OpenMediaVault vient de lâcher ! :mad: Bon c&amp;rsquo;est le problème avec ces cartes (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=11946&#34; &gt;cet article&lt;/a&gt;) : ça meurt d&amp;rsquo;un coup, et c&amp;rsquo;est sans espoir.&lt;/p&gt;&#xA;&lt;p&gt;Heureusement, j&amp;rsquo;avais une sauvegarde (une image clonezilla faite il y a un an, après avoir déplacé Docker sur le HD, donc à priori fonctionnelle puisque je n&amp;rsquo;ai pas fait de modifications particulières côté OMV depuis. Je redémarre donc sur cette carte, et ma foi tout se passe bien. :cool:&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;aurai juste un petit problème de mise à jour automatique, car le lendemain je recevais un mail avec ce genre d&amp;rsquo;erreur :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT RUN &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;/etc/cron-apt/config&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;: Fri Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;28&lt;/span&gt; 17:22:59 CET &lt;span style=&#34;color:#ae81ff&#34;&gt;2022&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT SLEEP: 155, Fri Jan &lt;span style=&#34;color:#ae81ff&#34;&gt;28&lt;/span&gt; 17:25:34 CET &lt;span style=&#34;color:#ae81ff&#34;&gt;2022&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT ACTION: 0-update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CRON-APT LINE: /usr/bin/apt-get  update -o quiet&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: Repository &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://deb.debian.org/debian buster InRelease&amp;#39;&lt;/span&gt; changed its &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Suite&amp;#39;&lt;/span&gt; value from &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;stable&amp;#39;&lt;/span&gt; to &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;oldstable&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: Repository &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://security.debian.org buster/updates InRelease&amp;#39;&lt;/span&gt; changed its &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Suite&amp;#39;&lt;/span&gt; value from &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;stable&amp;#39;&lt;/span&gt; to &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;oldstable&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: Repository &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://security.debian.org/debian-security buster/updates InRelease&amp;#39;&lt;/span&gt; changed its &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Suite&amp;#39;&lt;/span&gt; value from &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;stable&amp;#39;&lt;/span&gt; to &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;oldstable&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: Repository &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://deb.debian.org/debian buster-updates InRelease&amp;#39;&lt;/span&gt; changed its &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Suite&amp;#39;&lt;/span&gt; value from &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;stable-updates&amp;#39;&lt;/span&gt; to &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;oldstable-updates&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bon, ce sera vite réglé avec cette commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update --allow-releaseinfo-change&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Revenons donc à &lt;code&gt;rsync&lt;/code&gt; et à la copie de mon HD de 1 To. Puisque ma médiathèque Plex est déjà sauvegardée par un script hebdomadaire, je décide de l&amp;rsquo;exclure de la commande, ça me fera gagner 500 Go de fichiers à sauvegarder ! La syntaxe &lt;code&gt;rsync&lt;/code&gt; est assez simple, il suffit de savoir que le dossier que l&amp;rsquo;on donne à l&amp;rsquo;option &lt;code&gt;--exclude&lt;/code&gt; est le chemin relatif à la source donnée plus loin. Une fois ceci compris, le tape donc :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -av --exlcude OMV-DATA /media/pascal/DATA /New2GO/ODROID-EXT-HD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;OMV-DATA est donc un sous-répertoire de &lt;code&gt;/media/pascal/DATA&lt;/code&gt; qui contient ma médiathèque Plex.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Voilà, la sauvegarde &lt;code&gt;rsync&lt;/code&gt; s&amp;rsquo;effectue alors sans problème, je remarque au passage que j&amp;rsquo;aurais pu vider la corbeille de Nextcloud car je vois passer quelques gros fichiers sauvegardés inutilement.&lt;/p&gt;&#xA;&lt;p&gt;Je branche alors le nouveau HD 2To sur le PC et procède à l&amp;rsquo;opération inverse pour y copier tous les dossiers/fichiers précédemment sauvegardés, et voilà ! Normalement, je suis prêt à redémarrer OMV avec le nouveau HD de 2 To de connecté sur mon ODROID-HC2 contenant tout ce qu&amp;rsquo;il faut. C&amp;rsquo;est du moins ce que je croyais&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;openmediavault&#34;&gt;OpenMediaVault&#xA;&lt;/h3&gt;&lt;p&gt;Je redémarre donc OMV, et là, déception : si mon nouveau disque est bien détecté dans le menu Stockage/Disque, je dois le recréer dans Stockage/Système de fichiers, et ce faisant je perds toutes les données que j&amp;rsquo;y avais copié ! :mad:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;634px&#34; data-flex-grow=&#34;264&#34; height=&#34;207&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-hd-pour-mon-nas-openmediavault/stockage1-1.png&#34; width=&#34;547&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Toute ma copie précédente n&amp;rsquo;a donc servi à rien : Je vais devoir encore y recopier tous les fichiers ! Ce n&amp;rsquo;est pas un gros problème (c&amp;rsquo;est juste un peu long), et je le saurai pour la prochaine fois ! Bonne chose, les &amp;ldquo;Dossiers Partagés&amp;rdquo; d&amp;rsquo;OMV sont toujours présents, il faut donc bien garder le même libellé &amp;ldquo;DATA&amp;rdquo; pour éviter d&amp;rsquo;avoir à les recréer :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;344px&#34; data-flex-grow=&#34;143&#34; height=&#34;399&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nouveau-hd-pour-mon-nas-openmediavault/shares-1.png&#34; width=&#34;572&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bon, ça avance quand même. Côté PC, j&amp;rsquo;ajoute dans &lt;code&gt;/etc/rsync.conf&lt;/code&gt; un libellé [oms-root-rsync] qui pointe sur le &lt;code&gt;rsync&lt;/code&gt; fait plus haut sur &lt;code&gt;/New2GO/ODROID-EXT-HD&lt;/code&gt;, afin d&amp;rsquo;y avoir accès à partir du NAS (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17199&#34; &gt;ici&lt;/a&gt;). Je redémarre bien sûr le service rsync après cette modif :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Je me connecte ensuite en SSH sur le NAS, et je lance la copie de fichiers (troisième tentative !) en espérant que ce soit la bonne ! :neutral:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /srv/dev-disk-by-label-DATA/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo rsync -av rsync@192.168.1.20::omv-root-rsync .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cette fois la copie arrive à son terme, je peux enchaîner avec la médiathèque de Plex une fois le dossier OMV-DATA recréé :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /srv/dev-disk-by-label-DATA/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mkdir OMV-DATA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chown -R admin OMV-DATA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd OMV-DATA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo rsync -av rsync@192.168.1.20::omv-docus-rsync .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo rsync -av rsync@192.168.1.20::omv-films-rsync .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo rsync -av rsync@192.168.1.20::omv-series-rsync .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Voilà mon disque est enfin restauré. Finalement, j&amp;rsquo;aurais pu brancher le nouveau HD dès sa réception, et y restaurer mes sauvegardes &lt;code&gt;rsync&lt;/code&gt; ! Car c&amp;rsquo;est finalement ce que j&amp;rsquo;ai fini par faire, et cela a bien fonctionné. Peut-être le clone avec Clonezilla aurait pu permettre le remplacement transparent du HD, mais je ne le saurais pas&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Reste à m&amp;rsquo;occuper des containers Docker, la partie que je pensais la plus complexe au départ. En fait il s&amp;rsquo;agissait surtout de comprendre Docker, ce qu&amp;rsquo;est une image, un container, etc&amp;hellip; Tout est expliqué dans &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17665&#34; &gt;cet article&lt;/a&gt;, où j&amp;rsquo;ai ajouté une partie &amp;ldquo;Restauration&amp;rdquo;.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Nextcloud : mise à jour du container et limite de taille de fichiers à 1Go et 2 Go</title>
            <link>https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/</link>
            <pubDate>Mon, 23 Aug 2021 13:30:33 +0000</pubDate>
            <guid>https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;nextcloud.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai eu un problème avec Nextcloud sur le NAS OMV, à savoir que les fichiers de plus de 1GB que je partageais échouaient systématiquement au téléchargement. :oops:&lt;/p&gt;&#xA;&lt;p&gt;Je me suis dit que la première chose à faire, c&amp;rsquo;était de mettre à jour Nextcloud à la dernière version (vieux réflexe de support). Comme je ne m&amp;rsquo;étais pas encore penché sur la façon de mettre à jour mes containers docker, c&amp;rsquo;était l&amp;rsquo;occasion. Je vais ainsi passer Nextcloud de la version 20.0.5 à la 20.0.12, puis à la 21.0.4.&lt;/p&gt;&#xA;&lt;p&gt;Cela ne suffira pas à régler le problème d&amp;rsquo;origine, je me suis alors attaqué au problème de taille de fichiers partagés. Et je suis tombé sur deux limites à traiter : 1Go et 2Go. La première est due aux paramètres du proxy (swag), la seconde à l&amp;rsquo;architecture 32 bits de mon NAS.&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir tout cela&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;mise-à-jour-du-container-plex&#34;&gt;Mise à jour du Container Plex&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai mis à jour récemment (27/12/22) le container Plex, et j&amp;rsquo;indique ici la méthode, même si je n&amp;rsquo;ai pas pris les screenshots au bon moment !) :&lt;/p&gt;&#xA;&lt;p&gt;Dans l&amp;rsquo;onglet &lt;strong&gt;Image&lt;/strong&gt; de Portainer, on télécharge la dernière version :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;539px&#34; data-flex-grow=&#34;224&#34; height=&#34;262&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/plex1.png&#34; width=&#34;589&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une nouvelle image apparaît en bas dans la liste, avec une date récente. Elle est marquée &amp;ldquo;unused&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;2415px&#34; data-flex-grow=&#34;1006&#34; height=&#34;48&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/plex2.png&#34; width=&#34;483&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On passe maintenant dans l&amp;rsquo;onglet &lt;strong&gt;Containers&lt;/strong&gt; de Portainer, on arrête l&amp;rsquo;image plex actuelle, et on clique sur le nom du container. On renomme alors de &amp;ldquo;plex&amp;rdquo; à &amp;ldquo;plex.save&amp;rdquo; (cliquer sur le petit crayon) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;738px&#34; data-flex-grow=&#34;307&#34; height=&#34;171&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/plex3.png&#34; width=&#34;526&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis on clique sur le bouton &amp;ldquo;Duplicate/Edit&amp;rdquo;, et :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;On remet le nom &amp;ldquo;plex&amp;rdquo; d&amp;rsquo;origine.&lt;/li&gt;&#xA;&lt;li&gt;On désactive &amp;ldquo;Always pull the image&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;On clique sur &amp;ldquo;Deploy the container&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Et voilà ! le nouveau container est démarré, avec la dernière version de l&amp;rsquo;image ! Après avoir vérifié que tout fonctionne comme attendu, on peut supprimer l&amp;rsquo;ancien container (plex.save) et l&amp;rsquo;ancienne image.&lt;/p&gt;&#xA;&lt;p&gt;Simple et efficace.&lt;/p&gt;&#xA;&lt;h3 id=&#34;mise-à-jour-des-images-docker-à-vérifier&#34;&gt;Mise à jour des images docker (à vérifier)&#xA;&lt;/h3&gt;&lt;p&gt;Tant que j&amp;rsquo;y suis, je vais mettre à jour toute la stack : nextcloud, mariadb, et swag.&lt;/p&gt;&#xA;&lt;p&gt;Comme j&amp;rsquo;utilise une image Docker, je suis d&amp;rsquo;abord allé voir sur &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/linuxserver/nextcloud&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la page du container linuxserver/nextcloud&lt;/a&gt; ce qu&amp;rsquo;ils disaient à ce propos : Nextcloud fait partie des rares applications que l&amp;rsquo;on peut mettre à jour via l&amp;rsquo;interface graphique (tant mieux) à condition d&amp;rsquo;avoir vérifié que l&amp;rsquo;on utilise la dernière image docker disponible.&lt;/p&gt;&#xA;&lt;p&gt;Pour ce faire, Docker sur OpenMediaVault est fourni avec Portainer comme interface de gestion des containers. Il faut donc aller sur la page Portainer, puis choisir &amp;ldquo;Images&amp;rdquo; dans la partie gauche, entrer le nom de votre image docker, puis cliquer sur &amp;ldquo;Pull the image&amp;rdquo;. Voilà l&amp;rsquo;exemple pour &lt;code&gt;linuxserver/swag&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;537px&#34; data-flex-grow=&#34;223&#34; height=&#34;314&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/pull-image.png&#34; width=&#34;703&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et on fait la même chose pour &lt;code&gt;linuxserver/nextcloud&lt;/code&gt; et &lt;code&gt;linuxserver/mariadb&lt;/code&gt;. Une fois ceci fait, on observe en bas de la fenêtre que les images &lt;code&gt;&amp;lt;latest&amp;gt;&lt;/code&gt; sont bien les dernières téléchargées, et que mes anciennes images (datant de janvier dernier) sont tagguées en &lt;code&gt;&amp;lt;none&amp;gt;&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;709px&#34; data-flex-grow=&#34;295&#34; height=&#34;187&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/latest-image.png&#34; width=&#34;553&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Elles sont encore marquées &amp;ldquo;Unused&amp;rdquo;, c&amp;rsquo;est normal. Il va falloir maintenant redémarrer les containers. Comme je les avais installés en créant une &amp;ldquo;Stack&amp;rdquo; (on installe les 3 containers d&amp;rsquo;un coup, et cela permet d&amp;rsquo;indiquer la dépendance de Nextcloud vis-à-vis de mariadb), il faut cliquer sur &amp;ldquo;Stack&amp;rdquo; dans la partie gauche de la fenêtre, cliquer sur &amp;ldquo;nextcloud&amp;rdquo; (le nom de ma stack), puis sur &amp;ldquo;Stop this stack&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;560px&#34; data-flex-grow=&#34;233&#34; height=&#34;261&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/stack.png&#34; width=&#34;610&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il suffit alors de redémarrer la Stack, et les versions &lt;code&gt;&amp;lt;latest&amp;gt;&lt;/code&gt; que l&amp;rsquo;on vient de télécharger vont être automatiquement utilisées. On se retrouve donc avec les anciennes versions marquées &amp;ldquo;Unused&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;858px&#34; data-flex-grow=&#34;357&#34; height=&#34;187&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/unused.png&#34; width=&#34;669&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il est recommandé par la suite de les effacer, cela prend de la place sur le disque pour rien. Mais attendez tout de même de vérifier que les nouvelles fonctionnent correctement ! ;)&lt;/p&gt;&#xA;&lt;p&gt;Voilà, j&amp;rsquo;ai récupéré et mis en service les dernières versions des images docker fournies par &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/u/linuxserver&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Linuxserver&lt;/a&gt; pour swag, nextcloud et mariadb. Concernant Nextcloud, je peux donc passer à la mise à jour via l&amp;rsquo;interface graphique.&lt;/p&gt;&#xA;&lt;h2 id=&#34;mise-à-jour-de-nextcloud&#34;&gt;Mise à jour de Nextcloud&#xA;&lt;/h2&gt;&lt;p&gt;C&amp;rsquo;est très simple, il suffit d&amp;rsquo;aller sur la page d&amp;rsquo;administration (&lt;a class=&#34;link&#34; href=&#34;https://your.nextcloud.fr/settings/admin/overview%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://your.nextcloud.fr/settings/admin/overview)&lt;/a&gt;, puis de suivre les instructions. Là, on me propose de passer de la v20.0.5 à la 20.0.12, soit une upgrade mineure. Bon, pourquoi pas ? Après toute une série de vérifications, de téléchargement de la nouvelle version, etc&amp;hellip; l&amp;rsquo;assistant vous propose de continuer avec le &amp;ldquo;web based updater&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;292px&#34; data-flex-grow=&#34;121&#34; height=&#34;598&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/nextcloud-upgrade2.png&#34; width=&#34;729&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On valide, et l&amp;rsquo;on retrouve les habituelles instructions de sauvegarde avant de lancer pour de bon la mise à jour de Nextcloud :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;412px&#34; data-flex-grow=&#34;172&#34; height=&#34;425&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/nextcloud-upgrade1.png&#34; width=&#34;731&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une fois cette &amp;ldquo;mini&amp;rdquo; mise à jour terminée, je retourne sur la page d&amp;rsquo;administration, et là je vois qu&amp;rsquo;une nouvelle mise à jour m&amp;rsquo;est proposée : celle vers la v21.0.4 ! Cette fois, c&amp;rsquo;est beaucoup plus intéressant, je vais passer de la v20 à la v21 :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;253px&#34; data-flex-grow=&#34;105&#34; height=&#34;690&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/nextcloud-upgrade3.png&#34; width=&#34;729&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;La mise à jour s&amp;rsquo;effectue sans souci particulier, et après quelques minutes, j&amp;rsquo;ai ma nouvelle version Nextcloud qui tourne et est opérationnelle.&lt;/p&gt;&#xA;&lt;p&gt;Sauf qu&amp;rsquo;après un test rapide, mon problème de téléchargement de gros fichiers est toujours présent. Il va falloir investiguer pour de bon !&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-problème-de-téléchargement&#34;&gt;Le problème de téléchargement&#xA;&lt;/h3&gt;&lt;p&gt;Le problème était donc le suivant : je créais sous Nextcloud un lien public pour partager un fichier avec des amis, et lorsque le fichier faisait plus de 1Go, le téléchargement échouait systématiquement. En investiguant, je suis donc tombé sur deux limites : 1Go et 2Go.&lt;/p&gt;&#xA;&lt;h4 id=&#34;limite-2go&#34;&gt;Limite 2Go&#xA;&lt;/h4&gt;&lt;p&gt;Je commence par regarder les logs Nextcloud, et je vois ce genre de message :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;514px&#34; data-flex-grow=&#34;214&#34; height=&#34;393&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/truncated.png&#34; srcset=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/truncated_hu_6bec913f2237414a.png 800w, https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/truncated.png 842w&#34; width=&#34;842&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Si j&amp;rsquo;en crois ce message, le problème se situe quand le fichier dépasse 2Go&amp;hellip; Quelques recherches sur le net m&amp;rsquo;apportent vite la réponse : mon serveur (un odroidhc2) a un processeur armv7l, soit une architecture 32 bits :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo lshw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;odroidhc2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    description: ARMv7 Processor rev &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;v7l&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    product: Hardkernel Odroid XU4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    width: &lt;span style=&#34;color:#ae81ff&#34;&gt;32&lt;/span&gt; bits&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    capabilities: smp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or la version PHP utilisée par Nextcloud ne gère pas les fichiers de cette taille ! On trouve d&amp;rsquo;ailleurs cette information &lt;a class=&#34;link&#34; href=&#34;https://docs.nextcloud.com/server/20/admin_manual/configuration_files/big_file_upload_configuration.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;dans la doc&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;594px&#34; data-flex-grow=&#34;247&#34; height=&#34;282&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/filesizelimit.png&#34; width=&#34;699&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cette histoire de 32 bits ne m&amp;rsquo;avait pas tracassé à l&amp;rsquo;achat, mais là, je me rends compte qu&amp;rsquo;il est préférable d&amp;rsquo;avoir une architecture x64 de nos jours ! :( Le pire, c&amp;rsquo;est que cela pourrait être facilement corrigé, il y a longtemps que cette limite a été dépassée au niveau OS, mais il semble que les efforts de développement de Nextcloud préfèrent se porter ailleurs, et donc ce problème ne sera à priori pas corrigé.&lt;/p&gt;&#xA;&lt;p&gt;Bon, je retiens qu&amp;rsquo;il vaut mieux éviter le 32 bits désormais, ça commence à être un peu trop vieux !&lt;/p&gt;&#xA;&lt;p&gt;Ceci dit, cela ne m&amp;rsquo;affecte que si j&amp;rsquo;utilise l&amp;rsquo;upload par la page web, ou par l&amp;rsquo;adresse WebDav, lorsque je veux copier mon fichier dans Nextcloud. J&amp;rsquo;ai alors copié le fichier en ligne de commande sur la machine pour contourner le problème. J&amp;rsquo;ai créé un dossier &amp;ldquo;Public&amp;rdquo; dans Nextcloud, et dans mon cas le répertoire physique est &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/data/pascal/files/Public&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Saut qu&amp;rsquo;en copiant le fichier de cette manière, Nextcloud ne l&amp;rsquo;indexe pas, et il n&amp;rsquo;apparaît donc pas dans l&amp;rsquo;interface, pas moyen donc de le partager ! Là encore, il y a une solution : Via Portainer, on se connecte en mode console, et on lance l&amp;rsquo;indexation avec la commande suivante : &lt;code&gt;occ files:scan pascal&lt;/code&gt; (pascal étant le nom de l&amp;rsquo;utilisateur nextcloud) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;518px&#34; data-flex-grow=&#34;216&#34; height=&#34;279&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/occ.png&#34; width=&#34;603&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;opération est plutôt longue, plus de 20 minutes dans mon cas&amp;hellip; Mais une fois terminée, on voit apparaître notre fichier de plus de 2Go dans le dossier Nextcloud, et l&amp;rsquo;on peut enfin créer le lien de partage :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;344px&#34; data-flex-grow=&#34;143&#34; height=&#34;349&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/partage.png&#34; width=&#34;501&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;En procédant de cette manière, on contourne la limitation de 2Go qui en fait ne concerne que la phase &amp;ldquo;d&amp;rsquo;upload&amp;rdquo; du fichier vers Nextcloud. La phase &amp;ldquo;Download&amp;rdquo; fonctionnera très bien, quand il s&amp;rsquo;agira de &amp;ldquo;récupérer&amp;rdquo; le fichier.&lt;/p&gt;&#xA;&lt;h4 id=&#34;limite-de-1go&#34;&gt;Limite de 1Go&#xA;&lt;/h4&gt;&lt;p&gt;Mais avant que cela fonctionne, il reste une autre limite à régler, car les téléchargements échouent à 1Go, et cette fois sans aucun message d&amp;rsquo;erreur.&lt;/p&gt;&#xA;&lt;p&gt;Mon premier souci a été de reproduire le problème : en effet, sur mon réseau local, le téléchargement s&amp;rsquo;effectuait sans souci. Comme j&amp;rsquo;ai un abonnement VPN, j&amp;rsquo;ai activé celui-ci sur le PC, et cette fois j&amp;rsquo;ai pu reproduire l&amp;rsquo;erreur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1822px&#34; data-flex-grow=&#34;759&#34; height=&#34;79&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/download1.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;En surveillant de près la progression, c&amp;rsquo;était bien dès que le téléchargement en cours atteignait la taille de 1 Go que ce dernier s&amp;rsquo;arrêtait et s&amp;rsquo;affichait en &amp;ldquo;Échec&amp;rdquo; dans Firefox. Mais je n&amp;rsquo;avais aucun log, aucune autre information (enfin je n&amp;rsquo;ai rien trouvé en tout cas).&lt;/p&gt;&#xA;&lt;p&gt;Tout de même, comme cela fonctionnait sur le réseau local, je pouvais orienter mes recherches du côté du serveur proxy, à savoir le container &lt;strong&gt;swag&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Un petit essai avec &lt;code&gt;wget&lt;/code&gt; en ligne de commande me confirmait le problème : pour ce faire, il faut d&amp;rsquo;abord récupérer le lien direct dans Nextcloud en affichant la page du lien partagé, puis cliquer sur les trois petits points :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;400px&#34; data-flex-grow=&#34;166&#34; height=&#34;216&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/link.png&#34; width=&#34;360&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis dans un terminal, utiliser wget avec l&amp;rsquo;option &amp;ndash;no-check-certificate suivi du lien direct fourni par Nextcloud :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget --no-check-certificate https://Lien.direct.de.Netxcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En procédant de la sorte, j&amp;rsquo;ai pu voir que wget affichait &amp;ldquo;connection closed&amp;rdquo;, puis &amp;ldquo;retrying&amp;rdquo;, et arrivait ensuite à finir le téléchargement en reprenant le téléchargement à l&amp;rsquo;endroit où il s&amp;rsquo;était arrêté (désolé, je n&amp;rsquo;ai pas fait de capture d&amp;rsquo;écran). Mais cela renforçait la piste du proxy et le problème de la connexion https qui est fermée, sans doute pour un problème de taille&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Après moultes recherches sur le net, je suis tombé sur &lt;a class=&#34;link&#34; href=&#34;https://autoize.com/nextcloud-performance-troubleshooting/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;, très intéressante, et qui fournit beaucoup d&amp;rsquo;infos sur les problèmes de performance liés à Nextcloud. Concernant les téléchargements qui échouent à 1GB, ils indiquent 4 paramètres à ajouter au &amp;ldquo;ssl server block in your Nginx configuration for Nextcloud&amp;rdquo; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;proxy_buffering off;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssl_session_timeout 1d;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssl_session_cache shared:SSL:50m;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fastcgi_max_temp_file_size 0;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restait à trouver le fichier correspondant pour &lt;strong&gt;swag&lt;/strong&gt; ! Rappel : lors de l&amp;rsquo;installation du container, j&amp;rsquo;ai défini le volume suivant :&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/swag:/config&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Le fichier que je cherche est finalement :&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/swag/nginx/ssl.conf&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Les deux premiers paramètres sont déjà présents, je n&amp;rsquo;ai donc ajouté que les deux derniers. Et d&amp;rsquo;après la page, c&amp;rsquo;est &lt;code&gt;fastcgi_max_temp_file_size&lt;/code&gt; qui par défaut limite la taille des fichiers à 1GB. En le mettant à 0, on supprime la limite.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, je redémarre le proxy, et je relance le download, et cette fois le téléchargement s&amp;rsquo;effectue jusqu&amp;rsquo;au bout sans souci :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1777px&#34; data-flex-grow=&#34;740&#34; height=&#34;81&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-mise-a-jour-du-container-et-limite-de-taille-de-fichiers-a-1go-et-2-go/downloadok.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je teste avec un fichier de plus de 2 Go, cela fonctionne également !&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Toute cette affaire m&amp;rsquo;a appris à mettre à jour mes containers, et c&amp;rsquo;est plutôt facile. Bonne nouvelle, je suis pour l&amp;rsquo;instant très satisfait de l&amp;rsquo;utilisation de Docker.&lt;/p&gt;&#xA;&lt;p&gt;Cette limite de 1 Go par défaut pour la taille de fichiers est surprenante, je me demande bien pourquoi le paramètre n&amp;rsquo;est pas ajusté en conséquence ? Par contre, ce n&amp;rsquo;est pas un problème Nextcloud, mais du Proxy que l&amp;rsquo;on utilise&amp;hellip; Ici, c&amp;rsquo;est &lt;strong&gt;Swag&lt;/strong&gt;, un container fournissant un web serveur &lt;strong&gt;nginx&lt;/strong&gt; avec &lt;strong&gt;php7&lt;/strong&gt;, &lt;strong&gt;fail2ban&lt;/strong&gt; (pour les intrusions), et &lt;strong&gt;Let&amp;rsquo;s Encrypt&lt;/strong&gt; (pour les certificats) : plutôt pratique quand même ! ;)&lt;/p&gt;&#xA;&lt;p&gt;Enfin, l&amp;rsquo;architecture 32 bits, qui commence à être abandonnée par les éditeurs (Ubuntu par exemple), est à éviter de nos jours. Ici, c&amp;rsquo;est un bug connu qui ne sera pas corrigé. Si j&amp;rsquo;avais su, j&amp;rsquo;en aurai tenu compte lors de l&amp;rsquo;achat de &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16854&#34; &gt;mon NAS&lt;/a&gt;, mais je retiens la leçon.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>OpenMediaVault : Sauvegarde &amp; Restauration des containers Docker</title>
            <link>https://pled.fr/openmediavault-sauvegarde-des-containers-docker/</link>
            <pubDate>Fri, 14 May 2021 16:12:29 +0000</pubDate>
            <guid>https://pled.fr/openmediavault-sauvegarde-des-containers-docker/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;docker.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Lors de mon article sur l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17199&#34; &gt;organisation de mes sauvegardes&lt;/a&gt; sur mon NAS OpenMediaVault, il me manquait la bonne façon de sauvegarder les containers Docker.&lt;/p&gt;&#xA;&lt;p&gt;Je sauvegardais avec rsync le répertoire où se trouve Docker, il y avait des milliers de fichiers, et je ne pense pas que j&amp;rsquo;aurais pu faire grand chose de cette sauvegarde en cas de problème ! :(&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc cherché du côté de Docker, et sans surprise Docker propose sa propre solution pour la sauvegarde des containers. Les principales commandes sont expliquées sur ce schéma :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;353px&#34; data-flex-grow=&#34;147&#34; height=&#34;283&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-sauvegarde-des-containers-docker/docker-commands-2.jpg&#34; width=&#34;417&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;idée est donc de créer une image de chaque container (commande &lt;code&gt;COMMIT&lt;/code&gt;), puis de les sauvegarder au format .tar (commande &lt;code&gt;SAVE&lt;/code&gt;). On voit sur l&amp;rsquo;image les commandes &lt;code&gt;LOAD&lt;/code&gt; et &lt;code&gt;RUN&lt;/code&gt; qu&amp;rsquo;il faudra utiliser dans l&amp;rsquo;autre sens pour la restauration.&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Suite à un crash disque, j&amp;rsquo;ai été amené à restaurer ces images Docker, et comprendre qu&amp;rsquo;ils ne contiennent en fait que les binaires permettant de créer des containers à l&amp;rsquo;identique (même version), compatibles avec nos fichiers de configuration existants.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ajoute donc une partie &amp;ldquo;Restauration&amp;rdquo; à cet article (avec explications et exemple pas-à-pas), qui ainsi sera plus complet.&lt;/p&gt;&#xA;&lt;p&gt;Ensuite, il fallait que je copie ces fichiers &lt;code&gt;.tar&lt;/code&gt; sur mon PC à l&amp;rsquo;aide de &lt;code&gt;rsync&lt;/code&gt;, puisque j&amp;rsquo;ai déjà un serveur rsync qui tourne sur ce dernier. Il ne restait plus qu&amp;rsquo;à faire un peu de ménage avec ces images et fichiers créés sur le NAS ou sur le PC pour avoir quelque chose de propre.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc préparé un script qui fait tout ça, que j&amp;rsquo;ai ensuite ajouté en tâche &lt;code&gt;crontab&lt;/code&gt; au système. Ainsi mes containers sont sauvegardés chaque semaine.&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir un peu tout cela en détail. On aura ainsi un script automatique pour la sauvegarde de images, puis comment les restaurer et recréer les containers docker à partir de ceux-ci.&lt;/p&gt;&#xA;&lt;p&gt;Dans l&amp;rsquo;explication ci-dessous, je ne traite que d&amp;rsquo;un seul container comme exemple (Nextcloud), il suffit d&amp;rsquo;appliquer les mêmes actions pour chaque container utilisé sur votre serveur que vous souhaitez sauvegarder.&lt;/p&gt;&#xA;&lt;p&gt;Nous avons d&amp;rsquo;abord besoin d&amp;rsquo;identifier le nom de l&amp;rsquo;image de notre container. Pour cela, on va utiliser la commande &lt;code&gt;docker images&lt;/code&gt; et noter le REPOSITORY soit &lt;code&gt;linuxserver/nextcloud&lt;/code&gt; ci-dessous :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo docker images&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY                           TAG       IMAGE ID       CREATED        SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;linuxserver/nextcloud                latest    70e33dd606b8   &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; months ago   330MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dans le cas où le REPOSITORY est vide (ça m&amp;rsquo;est arrivé après une restauration je pense), taper &lt;code&gt;sudo docker ps&lt;/code&gt; et noter le NAME (soit &lt;code&gt;nextcloud&lt;/code&gt; ici) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo docker ps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CONTAINER ID   IMAGE          ...       NAMES&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;d1ae35bfa2f1   ad54fea6e081   ...       nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;script---première-partie&#34;&gt;Script - première partie&#xA;&lt;/h3&gt;&lt;p&gt;Dans un premier temps, on va définir quelques variables qui nous seront utiles dans le script : d&amp;rsquo;abord un répertoire où créer les fichiers image (disque externe du NAS OMV), ainsi qu&amp;rsquo;une variable pour ajouter un &amp;ldquo;time-tamp&amp;rdquo; aux fichiers que l&amp;rsquo;on va créer ; puis le nom de l&amp;rsquo;image (le REPOSITORY noté ci-dessus), qui nous permettra d&amp;rsquo;aller chercher le container ID, et enfin le nom de l&amp;rsquo;image.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# init des variables&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;backup_dir&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/srv/dev-disk-by-label-DATA/Docker-Containers-Backup/&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;now&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +%d-%m-%Y-%H-%M-%S&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nextcloud_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;linuxserver/nextcloud&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nextcloud_imgid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;docker ps -a -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ancestor=&lt;/span&gt;$nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -q -l&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bck_nextcloud_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;backup_nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si on utilise le NAME, alors &lt;code&gt;nextcloud_imgname=&amp;quot;nextcloud&amp;quot;&lt;/code&gt; et on remplace &lt;code&gt;ancestor&lt;/code&gt; par &lt;code&gt;name&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# init des variables&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;backup_dir&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/srv/dev-disk-by-label-DATA/Docker-Containers-Backup/&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;now&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +%d-%m-%Y-%H-%M-%S&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nextcloud_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nextcloud&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nextcloud_imgid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;docker ps -a -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name=&lt;/span&gt;$nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -q -l&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bck_nextcloud_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;backup_nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Une fois ceci fait, on peut créer une image du container :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Création de l&amp;#39;image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker commit -p &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$nextcloud_imgid&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis on copie cette image au format .tar dans un dossier du NAS défini plus haut :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Sauvegarde de l&amp;#39;image sur le disque externe du NAS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker save -o  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;_&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$now&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;.tar &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis on compresse l&amp;rsquo;archive :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Compression des archives&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gzip &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;*.tar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à envoyer l&amp;rsquo;archive sur le PC, où tourne un serveur &lt;code&gt;rsync&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;serveur-ssh-sur-pc&#34;&gt;Serveur SSH sur PC&#xA;&lt;/h3&gt;&lt;p&gt;Pour éviter d&amp;rsquo;avoir à entrer un mot de passe lorsque le script arrive à cette étape, il m&amp;rsquo;a fallu activer le serveur SSH sur le PC :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@SH87R:~$ sudo apt install openssh-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour en limiter l&amp;rsquo;accès, j&amp;rsquo;ai modifié le fichier &lt;code&gt;/etc/deny.hosts&lt;/code&gt; du PC en y ajoutant la ligne suivante (l&amp;rsquo;adresse IP étant celle du NAS):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@SH87R:~$ sshd: ALL EXCEPT 192.168.1.30&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et je redémarre le service &lt;code&gt;sshd&lt;/code&gt; dans la foulée :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@SH87R:~$ sudo systemctl restart sshd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Côté NAS, il faut maintenant générer la clef pour permettre le login automatique (taper Entrée pour toutes les questions) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ ssh-keygen&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis on copie la clef sur le PC avec l&amp;rsquo;utilisateur &lt;strong&gt;rsync&lt;/strong&gt; (l&amp;rsquo;adresse IP est cette fois celle du PC) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ ssh-copy-id -i /home/pascal/.ssh/id_rsa.pub rsync@192.168.1.20&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà, la commande &lt;code&gt;rsync&lt;/code&gt; que l&amp;rsquo;on va utiliser dans le script pourra désormais se logguer sans avoir à saisir de mot de passe.&lt;/p&gt;&#xA;&lt;h3 id=&#34;script---deuxième-partie&#34;&gt;Script - deuxième partie&#xA;&lt;/h3&gt;&lt;p&gt;Retour au script donc, où il s&amp;rsquo;agit de copier le(s) fichier(s) images compressés vers le PC :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Copie des images compressées vers le PC&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -a --delete &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; rsync@192.168.1.20::omv-containers-rsync/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;NOTES&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;il ne faut pas utiliser de &amp;ldquo;wildcards&amp;rdquo; comme le caractère &amp;ldquo;*&amp;rdquo; dans la commande &lt;code&gt;rsync&lt;/code&gt; si l&amp;rsquo;on veut que l&amp;rsquo;option &lt;code&gt;--delete&lt;/code&gt; fonctionne !&lt;/li&gt;&#xA;&lt;li&gt;J&amp;rsquo;utilise cette option &lt;code&gt;--delete&lt;/code&gt; afin d&amp;rsquo;effacer de la destination (sur le PC donc) les fichiers qui ne sont pas présents sur la source. L&amp;rsquo;idée est de ne garder qu&amp;rsquo;une seule version des containers, chaque nouvelle sauvegarde effacera la sauvegarde précédente. Il doit être possible d&amp;rsquo;améliorer le script pour établir un système plus sophistiqué de sauvegardes, mais pour l&amp;rsquo;instant cela me convient tel quel.&lt;/li&gt;&#xA;&lt;li&gt;Pour la syntaxe de type &lt;code&gt;rsync@adresse_IP::nom_module&lt;/code&gt; utilisée, voir l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17199&#34; &gt;article des sauvegardes&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à faire le ménage sur le NAS, à savoir effacer le fichier archive (désormais copié sur le PC) mais aussi effacé l&amp;rsquo;image docker que l&amp;rsquo;on peut voir sur une commande &lt;code&gt;docker images&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo docker images&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY                           TAG       IMAGE ID       CREATED          SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;backup_nextcloud                     latest    73e18450d11a   &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; seconds ago   331MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;linuxserver/nextcloud                latest    70e33dd606b8   &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; months ago     330MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On efface donc fichier et image docker en ajoutant ces lignes au script :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Nettoyage des fichiers et images&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker rmi &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;*.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, notre script est prêt. Il ne reste plus qu&amp;rsquo;à l&amp;rsquo;ajouter au crontab du compte root, afin qu&amp;rsquo;il ait les droits d&amp;rsquo;exécuter les commandes docker. On exécute donc &lt;code&gt;sudo crontab -e&lt;/code&gt; pour ajouter la tâche, et voici ce que ça donne pour une exécution tous les dimanches à 13h30 :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo crontab -l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# m h  dom mon dow   command&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;13&lt;/span&gt; * * &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; /home/pascal/docker-container-backup.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà ce que donne le script avec les trois containers nécessaires à Nextcloud (Nextcloud, Mariadb et Swag) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat docker-container-backup.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;##########################################################&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Script de backup des containers Docker.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;##########################################################&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# init des variables&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;backup_dir&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/srv/dev-disk-by-label-DATA/Docker-Containers-Backup/&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;now&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +%d-%m-%Y-%H-%M-%S&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nextcloud_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;linuxserver/nextcloud&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nextcloud_imgid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;docker ps -a -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ancestor=&lt;/span&gt;$nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -q -l&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bck_nextcloud_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;backup_nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swag_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;linuxserver/swag&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;swag_imgid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;docker ps -a -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ancestor=&lt;/span&gt;$swag_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -q -l&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bck_swag_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;backup_swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mariadb_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;linuxserver/mariadb&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mariadb_imgid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;docker ps -a -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ancestor=&lt;/span&gt;$mariadb_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -q -l&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bck_mariadb_imgname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;backup_mariadb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Création des images&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker commit -p &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$nextcloud_imgid&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker commit -p &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$swag_imgid&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_swag_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker commit -p &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$mariadb_imgid&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_mariadb_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Sauvegarde des images sur le disque externe du NAS backup_dir&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker save -o  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;_&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$now&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;.tar &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker save -o  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;$bck_swag_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;_&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$now&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;.tar &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_swag_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker save -o  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;$bck_mariadb_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;_&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$now&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;.tar &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_mariadb_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Compression des archives&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gzip &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;*.tar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Copie des images compressées vers le PC&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -a --delete &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; rsync@192.168.1.20::omv-containers-rsync/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Nettoyage des images&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker rmi &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_nextcloud_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker rmi &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_swag_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker rmi &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$bck_mariadb_imgname&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Nettoyage des fichiers&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$backup_dir&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;*.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#Fin du script&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà mes sauvegardes sur le PC :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;467px&#34; data-flex-grow=&#34;194&#34; height=&#34;379&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-sauvegarde-des-containers-docker/nautilus.png&#34; width=&#34;739&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je peux désormais dormir tranquille ! :cool:&lt;/p&gt;&#xA;&lt;h3 id=&#34;problème-rencontré&#34;&gt;Problème rencontré&#xA;&lt;/h3&gt;&lt;p&gt;Suite à un plantage du NAS qui ne répondait plus, et que j&amp;rsquo;ai donc du redémarrer en débranchant/rebranchant l&amp;rsquo;alimentation, tout est bien reparti, mais tous mes containers avaient pour REPOSITORY un simple &amp;ldquo;none&amp;rdquo; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker images&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY            TAG       IMAGE ID       CREATED        SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;none&amp;gt;                latest    70e33dd606b8   &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; months ago   240MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ce qui empêchait le script de backup de fonctionner ; c&amp;rsquo;est comme ça que je me suis rendu compte du problème d&amp;rsquo;ailleurs, puisque sinon tout fonctionnait !&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai pu les renommer avec leur ancien nom avec la commande &lt;code&gt;docker tag&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker tag 70e33dd606b8 linuxserver/nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker images&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY            TAG       IMAGE ID       CREATED        SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;none&amp;gt;                latest    70e33dd606b8   &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; months ago   240MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;linuserver/nextcloud  latest    70e33dd606b8   &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; months ago   240MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cette commande crée en fait un nouveau tag (un alias en fait) pointant sur la même image (70e33dd606b8), il faut donc ensuite utiliser la commande &lt;code&gt;docker rmi&lt;/code&gt; pour supprimer le tag inutile :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo docker rmi mauvais/tag:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Je n&amp;rsquo;ai pas vraiment analysé ce qui c&amp;rsquo;était passé lors de ce plantage. Apparemment, OMV a bien redémarré mais a créé un nouveau container pour &lt;strong&gt;portainer&lt;/strong&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;2299px&#34; data-flex-grow=&#34;957&#34; height=&#34;69&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-sauvegarde-des-containers-docker/portainer.png&#34; width=&#34;661&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bon, je n&amp;rsquo;ai pas creusé plus loin, mais cela explique sans doute le problème de tag&amp;hellip; L&amp;rsquo;essentiel est que tout ait redémarré sans autre problème. Je peux effacer le container &amp;ldquo;unused&amp;rdquo;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;restauration-des-images&#34;&gt;Restauration des images&#xA;&lt;/h3&gt;&lt;p&gt;Comme je le disais plus haut, suite à un crash disque, j&amp;rsquo;ai été amené à restaurer ces images : il y a quelques trucs à comprendre avant de se lancer.&lt;/p&gt;&#xA;&lt;h4 id=&#34;principes&#34;&gt;Principes&#xA;&lt;/h4&gt;&lt;p&gt;Ces images Docker ne sont en fait que les binaires de votre container. Puisque l&amp;rsquo;on conserve (ou que l&amp;rsquo;on restaure) toute la config des containers dans les sous-dossiers &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData&lt;/code&gt;, il est important de recréer le container avec le même binaire.&lt;/p&gt;&#xA;&lt;p&gt;Typiquement, si l&amp;rsquo;on utilisait une version plus récente, il est possible que des changements aient été apportés : nouveaux paramètres, fichier config modifiés, arborescence, etc&amp;hellip; On s&amp;rsquo;exposerait alors à une incompatibilité, et donc à un dysfonctionnement. D&amp;rsquo;où l&amp;rsquo;intérêt de restaurer ces images, puis de lancer le container à partir de cette image : on garde ainsi le même &amp;ldquo;couple&amp;rdquo; binaire &amp;amp; config, et on s&amp;rsquo;assure de tout pouvoir retrouver à l&amp;rsquo;identique.&lt;/p&gt;&#xA;&lt;p&gt;Tout cela paraît très logique et très simple, mais il vaut mieux le savoir avant de se lancer !&lt;/p&gt;&#xA;&lt;h4 id=&#34;mise-en-œuvre&#34;&gt;Mise en œuvre&#xA;&lt;/h4&gt;&lt;p&gt;Prenons le container Plex comme exemple. On commence donc par récupérer le fichier backup préparé comme indiqué plus haut sur le NAS, puis on le décompresse :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo gunzip backup_plex_16-05-2021-13-30-01.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On obtient alors un fichier .tar, qu&amp;rsquo;il suffit de charger, soit en mode commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker load -i backup_plex_16-05-2021-13-30-01.tar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;f7d9c37ee65c: Loading layer  416.8kB/416.8kB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Loaded image: backup_plex:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On vérifie qu&amp;rsquo;il est bien présent :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker images&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY                           TAG       IMAGE ID       CREATED       SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;backup_plex                          latest    fdb5ba792f9e   &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; days ago    272MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;À ce stade, l&amp;rsquo;image est chargée, et on peut la voir dans Portainer/Images, mais en status &amp;ldquo;unused&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;606px&#34; data-flex-grow=&#34;252&#34; height=&#34;237&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-sauvegarde-des-containers-docker/portainer1-1.png&#34; width=&#34;599&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On peut bien sûr changer le nom du repository. Comme expliqué plus haut, il suffit de créer un nouvel alias puis de supprimer l&amp;rsquo;ancien :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker tag backup_plex:latest plex:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker images&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY                           TAG       IMAGE ID       CREATED        SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;backup_plex                          latest    fdb5ba792f9e   &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; days ago     272MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;plex                               latest    fdb5ba792f9e   &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; days ago     272MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker rmi backup_plex:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker images&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REPOSITORY                           TAG       IMAGE ID       CREATED        SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;plex                               latest    fdb5ba792f9e   &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; days ago     272MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mais restons avec &lt;code&gt;backup_plex&lt;/code&gt; pour la suite de cet exemple, ce sera plus clair.&lt;/p&gt;&#xA;&lt;p&gt;Avant de recréer le container, on vérifie que l&amp;rsquo;on a toujours les fichiers de config et de media de notre serveur Plex, que l&amp;rsquo;on a défini lors de la création du container dans la section &amp;ldquo;Volumes&amp;rdquo; d&amp;rsquo;OMV :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   volumes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/AppData/Plex:/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/OMV-DATA/Series:/Series&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/OMV-DATA/Films:/Films&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/OMV-DATA/Docus:/Docus&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On peut alors recréer le container : soit par la commande &lt;code&gt;docker run&lt;/code&gt;, soit avec l&amp;rsquo;outil &lt;code&gt;docker-compose&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://docs.docker.com/desktop/backup-and-restore/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;source&lt;/a&gt;). Autant alors le faire en mode &lt;code&gt;docker-compose&lt;/code&gt; via Portainer, c&amp;rsquo;est plus simple que la commande &lt;code&gt;docker run&lt;/code&gt; à laquelle il faudrait passer plein d&amp;rsquo;options.&lt;/p&gt;&#xA;&lt;p&gt;Et comme j&amp;rsquo;ai précieusement conservé mes &amp;ldquo;stacks&amp;rdquo; d&amp;rsquo;origine, rien de plus facile que de recréer le container, en faisant attention toutefois à donner le nom de l&amp;rsquo;image que l&amp;rsquo;on vient de créer :&lt;/p&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://pled.fr/wp-content/uploads/2022/02/plex%5Fstack-1.png&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;On clique sur le bouton &amp;ldquo;Deploy the Stack&amp;rdquo; de Portainer, et le container est alors créé puis lancé. On peut vérifier que l&amp;rsquo;on a bien utilisé notre image avec la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker container ls&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CONTAINER ID   IMAGE          COMMAND     CREATED      STATUS               PORTS      NAMES&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;7504da49ff62   fdb5ba792f9e   &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/init&amp;#34;&lt;/span&gt;     &lt;span style=&#34;color:#ae81ff&#34;&gt;39&lt;/span&gt; seconds ago      Up &lt;span style=&#34;color:#ae81ff&#34;&gt;37&lt;/span&gt; seconds                   plex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;L&amp;rsquo;identifiant de l&amp;rsquo;image pour ce container est bien le même : fdb5ba792f9e&amp;hellip; Et voilà, l&amp;rsquo;instance Plex tourne, et l&amp;rsquo;on retrouve tout de suite toute la médiathèque à l&amp;rsquo;adresse &lt;code&gt;http://192.168.1.X:32400/web/index.html&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;Si la partie &amp;ldquo;backup&amp;rdquo; a été assez facile à mettre au point, la partie &amp;ldquo;restore&amp;rdquo; à été plus laborieuse, puisque je n&amp;rsquo;avais pas vraiment compris ce que contenaient ces images.&lt;/p&gt;&#xA;&lt;p&gt;En fait je mélangeais allègrement les concepts d&amp;rsquo;images et de containers. Or une image n&amp;rsquo;est que la partie binaire (version X du soft Y au format Docker). À partir de cette image, on crée un container qui aura ses fichiers de configuration etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Voilà l&amp;rsquo;utilité de ces sauvegardes d&amp;rsquo;images Docker : s&amp;rsquo;assurer de garder les mêmes binaires à disposition, afin de conserver leur compatibilité avec mes fichiers de configuration.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est ainsi que l&amp;rsquo;on retrouve son container &amp;ldquo;à l&amp;rsquo;identique&amp;rdquo;. :cool:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Openmediavault : Organisation des sauvegardes</title>
            <link>https://pled.fr/openmediavault-strategie-de-sauvegarde/</link>
            <pubDate>Thu, 11 Feb 2021 18:07:55 +0000</pubDate>
            <guid>https://pled.fr/openmediavault-strategie-de-sauvegarde/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;clonezilla.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après voir mis en place mon serveur OMV, installé Plex, Nextcloud et qBittorrent-OpenVPN, il était temps de penser à la sauvegarde !&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai abandonné la baie Synology avec son RAID 1 (2 disques en miroir), et je n&amp;rsquo;ai plus qu&amp;rsquo;un seul disque sur mon magnifique Odroid-hc2 ! Et même si le RAID n&amp;rsquo;est une solution de sauvegarde, je ne sauvegardais que mes données avec la baie Synology.&lt;/p&gt;&#xA;&lt;p&gt;Il s&amp;rsquo;agit maintenant de tout sauvegarder, alors voilà comment je me suis organisé :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;pour les données, j&amp;rsquo;ai mis en place des jobs Rsync, ce que OMV permet de faire très facilement. La cible de sauvegarde se trouve sur le PC, sur lequel tourne un daemon Rsync.&lt;/li&gt;&#xA;&lt;li&gt;pour les containers Docker, après un premier essai avec Rsync (non concluant, voir plus bas), j&amp;rsquo;ai fait &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17665&#34; &gt;un article dédié&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;pour le disque système d&amp;rsquo;OMV, après avoir essayé sans succès des scripts utilisant la commande &lt;code&gt;dd&lt;/code&gt;, je me suis rabattu sur Clonezilla pour sauvegarder une image de la carte microSD qui sert de disque système au odroid-hc2.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Voyons tout cela en détail&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-serveur-rsync-sur-le-pc&#34;&gt;Le serveur Rsync sur le PC&#xA;&lt;/h3&gt;&lt;p&gt;On commence par installer un serveur Rsync sur le PC, où seront sauvegardées mes données d&amp;rsquo;OMV. J&amp;rsquo;ai déjà décrit en détail cette procédure dans &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=10062&#34; &gt;un article&lt;/a&gt; au temps de la baie Synology, je me limite donc à l&amp;rsquo;essentiel ici :&lt;/p&gt;&#xA;&lt;p&gt;Il faut d&amp;rsquo;abord autoriser le service &lt;strong&gt;rsync&lt;/strong&gt; à se lancer en éditant le fichier &lt;code&gt;/etc/default/rsync&lt;/code&gt; pour y modifier la ligne suivante comme suit : &lt;code&gt;RSYNC_ENABLE=true&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Il faut ensuite créer un fichier de configuration &lt;code&gt;/etc/rsyncd.conf&lt;/code&gt; pour y définir principalement le ou les différent(s) dossier(s) sur le PC qui seront utilisés pour chaque tâche de sauvegarde, qui est identifiée par un nom de module entre crochets :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal$ cat /etc/rsyncd.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max connections &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log file &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /var/log/rsyncd.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;timeout &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;omv-films-rsync&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   path &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /Disk1/OMV-FILMS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   comment &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Sauvegarde fichiers Films de Plex sur le NAS OMV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   read only &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts allow &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 192.168.1.30&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts deny &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;omv-docus-rsync&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   path &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /Disk2/OMV-DOCUS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   comment &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Sauvegarde fichiers Docus de Plex sur le NAS OMV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   read only &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts allow &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 192.168.1.30&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts deny &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;omv-AppData-rsync&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   path &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /Disk2/OMV-AppData&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   comment &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Sauvegarde fichiers AppData sur le NAS OMV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   read only &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts allow &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 192.168.1.30&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts deny &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On commence par définir l&amp;rsquo;utilisateur, puis pour chaque dossier un &amp;lsquo;module&amp;rsquo; (par ex. &lt;code&gt;[omv-rsync-films]&lt;/code&gt;) où l&amp;rsquo;on définit le chemin, l&amp;rsquo;adresse IP autorisée, etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Dans mon cas, c&amp;rsquo;est l&amp;rsquo;utilisateur rsync, et je place les films de mon serveur Plex dans un dossier sur Disk1, et vu la taille, je mets le reste sur Disk2, à savoir les documentaires de Plex, ainsi que toute la partie Docker d&amp;rsquo;OMV (docker + les fichiers de configuration des containers, voir l&amp;rsquo;article &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17223&#34; &gt;Déplacement de Docker&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Enfin, il faut créer l&amp;rsquo;utilisateur rsync, lui donner un mot de passe, puis les droits sur les dossiers utilisés :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo useradd rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo passwd rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo groupadd rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo gpasswd -a rsync rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chown -R rsync:rsync /Disk1/Odroid-OMV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chmod -R &lt;span style=&#34;color:#ae81ff&#34;&gt;775&lt;/span&gt; /Disk1/Odroid-OMV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voilà pour la partie côté PC (destination de la sauvegarde).&lt;/p&gt;&#xA;&lt;h3 id=&#34;les-jobs-rsync-côté-omv&#34;&gt;Les jobs Rsync côté OMV&#xA;&lt;/h3&gt;&lt;p&gt;Grâce à OMV, cette partie est vraiment très facile. On se place donc dans la section &amp;ldquo;Services-Rsync&amp;rdquo;, et l&amp;rsquo;on crée un &amp;lsquo;job&amp;rsquo; pour chaque tâche que l&amp;rsquo;on souhaite définir :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;566px&#34; data-flex-grow=&#34;236&#34; height=&#34;370&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/rsync1.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/rsync1_hu_b8d0b07658156f1e.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/rsync1.png 874w&#34; width=&#34;874&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai depuis cet article supprimé la sauvegarde de AppData des jobs rsync, ce dossier comporte des milliers de petits fichiers, et ça ne sert pas à grand chose de le sauvegarder. À relier avec la façon de sauvegarder les containers Docker ci-dessous.&lt;/p&gt;&#xA;&lt;p&gt;Pour chaque job, on définit donc le mode &amp;ldquo;Push&amp;rdquo;, puis on sélectionne le &amp;lsquo;shared folder&amp;rsquo; correspondant définit dans OMV. Pour la destination, la syntaxe est la suivante : &lt;code&gt;nom_utilisateur@adresse_IP_distante::nom_module_rsync&lt;/code&gt; (donc l&amp;rsquo;adresse de mon PC et le nom du module définit dans le ficher &lt;code&gt;/etc/rsyncd.conf&lt;/code&gt;). Enfin, on entre le mot de passe attribué au compte &lt;code&gt;rsync&lt;/code&gt; sur le PC.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;302px&#34; data-flex-grow=&#34;126&#34; height=&#34;522&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/rsync.png&#34; width=&#34;659&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Dans les options, vous pouvez choisir d&amp;rsquo;envoyer un mail grâce au système de notifications d&amp;rsquo;OMV (si vous l&amp;rsquo;avez défini). Penser aussi à activer l&amp;rsquo;option &amp;ldquo;Recursive&amp;rdquo;. Enfin, pour tester le fonctionnement, on peut activer l&amp;rsquo;option &amp;ldquo;Trail run&amp;rdquo; pour simuler une sauvegarde (à désactiver ensuite bien entendu).&lt;/p&gt;&#xA;&lt;h3 id=&#34;docker&#34;&gt;Docker&#xA;&lt;/h3&gt;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;14 mai 2021 : Depuis, un nouvel article explique la bonne façon de sauvegarder ses containers Docker. Lire :&#xA;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17665&#34; &gt;OpenMediaVault : Sauvegarde des containers Docker&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-disque-système&#34;&gt;Le disque système&#xA;&lt;/h3&gt;&lt;p&gt;Sur l&amp;rsquo;odroid-hc2, le disque système est une carte microSD (comme sur les raspberry), et le disque contient raspbian ainsi qu&amp;rsquo;Openmediavault. Il est donc primordial d&amp;rsquo;avoir une sauvegarde de ce disque, la durée de vie d&amp;rsquo;un carte microSD n&amp;rsquo;étant pas éternelle, loin s&amp;rsquo;en faut.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est d&amp;rsquo;ailleurs pour cela que l&amp;rsquo;on évite d&amp;rsquo;écrire dessus, l&amp;rsquo;idée étant de travailler le plus possible en mémoire. C&amp;rsquo;est aussi pour cette raison que j&amp;rsquo;ai déplacé Docker sur le HD.&lt;/p&gt;&#xA;&lt;h3 id=&#34;loutil-disques-de-gnome&#34;&gt;L&amp;rsquo;outil Disques de Gnome&#xA;&lt;/h3&gt;&lt;p&gt;C&amp;rsquo;est finalement cette solution qui est la plus simple et la plus efficace. Je laisse plus bas les autres options que j&amp;rsquo;ai testé (notamment CloneZilla, qui reste une référence), mais franchement l&amp;rsquo;outil de Gnome se révèle parfait.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;arrête mon NAS, récupère la sd-card, et l&amp;rsquo;insère dans le PC. Je lance l&amp;rsquo;outil Disques de Gnome, et je fais tout simplement une image de la carte :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;350px&#34; data-flex-grow=&#34;146&#34; height=&#34;652&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/disks.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/disks_hu_90108a12b1920a8a.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/disks.png 952w&#34; width=&#34;952&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Simple et efficace. Pour la restauration, on choisit l&amp;rsquo;option &amp;ldquo;Restaurer&amp;hellip;&amp;rdquo; et c&amp;rsquo;est tout.&lt;/p&gt;&#xA;&lt;h4 id=&#34;la-commande-dd&#34;&gt;La commande dd&#xA;&lt;/h4&gt;&lt;p&gt;J&amp;rsquo;avais d&amp;rsquo;abord testé des scripts utilisant la commande linux &lt;code&gt;dd&lt;/code&gt; ( &lt;strong&gt;d&lt;/strong&gt; ata &lt;strong&gt;d&lt;/strong&gt; ump), qui permet de copier des fichiers, des partitions, ou un disque entier, tout en contrôlant la taille des blocks. C&amp;rsquo;est l&amp;rsquo;outil historique en ligne de commande pour cloner rapidement un disque dans le monde Linux.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;idée était d&amp;rsquo;utiliser le port USB de l&amp;rsquo;odroid-hc2 pour y insérer une carte microSD, puis de créer une tâche planifiée (cron) pour automatiser la copie du disque système, disons chaque semaine. Sur le papier, c&amp;rsquo;était top : une fois mis en place, rien de particulier à faire, et on a toujours une sauvegarde récente du disque système récente toute prête.&lt;/p&gt;&#xA;&lt;p&gt;Sauf qu&amp;rsquo;en essayant d&amp;rsquo;utiliser la sauvegarde, j&amp;rsquo;avais des messages d&amp;rsquo;erreur du genre &amp;ldquo;Failed to connect to socket: Connection refused&amp;rdquo; ou &amp;ldquo;address already in use&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Le problème est classique : on sauvegarde un système en cours de fonctionnement, certains fichiers sont ouverts, et comme avec Linux tout est fichier, et les sockets aussi ! :(&lt;/p&gt;&#xA;&lt;p&gt;Fin de la tentative.&lt;/p&gt;&#xA;&lt;h4 id=&#34;clonezilla--kvm&#34;&gt;Clonezilla + KVM&#xA;&lt;/h4&gt;&lt;p&gt;Pour faire un backup propre, mieux vaut le faire système éteint. Je me suis donc tourné vers &lt;strong&gt;Clonezilla&lt;/strong&gt;, la star des clones de disques dans l&amp;rsquo;open source.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc fait un shutdown d&amp;rsquo;OMV, et extrait la carte microSD de l&amp;rsquo;odroid-hc2. Avec l&amp;rsquo;idée d&amp;rsquo;utiliser le PC pour faire cette copie de disque-système sur une deuxième carte microSD de la même taille.&lt;/p&gt;&#xA;&lt;p&gt;Mais je n&amp;rsquo;avais pas envie de redémarrer le PC sur une clef USB où j&amp;rsquo;avais flashé &lt;a class=&#34;link&#34; href=&#34;https://clonezilla.org/downloads/download.php?branch=stable&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Clonezilla&lt;/a&gt;. Je me suis donc dirigé vers l&amp;rsquo;utilisation d&amp;rsquo;une machine virtuelle KVM, puisque c&amp;rsquo;est ce type de VM que j&amp;rsquo;utilise sur le PC. Et cela s&amp;rsquo;est révélé hyper simple et efficace, même s&amp;rsquo;il ne faut pas se tromper dans ce que l&amp;rsquo;on fait.&lt;/p&gt;&#xA;&lt;p&gt;On lance donc n&amp;rsquo;importe quelle console de VM, puisque l&amp;rsquo;on va démarrer sur un port USB, on passe en vue &amp;ldquo;Afficher les détails&amp;rdquo;, puis on clique sur ajouter un matériel. Il s&amp;rsquo;agit maintenant de sélectionner trois périphériques USB :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;la clef où se trouve CLonezilla&lt;/li&gt;&#xA;&lt;li&gt;la clef où se trouve la carte microSD d&amp;rsquo;OMV (via un adaptateur)&lt;/li&gt;&#xA;&lt;li&gt;enfin, un disque USB qui servira à stocker l&amp;rsquo;image que l&amp;rsquo;on va faire (pour la sauvegarde).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Dans l&amp;rsquo;exemple ci-dessous, je vais sélectionner l&amp;rsquo;Alcor Micro (Clonezilla), Sandisk (OMV) et LaCie (sauvegarde).&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;330px&#34; data-flex-grow=&#34;137&#34; height=&#34;604&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/kvm.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/kvm_hu_46b1bdbce3e5c4a8.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/kvm.png 832w&#34; width=&#34;832&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis on va dans &amp;ldquo;Options de démarrage&amp;rdquo;, et on sélectionne le périphérique USB où se trouve Clonezilla. Il ne reste plus qu&amp;rsquo;à démarrer la VM :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;263px&#34; data-flex-grow=&#34;109&#34; height=&#34;602&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla1-1.png&#34; width=&#34;660&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Inutile de s&amp;rsquo;embêter avec les réglages clavier, on n&amp;rsquo;utilisera que les touches tabulations, flèches haut/bas, et Entrée&amp;hellip; Ensuite, au premier écran, on choisit &amp;ldquo;disque/partition vers/depuis image&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;272px&#34; data-flex-grow=&#34;113&#34; height=&#34;722&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla2-1.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla2-1_hu_13921b0ce850b607.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla2-1.png 820w&#34; width=&#34;820&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis monter un périphérique local, où l&amp;rsquo;on choisira le disque USB que l&amp;rsquo;on a sélectionné précédemment :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;272px&#34; data-flex-grow=&#34;113&#34; height=&#34;722&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla3-1.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla3-1_hu_e279d564f29c62c0.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla3-1.png 820w&#34; width=&#34;820&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Si le disque en question est partitionné comme c&amp;rsquo;est mon cas, on choisit une partition :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;272px&#34; data-flex-grow=&#34;113&#34; height=&#34;722&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla4.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla4_hu_702e764f64c88b94.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla4.png 820w&#34; width=&#34;820&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faudra ensuite choisir un dossier où sera effectuée la sauvegarde, et lui donner un nom (un nom par défaut est proposé, on peut le modifier). Laissez le défaut à priori. Reste à sélectionner le disque à sauvegarder :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;272px&#34; data-flex-grow=&#34;113&#34; height=&#34;722&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla5.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla5_hu_d42930622f57cafd.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla5.png 820w&#34; width=&#34;820&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Reste à choisir les dernières options : format de l&amp;rsquo;image, vérification de la sauvegarde, etc&amp;hellip; Confirmez votre choix (deux fois), puis la sauvegarde démarre. Cela prend un certain temps (on sauvegarde 15 Go tout de même), surtout si vous avez demandé une vérification (recommandé). Quand tout est terminé, vous propose d&amp;rsquo;arrêter le système. Faire Entrée et choisir &amp;lsquo;poweroff&amp;rsquo;. La VM va alors s&amp;rsquo;éteindre.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;272px&#34; data-flex-grow=&#34;113&#34; height=&#34;722&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla6-1.png&#34; srcset=&#34;https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla6-1_hu_caf90d9b66a10e26.png 800w, https://pled.fr/openmediavault-strategie-de-sauvegarde/clonezilla6-1.png 820w&#34; width=&#34;820&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, la carte microSD (le disque système d&amp;rsquo;OMV), est maintenant sauvegardé sur un disque du PC.&lt;/p&gt;&#xA;&lt;p&gt;Pour la restauration vers une autre carte microSD, la procédure est très similaire, sauf que vous choisirez de l&amp;rsquo;image du disque dur comme source, et la carte microSD comme destination. Je m&amp;rsquo;épargne la série de capture d&amp;rsquo;écrans ! ;)&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Pour ceux que l&amp;rsquo;interface de Clonezilla rebute, je viens de voir passer une information sur &lt;a class=&#34;link&#34; href=&#34;https://rescuezilla.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Rescuezilla&lt;/a&gt;, compatible avec Clonezilla (même s&amp;rsquo;il n&amp;rsquo;offre pas toutes les options du mode Expert de ce dernier), mais avec une interface beaucoup plus sympathique et facile d&amp;rsquo;accès.&lt;/p&gt;&#xA;&lt;h3 id=&#34;stratégie&#34;&gt;Stratégie&#xA;&lt;/h3&gt;&lt;p&gt;Une fois cette sauvegarde terminée, j&amp;rsquo;ai utilisé cette nouvelle carte microSD pour redémarrer mon système OMV, afin de m&amp;rsquo;assurer que l&amp;rsquo;image était totalement fonctionnelle. Et je procède ainsi à chaque sauvegarde.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais déjà fait une première sauvegarde de ce type avant de déplacer Docker et d&amp;rsquo;installer un container qBittorrent. J&amp;rsquo;ai donc procédé à une nouvelle sauvegarde de mon disque système, et j&amp;rsquo;ai redémarré avec ma nouvelle sauvegarde.&lt;/p&gt;&#xA;&lt;p&gt;Et donc à chaque modification importante du système, je procéderai de la sorte. En faisant tourner les cartes microSD à chaque fois, non seulement je fais une sauvegarde, mais je valide la restauration.&lt;/p&gt;&#xA;&lt;p&gt;Car comme on dit en informatique, le &amp;ldquo;Disaster&amp;rdquo; c&amp;rsquo;est toujours très facile à réussir, le &amp;ldquo;Recovery&amp;rdquo; beaucoup moins ! :cool:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Openmediavault : déplacement de Docker</title>
            <link>https://pled.fr/openmediavault-deplacement-de-docker/</link>
            <pubDate>Thu, 28 Jan 2021 08:40:44 +0000</pubDate>
            <guid>https://pled.fr/openmediavault-deplacement-de-docker/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;docker.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Alors que je commençais à réfléchir à la stratégie de sauvegarde de mon NAS (Openmediavault sur Odroid-hc2, 1 seul HD), j&amp;rsquo;ai du faire face à la problématique Docker.&lt;/p&gt;&#xA;&lt;p&gt;Comme chaque soft (Plex, Nextcloud, qBittorrent) tourne dans un container, il est important de sauvegarder ceux-ci, et pas seulement les données qu&amp;rsquo;ils contiennent.&lt;/p&gt;&#xA;&lt;p&gt;De plus, les containers Docker étant par défaut installés sur le disque système, soit une carte microSD dans mon cas, où il est préférable d&amp;rsquo;écrire le moins possible, cette configuration n&amp;rsquo;est pas optimale.&lt;/p&gt;&#xA;&lt;p&gt;Je suis alors tombé sur cette vidéo : &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=9h24GbK-cnA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Why and how to move your Docker folder&lt;/a&gt; qui explique comment déplacer Docker, et je l&amp;rsquo;ai donc mis cela en pratique aujourd&amp;rsquo;hui, après plusieurs jours de réflexion. Car j&amp;rsquo;avais un peu peur de &amp;ldquo;casser&amp;rdquo; ma config, qu&amp;rsquo;un des containers Docker ne redémarre pas : j&amp;rsquo;avais pas mal galéré à &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;installer Nextcloud&lt;/a&gt;, je ne voulais retomber dans les mêmes problèmes.&lt;/p&gt;&#xA;&lt;p&gt;Mais finalement tout s&amp;rsquo;est globalement bien passé, à part un problème de droits sur mes dossiers Nextcloud justement. J&amp;rsquo;ai réglé le problème grâce aux sauvegardes que j&amp;rsquo;avais fait avant de me lancer (solution de facilité).&lt;/p&gt;&#xA;&lt;p&gt;Voyons tout ça&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;docker&#34;&gt;Docker&#xA;&lt;/h3&gt;&lt;p&gt;Par défaut, Docker est donc installé dans &lt;code&gt;/var/lib/docker&lt;/code&gt;, comme on peut le voir dans Openmediavault/OMV-Extras :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;793px&#34; data-flex-grow=&#34;330&#34; height=&#34;203&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-deplacement-de-docker/docker1.png&#34; width=&#34;671&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour le déplacer, il suffit de modifier ce chemin, et de cliquer sur le bouton Save :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;819px&#34; data-flex-grow=&#34;341&#34; height=&#34;193&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-deplacement-de-docker/docker2.png&#34; width=&#34;659&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je déplace donc Docker sur mon HD, dans le dossier &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData&lt;/code&gt; déjà utilisé par tous les containers Docker pour y stocker leurs fichiers de configuration. C&amp;rsquo;est pratique, je pourrais ainsi tout sauvegarder d&amp;rsquo;un coup : les containers et leur configuration.&lt;/p&gt;&#xA;&lt;p&gt;Après quelques instants, Docker est redémarré, mais tous les containers ont disparu, y compris Portainer, qu&amp;rsquo;il va falloir réinstaller, c&amp;rsquo;est l&amp;rsquo;affaire d&amp;rsquo;un click. Jusque là, tout est vraiment simple.&lt;/p&gt;&#xA;&lt;h3 id=&#34;containers&#34;&gt;Containers&#xA;&lt;/h3&gt;&lt;p&gt;La bonne nouvelle, c&amp;rsquo;est que l&amp;rsquo;on va pouvoir recréer ses containers sans perdre leur configuration ou les fichiers de données. Il va suffire de faire pointer les variables d&amp;rsquo;environnement correspondantes (les &amp;lsquo;volumes&amp;rsquo;) sur les mêmes dossiers que lors de la première création du container.&lt;/p&gt;&#xA;&lt;p&gt;Pour Plex et Nextcloud, je suis passé par les Stacks, j&amp;rsquo;avais sauvegardé leurs configurations dans ce format, tout a donc été très simple : dans Portainer, sélectionner Stacks et cliquer sur le bouton Add stack :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;327px&#34; data-flex-grow=&#34;136&#34; height=&#34;355&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-deplacement-de-docker/portainer.png&#34; width=&#34;484&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il suffit ensuite de coller le contenu que j&amp;rsquo;avais sauvegardé, mais que l&amp;rsquo;on peut retrouver sur &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/images/docker-plex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la page du projet&lt;/a&gt;. L&amp;rsquo;important est de bien mettre les mêmes valeurs pour les différents &lt;strong&gt;volumes&lt;/strong&gt; où sont nos fichiers :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-docker&#34; data-lang=&#34;docker&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;version: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;services:&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  plex:&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    image : ghcr.io/linuxserver/plex&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    container_name : plex&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    network_mode: host&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    environment:&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PUID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PGID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - VERSION&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Docker&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - UMASK_SET&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;022&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    volumes:&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/AppData/Plex:/config&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/OMV-DATA/Series:/Series&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/OMV-DATA/Films:/Films&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/OMV-DATA/Docus:/Docus&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    restart: unless-stopped&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà ! En quelques minutes (les softs vont être téléchargés à nouveau), mon instance Plex est de nouveau disponible, et toutes les données conservées (par exemple les films Vus/Non Vus).&lt;/p&gt;&#xA;&lt;p&gt;Pour qBittorent-OpenVPN, comme il y avait des paramètres non supportées par Portainer, j&amp;rsquo;avais le script &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17202&#34; &gt;utilisé pour l&amp;rsquo;installation&lt;/a&gt;, il a donc suffit de le relancer :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;558px&#34; data-flex-grow=&#34;232&#34; height=&#34;338&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-deplacement-de-docker/qb-openvpn-1.png&#34; width=&#34;786&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;templates&#34;&gt;Templates&#xA;&lt;/h3&gt;&lt;p&gt;Il y a aussi la solution des &amp;ldquo;Templates&amp;rdquo; pour recréer rapidement ses containers. Par défaut, ceux proposés dans Portainer sont assez restreints, mais on peut modifier la liste proposée en la remplaçant par une autre plus adaptée à l&amp;rsquo;utilisateur standard. Il suffit d&amp;rsquo;aller dans Settings, et de remplacer le lien existant :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://raw.githubusercontent.com/portainer/templates/master/templates-2.0.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Par celui-ci, récupéré sur le page du projet Github &lt;a class=&#34;link&#34; href=&#34;https://github.com/SelfhostedPro/selfhosted_templates&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;selfhosted_templates&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://raw.githubusercontent.com/SelfhostedPro/selfhosted_templates/portainer-2.0/Template/template.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis cliquer sur &amp;ldquo;Save settings&amp;rdquo;. La liste des templates désormais proposée est alors beaucoup plus étoffée, on y retrouve Plex, Nextcloud, Pihole, Mariadb, etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;idée est de s&amp;rsquo;en servir comme une base, et de l&amp;rsquo;éditer pour modifier certaines variables pour l&amp;rsquo;adapter à notre environnement personnel, et dans ce cas précis, faire pointer les variables de type &amp;lsquo;Volumes&amp;rsquo; ou &amp;lsquo;Config&amp;rsquo; au même endroit que précédemment.&lt;/p&gt;&#xA;&lt;h3 id=&#34;nextcloud&#34;&gt;Nextcloud&#xA;&lt;/h3&gt;&lt;p&gt;Nextcloud a été le plus compliqué, comme je m&amp;rsquo;y attendais, heureusement j&amp;rsquo;avais dupliqué mes données avant de me lancer.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais le fichier &amp;ldquo;Stack&amp;rdquo; de l&amp;rsquo;installation, celui qui installe en même temps Nextcloud, Mariadb et Swag (voir l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;installation de Nextcloud&lt;/a&gt;). Je l&amp;rsquo;ai donc lancé et là, première erreur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;338px&#34; data-flex-grow=&#34;141&#34; height=&#34;229&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-deplacement-de-docker/bind-error.png&#34; width=&#34;323&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Au moins le message est clair, et en vérifiant, il y avait une erreur dans mon fichier &amp;lsquo;docker-compose&amp;rsquo;, sans doute suite à un des premiers essais que j&amp;rsquo;avais fait en voulant l&amp;rsquo;installer : j&amp;rsquo;avais le port défini en &lt;code&gt;444:443&lt;/code&gt; pour le container nextcloud au lieu de &lt;code&gt;443:443&lt;/code&gt;. Une fois corrigé, les trois containers nextcloud/mariadb/swag sont créés et démarrés sans problème.&lt;/p&gt;&#xA;&lt;p&gt;Ensuite, je reçois un premier message de mon client Nextcloud sur le PC m&amp;rsquo;informant qu&amp;rsquo;il y a une erreur avec le certificat. En effet, en recréant mon instance Nextcloud, un nouveau certificat a été créé, il va donc falloir le valider pour chaque client se connectant à l&amp;rsquo;instance : le client Nextcloud sur le smartphone ou sur le PC, mais aussi dans Firefox pour accéder à la WebUI.&lt;/p&gt;&#xA;&lt;p&gt;Première surprise : je retombe sur la page d&amp;rsquo;initialisation de Nextcloud, où il faut définir un administrateur, la base de données, etc&amp;hellip; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;197px&#34; data-flex-grow=&#34;82&#34; height=&#34;608&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-deplacement-de-docker/nextcloud1.png&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est finalement logique, puisque c&amp;rsquo;est une nouvelle instance de Nextcloud&amp;hellip; Mais quand j&amp;rsquo;entre &amp;lsquo;pascal&amp;rsquo; pour le compte administrateur, il refuse et me dit que le nom d&amp;rsquo;utilisateur est déjà pris. OK, c&amp;rsquo;est vrai (et tant mieux, ça veut dire que mon compte existe toujours, et c&amp;rsquo;est bien ce que je voulais), je crée donc un utilisateur &amp;lsquo;admin&amp;rsquo; pour terminer l&amp;rsquo;installation.&lt;/p&gt;&#xA;&lt;p&gt;Du coup, j&amp;rsquo;ai même droit à une mise à jour&amp;hellip; So far so good !&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;531px&#34; data-flex-grow=&#34;221&#34; height=&#34;271&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-deplacement-de-docker/nextcloudupd.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je me reconnecte en tant que &amp;lsquo;pascal&amp;rsquo;, retrouve mes dossiers, et je crois alors que &amp;ldquo;tout est bien qui finit bien&amp;rdquo;. Hélas, un peu plus tard, je me rends compte que je n&amp;rsquo;ai pas les droits d&amp;rsquo;écriture sur mes dossiers ! C&amp;rsquo;est une photo prise sur le smartphone qui me le signale car le téléchargement échoue. Et c&amp;rsquo;est confirmé via l&amp;rsquo;interface web, impossible d&amp;rsquo;ajouter le moindre fichier à mes dossiers Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai fait quelques recherches rapides sur internet, ça m&amp;rsquo;a paru vite assez compliqué à dépanner, Nextcloud est apparemment bien sécurisé, et j&amp;rsquo;ai vite opté pour la solution la plus simple : tout effacer, recréer les répertoires, et y recopier les fichiers précédemment sauvegardés.&lt;/p&gt;&#xA;&lt;p&gt;Bon, ce n&amp;rsquo;est pas très glorieux, mais l&amp;rsquo;opération a été assez rapide, et je n&amp;rsquo;avais pas envie de me plonger dans les permissions et autres ACLs de Nextcloud ! :shock: Ça peut vite devenir une belle prise de tête !&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;C&amp;rsquo;est une bonne chose d&amp;rsquo;avoir fait cette modification, et pour l&amp;rsquo;essentiel, tout s&amp;rsquo;est bien passé.&lt;/p&gt;&#xA;&lt;p&gt;Non seulement mon disque système microSD ne sera plus sollicité par Docker, mais la sauvegarde sera beaucoup plus simple, puisque le répertoire AppData est déjà partagé par Openmediavault, et une simple tâche avec &lt;strong&gt;Rsync&lt;/strong&gt; fera parfaitement l&amp;rsquo;affaire.&lt;/p&gt;&#xA;&lt;p&gt;Ce sera l&amp;rsquo;objet du prochain article, qui traitera de la stratégie de sauvegarde. C&amp;rsquo;est important, car en quittant Synology pour ce système Odroid-hc2, je n&amp;rsquo;ai plus de RAID (un seul HD) et il ne s&amp;rsquo;agit pas de perdre toute cette belle configuration ! ;)&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Openmediavault : installation de Qbittorrent avec OpenVPN</title>
            <link>https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/</link>
            <pubDate>Thu, 21 Jan 2021 11:06:16 +0000</pubDate>
            <guid>https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;qb.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après avoir installé Nextcloud et Plex, le dernier truc important à installer était un client qBittorrent pour l&amp;rsquo;utiliser avec une connexion OpenVPN.&lt;/p&gt;&#xA;&lt;p&gt;Après avoir regardé quelques vidéos, des containers Docker existent, combinant à la fois le client qBittorrent et la connexion OpenVPN, tout semblait parfait.&lt;/p&gt;&#xA;&lt;p&gt;Hélas, après une première tentative, je me rendais compte que ce qui était proposé ne l&amp;rsquo;était pas pour une architecture armv7l de mon odroid-hc2 . :(&lt;/p&gt;&#xA;&lt;p&gt;Heureusement, la situation s&amp;rsquo;est vite débloquée, grâce à la souplesse de l&amp;rsquo;Open source.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais répéré la solution &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/markusmcnugen/qbittorrentvpn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;MarkusMcNugen/docker-qBittorrentvpn&lt;/a&gt; sur &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;dockerhub&lt;/a&gt;., hélas uniquement disponible sur une base Debian (Ubuntu 18.04). À tout hasard, je postais sur le projet Github correspondant un petit commentaire sur une &lt;a class=&#34;link&#34; href=&#34;https://github.com/MarkusMcNugen/docker-qBittorrentvpn/issues/74#issuecomment-753511680&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;issue déjà existante&lt;/a&gt; concernant le support ARM7 :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;954px&#34; data-flex-grow=&#34;397&#34; height=&#34;143&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/githubreq.png&#34; width=&#34;569&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Deux jours plus tard, je recevais un mail d&amp;rsquo;un certain chrisjohnson00 me proposant de tester &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/markusmcnugen/qbittorrentvpn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;son container&lt;/a&gt;, un fork compilé en mode &amp;ldquo;multi-architecture&amp;rdquo;. 8-)&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;essayais tout d&amp;rsquo;abord avec Portainer, mais le démarrage échouait avec ce message : &lt;code&gt;Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après quelques recherches, il semble que certains paramètres nécessaires pour ce container ne peuvent être passés via Portainer. Je faisais donc un nouvel essai en utilisant la ligne de commande docker comme suit :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run --privileged -d &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-v /your/download/path/:/downloads &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-v /your/config/path/:/config  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VPN_ENABLED=yes&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;LAN_NETWORK=192.168.1.0/24&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;NAME_SERVERS=8.8.8.8,8.8.4.4&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VPN_USERNAME=nom_utilisateur_VPN&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VPN_PASSWORD=mot_de_passe&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PUID=XXX&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PGID=XXX&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;INCOMING_PORT_ENV=8999&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-p 8080:8080  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-p 8999:8999  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;-p 8999:8999/udp  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;--sysctl net.ipv6.conf.all.disable_ipv6&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;--name qbittorrent-openvpn  &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;chrisjohnson00/qbittorrent-openvpn:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notes :&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;On renseigne bien sûr VPN_USERNAME et VPN_PASSWORD avec ceux de votre fournisseur.&lt;/li&gt;&#xA;&lt;li&gt;La valeur de LAN_NETWORK dépend bien sûr de votre réseau local.&lt;/li&gt;&#xA;&lt;li&gt;la valeur de PUID et PGID dépend de l&amp;rsquo;utilisateur qui lance le container.&lt;/li&gt;&#xA;&lt;li&gt;La commande &amp;ldquo;privileged -d&amp;rdquo; est celle que l&amp;rsquo;on ne peut passer avec Portainer.&lt;/li&gt;&#xA;&lt;li&gt;Le paramètre &amp;ldquo;&amp;ndash;sysctl net.ipv6.conf.all.disable_ipv6=0&amp;rdquo; est à priori nécessaire pour MULLVAD, mon fournisseur VPN. Et même chose, impossible avec Portainer.&lt;/li&gt;&#xA;&lt;li&gt;Pour changer le port de la WebUI de qBittorrent, il faut par exemple changer &amp;ldquo;-p 8080:8080&amp;rdquo; en &amp;ldquo;-p 9090:8080&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Dernière remarque : lors du premier démarrage, un message d&amp;rsquo;erreur nous signale que le fichier &lt;code&gt;.ovpn&lt;/code&gt; est manquant (VPN_ENABLED=yes). Il faut alors récupérer ce fichier auprès du fournisseur VPN, et le copier dans le répertoire &lt;code&gt;/your/config/path/Qbittorrent/openvpn&lt;/code&gt; existant (créé lors du premier démarrage).&lt;/p&gt;&#xA;&lt;p&gt;Le container démarre enfin, il ne reste plus qu&amp;rsquo;à se logguer via l&amp;rsquo;interface à partir de votre navigateur (utilisateur: admin / mot de passe : adminadmin) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;345px&#34; data-flex-grow=&#34;143&#34; height=&#34;414&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/qbwebui.png&#34; width=&#34;596&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, c&amp;rsquo;était quelque chose que je voulais faire depuis longtemps, et que je pouvais faire avec la baie Synology (en tout cas, je n&amp;rsquo;avais pas trouvé comment installer un client openvpn standard, celui de Synology n&amp;rsquo;étant pas à jour (et modifié il me semble). Typiquement le genre de problème que l&amp;rsquo;on a avec les solutions &amp;ldquo;propriétaires&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Il ne me reste qu&amp;rsquo;à modifier mon container Plex pour y ajouter une nouvelle bibliothèque pointant sur le répertoire de &amp;ldquo;download&amp;rdquo; défini pour qBittorrent, et je peux retrouver directement le contenu multimedia téléchargé sur la TV ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;Enfin, pour en faciliter l&amp;rsquo;usage dans Firefox, on peut installer l&amp;rsquo;extension &lt;a class=&#34;link&#34; href=&#34;https://github.com/kyuucr/add-link-to-qbittorrent-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Add Link to qBittorrent WebUI&lt;/a&gt;. Il suffira de lui indiquer l&amp;rsquo;adresse du serveur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;454px&#34; data-flex-grow=&#34;189&#34; height=&#34;232&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/qbext.png&#34; width=&#34;439&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On retrouve ensuite le menu contextuel avec un click droit sur un lien torrent :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;332px&#34; data-flex-grow=&#34;138&#34; height=&#34;509&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/qbext2.png&#34; width=&#34;705&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, j&amp;rsquo;ai à peu près tout ce dont j&amp;rsquo;avais besoin pour mon NAS Openmediavault.&lt;/p&gt;&#xA;&lt;p&gt;Il va falloir maintenant penser aux solutions de sauvegarde, ce serait dommage de perdre tout ça : ce sera l&amp;rsquo;objet d&amp;rsquo;un prochain article.&lt;/p&gt;&#xA;&lt;h3 id=&#34;problème-au-redémarrage&#34;&gt;Problème au redémarrage&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai eu depuis un problème après un redémarrage du container (via Portainer), ou un redémarrage d&amp;rsquo;OMV : plus moyen d&amp;rsquo;accéder via l&amp;rsquo;interface de qBittorrent (WebUI) alors que le container est bien affiché comme démarré. Il me fallait effacer puis recréer le container pour que cela fonctionne à nouveau&amp;hellip; :(&lt;/p&gt;&#xA;&lt;p&gt;En comparant les logs, voilà ce que l&amp;rsquo;on voyait sur un redémarrage correct :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker logs -f qbittorrent-openvpn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Adding &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt; group&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;groupadd: GID &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;100&amp;#39;&lt;/span&gt; already exists&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Adding &lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt; user&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2021-02-06 09:37:44.489980 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;warn&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; UMASK not defined &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;via -e UMASK&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;, defaulting to &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;002&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2021-02-06 09:37:44.571608 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Starting qBittorrent daemon...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Log file /config/qBittorrent/data/logs/qbittorrent-daemon.log doesn&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#39;&lt;/span&gt;t exist. Creating it...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Logfile created. Logging to /config/qBittorrent/data/logs/qbittorrent-daemon.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2021-02-06 09:37:45.685073 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; qBittorrent PID: &lt;span style=&#34;color:#ae81ff&#34;&gt;189&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2021-02-06 09:37:45.710933 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Started qBittorrent daemon successfully...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On voit le PID du process qBittorrent, et le message de confirmation&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Et maintenant les logs quand il est impossible de se connecter à la WebUI de qBittorrent :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker logs -f qbittorrent-openvpn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Adding &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt; group&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;groupadd: GID &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;100&amp;#39;&lt;/span&gt; already exists&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Adding &lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt; user&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;useradd: user &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;qbittorent&amp;#39;&lt;/span&gt; already exists&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2021-02-06 10:21:20.548073 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;warn&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; UMASK not defined &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;via -e UMASK&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;, defaulting to &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;002&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2021-02-06 10:21:20.644612 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Starting qBittorrent daemon...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Logging to /config/qBittorrent/data/logs/qbittorrent-daemon.log.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start-stop-daemon: matching on world-writable pidfile /var/run/qbittorrent-nox.pid is insecure&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2021-02-06 10:21:21.768415 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;info&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; qBittorrent PID:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le log s&amp;rsquo;arrête à cet endroit, manifestement le process n&amp;rsquo;est pas créé. La ligne précédente en donne la raison : il y a un fichier &lt;code&gt;/var/run/qbittorrent-nox.pid&lt;/code&gt; qui provoque un problème de sécurité et empêche le lancement du process&amp;hellip; Je n&amp;rsquo;en sais pas plus pour l&amp;rsquo;instant.&lt;/p&gt;&#xA;&lt;p&gt;Toujours est-il qu&amp;rsquo;il suffit de se logguer via la console du container qbittorrent-openvpn (via portainer), et d&amp;rsquo;effacer le fichier en question :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;387px&#34; data-flex-grow=&#34;161&#34; height=&#34;375&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/console-1.png&#34; width=&#34;606&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On remarque d&amp;rsquo;ailleurs que le PID du fichier est égal au PID du process lancé -2 (198-2=187).&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, le container peut être redémarré proprement, le process est bien lancé, et l&amp;rsquo;interface WebUI à nouveau accessible.&lt;/p&gt;&#xA;&lt;p&gt;On peut aussi effacer ce fichier en ligne de commande. On recherche d&amp;rsquo;abord le container ID de Nextcloud (commande &lt;code&gt;docker ls&lt;/code&gt;), puis on lance un terminal à l&amp;rsquo;intérieur du container (commande &lt;code&gt;docker exec&lt;/code&gt;). Il ne reste alors plus qu&amp;rsquo;à aller supprimer le fichier souhaité :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;436px&#34; data-flex-grow=&#34;181&#34; height=&#34;432&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-qbittorrent-avec-openvpn/docker-cmd.png&#34; width=&#34;786&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à relancer le container :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker restart qbittorrent-openvpn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voir &lt;a class=&#34;link&#34; href=&#34;https://devconnected.com/docker-exec-command-with-examples/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt; pour plus d&amp;rsquo;exemples de commandes docker : on peut même tout enchaîner en une seule commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker exec 6a54133fa769 bash -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cd /var/run ; ls ; rm qbittorrent-nox.pid&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;De là à préparer un script pour automatiser tout ça, y compris le redémarrage du container, il n&amp;rsquo;y a qu&amp;rsquo;un pas ! :cool:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Pihole comme DHCP serveur avec la box Orange</title>
            <link>https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/</link>
            <pubDate>Thu, 14 Jan 2021 13:28:43 +0000</pubDate>
            <guid>https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;pihole.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai finalement décidé d&amp;rsquo;utiliser mon serveur Pihole comme serveur DHCP. Il sera donc en charge d&amp;rsquo;attribuer les adresses IP sur mon réseau local, et se définira en même temps comme serveur DNS. De cette façon, tous les appareils du réseau bénéficieront du filtre anti-pubs de Pihole.&lt;/p&gt;&#xA;&lt;p&gt;Je précise tout de suite que je suis en IPv4 pour la box comme pour mon LAN, et que IPv6 est désactivé sur la box (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17148#comment-57851&#34; &gt;le commentaire d&amp;rsquo;Eliastik&lt;/a&gt; à ce sujet).&lt;/p&gt;&#xA;&lt;p&gt;On verra en fin d&amp;rsquo;article que cela apporte pas mal d&amp;rsquo;informations sur ce qui se passe sur mon réseau local, j&amp;rsquo;ai fait des découvertes. :-o&lt;/p&gt;&#xA;&lt;p&gt;Il aurait été plus simple de définir le serveur DNS au niveau de la box, mais Orange ne permet pas de changer ceux-ci, pour des raisons de VOIP apparemment. Autre problème avec cette box, le décodeur TV d&amp;rsquo;Orange doit obtenir son adresse de la box (un VLAN est créé semble-t-il), sinon plus de TV ! Ce sont d&amp;rsquo;ailleurs les deux gros reproches que l&amp;rsquo;on faire à Orange au niveau de sa box ! :(&lt;/p&gt;&#xA;&lt;p&gt;Ce dernier problème m&amp;rsquo;a fait longuement fait hésiter à faire la manip, et puis finalement je me suis décidé à franchir le pas, car parfois le DNS IPv6 de la box (attribué lors de la requête DHCP) prenait le pas sur le DNS IPv4 (définit manuellement sur le PC pour pointer sur Pihole, voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16628&#34; &gt;cet article&lt;/a&gt;) sans que je sache vraiment pourquoi.&lt;/p&gt;&#xA;&lt;p&gt;Il était temps de reprendre le contrôle&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-décodeur-tv&#34;&gt;Le décodeur TV&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;447px&#34; data-flex-grow=&#34;186&#34; height=&#34;161&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/decodeur.png&#34; width=&#34;300&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Avant d&amp;rsquo;activer le serveur DHCP de Pihole, il va d&amp;rsquo;abord falloir s&amp;rsquo;organiser pour que le décodeur d&amp;rsquo;Orange obtienne toujours son adresse IP de la box Orange.&lt;/p&gt;&#xA;&lt;p&gt;Pour cela, on va faire deux choses : limiter au minimum le champ d&amp;rsquo;adresses disponibles sur la box, puis ajouter l&amp;rsquo;adresse MAC du décodeur dans la liste des adresses rejetées par le serveur Pihole.&lt;/p&gt;&#xA;&lt;p&gt;Sur la box, il suffit d&amp;rsquo;aller dans l&amp;rsquo;interface de gestion, Configuration avancée, onglet DHCP, et de définir le &amp;ldquo;scope&amp;rdquo; comme suit (c&amp;rsquo;est un exemple) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;497px&#34; data-flex-grow=&#34;207&#34; height=&#34;252&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhcp1.png&#34; width=&#34;522&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Redémarrer la box puis le décodeur, et vérifier que la TV fonctionne. Sur cette même page, récupérer l&amp;rsquo;adresse MAC du décodeur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;2280px&#34; data-flex-grow=&#34;950&#34; height=&#34;76&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhcp2.png&#34; width=&#34;722&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Reste à exclure cette adresse du serveur Pihole. De ce que j&amp;rsquo;ai lu, Pihole utilise un fork de &lt;code&gt;dnsmasq&lt;/code&gt;, on peut donc à priori utiliser ses fonctionnalités. J&amp;rsquo;ai donc créé un fichier &lt;code&gt;04-bypass.conf&lt;/code&gt; dans &lt;code&gt;/etc/dnsmasqd&lt;/code&gt; comme suit :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;544px&#34; data-flex-grow=&#34;226&#34; height=&#34;263&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/ignore.png&#34; width=&#34;597&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est d&amp;rsquo;ailleurs ce qui est indiqué dans le fichier &lt;code&gt;01-pihole.conf&lt;/code&gt; créé pendant l&amp;rsquo;installation :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;ANY OTHER CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE WITHIN /etc/dnsmasq.d/yourname.conf&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;le-serveur&#34;&gt;Le serveur&#xA;&lt;/h3&gt;&lt;p&gt;On peut maintenant activer le serveur DHCP de Pihole (dans Settings), en s&amp;rsquo;assurant d&amp;rsquo;affecter un &amp;lsquo;range&amp;rsquo; d&amp;rsquo;adresses différentes de celle de la box Orange, et en définissant cette dernière comme routeur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;481px&#34; data-flex-grow=&#34;200&#34; height=&#34;387&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhcp3.png&#34; width=&#34;777&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Avant de redémarrer le serveur Pihole, il reste une chose importante à faire, c&amp;rsquo;est de lui assigner une adresse IP fixe. C&amp;rsquo;est normalement fait lors de l&amp;rsquo;installation de Pihole, et je ne sais pas trop où cette information est stockée.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai toutefois procédé comme indiqué sur Raspbian, en renseignant le fichier &lt;code&gt;/etc/dhcpcd.conf&lt;/code&gt;. On trouve le nom des interfaces en faisant un &lt;code&gt;ip link&lt;/code&gt;, puis on définit ce que l&amp;rsquo;on souhaite :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;interface eth0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;static ip_address&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.1.18/24&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;static routers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.1.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;static domain_name_servers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;208.67.222.222 208.67.220.220&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;interface wlan0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;static ip_address&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.1.17/24&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;static routers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;192.168.1.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;static domain_name_servers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;208.67.222.222 208.67.220.220&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J&amp;rsquo;ai donc deux interfaces actives : &lt;code&gt;eth0&lt;/code&gt; pour ethernet, et &lt;code&gt;wlan0&lt;/code&gt; pour le wifi. Les deux serveurs DNS définis sont ceux d&amp;rsquo;OpendDNS. Au passage, le fichier pour le mot de passe wifi est &lt;code&gt;/etc/wpa_supplicant/wpa_supplicant.conf&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;À ce stade, on peut redémarrer le serveur Pihole, et dans la foulée redémarrer le décodeur TV pour vérifier qu&amp;rsquo;il obtient toujours son adresse de la box, et que la TV fonctionne.&lt;/p&gt;&#xA;&lt;p&gt;À toutes fins utiles, le service pihole s&amp;rsquo;appelle &lt;strong&gt;pihole-FTL&lt;/strong&gt;, on peut donc le contrôler avec les commandes suivantes (avec &amp;ldquo;disable&amp;rdquo; on l&amp;rsquo;empêche de redémarrer au boot de la machine) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo systemctl status pihole-FTL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo systemctl stop pihole-FTL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo systemctl start pihole-FTL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo systemctl disable pihole-FTL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo systemctl enable pihole-FTL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si tout se passe bien, on peut passer au reste des appareils sur le réseau, à savoir mon PC desktop, un PC portable, mon smartphone BQ Aquaris, la TV, etc&amp;hellip; Vérifier que tout se passe bien, et éventuellement assigner des baux fixes à chaque appareil :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;328px&#34; data-flex-grow=&#34;137&#34; height=&#34;716&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/baux-1.png&#34; srcset=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/baux-1_hu_c7cff9967fabe34d.png 800w, https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/baux-1.png 981w&#34; width=&#34;981&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sur le PC, on peut vérifier en allant voir le fichier &lt;code&gt;/var/lib/dhcp/dhclient.leases&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;329px&#34; data-flex-grow=&#34;137&#34; height=&#34;461&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhcp4.png&#34; width=&#34;633&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On peut aussi forcer le renouvellement de notre adresse IP, ici sur mon portable, avec la commande &lt;code&gt;dhclient -d -nw wlp2s0&lt;/code&gt; (après avoir identifié le nom de l&amp;rsquo;interface wifi) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;312px&#34; data-flex-grow=&#34;130&#34; height=&#34;1318&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhclient-1.png&#34; srcset=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhclient-1_hu_527820ad2246a15d.png 800w, https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhclient-1_hu_ebc4ec995787dcc4.png 1600w, https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/dhclient-1.png 1716w&#34; width=&#34;1716&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, tout fonctionne comme attendu. Désormais, tous les appareils sur le réseau bénéficient de Pihole comme bloqueur de pub, c&amp;rsquo;est plutôt sympa :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;329px&#34; data-flex-grow=&#34;137&#34; height=&#34;363&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/pihole1.png&#34; width=&#34;499&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On voit que mon serveur odroidhc2 est plutôt bavard : c&amp;rsquo;est normal, puisque j&amp;rsquo;ai installé dessus un serveur Nextcloud, et qu&amp;rsquo;il est accessible depuis internet via un proxy (voir l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;installation de Nextcloud sur Openmediavault&lt;/a&gt;). Il s&amp;rsquo;agit en l&amp;rsquo;occurence de requêtes DNS déjà en cache.&lt;/p&gt;&#xA;&lt;p&gt;Plus intéressant, on voit que le smartphone est celui qui est qui a le plus de requêtes bloquées !&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;412px&#34; data-flex-grow=&#34;172&#34; height=&#34;286&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/pihole2.png&#34; width=&#34;492&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pourtant, j&amp;rsquo;utilise LineageOS, je n&amp;rsquo;ai aucune appli Google d&amp;rsquo;installées&amp;hellip; Et à y regarder de plus près, un bon nombre de ces requêtes sont bloquées par Pihole ! Un peu inquiétant sur notre vie privée tout ça, je n&amp;rsquo;ose imaginer ce que fait un smartphone avec tous les services Google d&amp;rsquo;installés !&lt;/p&gt;&#xA;&lt;p&gt;Mais il y a encore plus surprenant : Pihole offre des statistiques très intéressantes, et en allant dans &amp;ldquo;Long-term data - Top Lists&amp;rdquo;, je vois que la TV Samsung est également très active :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;554px&#34; data-flex-grow=&#34;230&#34; height=&#34;542&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/pihole3.png&#34; srcset=&#34;https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/pihole3_hu_560b18cb4d3942b1.png 800w, https://pled.fr/pihole-comme-dhcp-serveur-avec-la-box-orange/pihole3.png 1252w&#34; width=&#34;1252&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;La &amp;ldquo;Smart TV&amp;rdquo; est effectivement très smart&amp;hellip; un peu trop à mon goût. ;) Du coup, après quelques recherches pour comprendre ce qui se passe, je trouve une &amp;ldquo;Ad List&amp;rdquo; spécialement conçue pour filtrer les accès de ces Smart TVs. Voici le lien :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;à ajouter dans &amp;ldquo;Group Management - Adlists&amp;rdquo; de Pihole, suivi d&amp;rsquo;un &lt;code&gt;pihole -g&lt;/code&gt; pour mettre à jour la liste utilisée par Pihole.&lt;/p&gt;&#xA;&lt;p&gt;Reste à vérifier que la TV fonctionne toujours correctement avec cette liste active. Je n&amp;rsquo;ai aucun besoin d&amp;rsquo;un accès internet sur celle-ci (il n&amp;rsquo;y a que Plex que j&amp;rsquo;utilise en local comme media serveur), ce sera donc très bien de lui couper le sifflet.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, ce changement de serveur DHCP est finalement très bénéfique : non seulement Pihole filtre les publicités, mais il fournit aussi beaucoup d&amp;rsquo;informations sur ce qui se passe sur votre réseau personnel ! :cool:&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Openmediavault - Plex : Dépannage</title>
            <link>https://pled.fr/plex-depannage/</link>
            <pubDate>Thu, 31 Dec 2020 18:10:38 +0000</pubDate>
            <guid>https://pled.fr/plex-depannage/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;plex.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hier, j&amp;rsquo;ai voulu ajouter un nouveau dossier à mon instance docker Plex sur mon serveur Openmediavault . Pour ce faire, il fallait modifier le container docker puisque les dossiers (&amp;lsquo;Volumes&amp;rsquo; dans la terminologie docker) sont définis à ce moment là.&lt;/p&gt;&#xA;&lt;p&gt;Mauvaise idée, parce je n&amp;rsquo;ai jamais pu faire refonctionner l&amp;rsquo;instance de Plex modifiée ; non seulement l&amp;rsquo;interface web m&amp;rsquo;indiquait ce message peu rassurant : &amp;ldquo;&lt;em&gt;Un problème a été détecté dans un composant au cœur du serveur multimédia Plex&lt;/em&gt;&amp;rdquo;, mais le process &amp;lsquo;Plex Media Server&amp;rsquo; prenait 100% de CPU. J&amp;rsquo;ai fini par arrêter le container.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;en suis resté là, il était déjà tard, et ce matin, je me suis attaqué au problème, bien décidé à le résoudre&amp;hellip; Ça n&amp;rsquo;a pas été évident, mais j&amp;rsquo;ai appris quelques trucs que je vais noter et partager ici, comme comment supprimer complètement Plex Media Server, où aller voir les logs, et finalement comment j&amp;rsquo;ai fini par obtenir la solution.&lt;/p&gt;&#xA;&lt;p&gt;Au passage, j&amp;rsquo;ai même installé &lt;a class=&#34;link&#34; href=&#34;https://emby.media/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Emby&lt;/a&gt;, un autre media server, car je pensais que je n&amp;rsquo;allais pas m&amp;rsquo;en sortir. Voyons tout cela&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;les-logs&#34;&gt;Les logs&#xA;&lt;/h3&gt;&lt;p&gt;Je commence par aller voir les logs de docker, histoire de vérifier que le container a bien démarré :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker logs -f plex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mais ils ne donnent que peu d&amp;rsquo;info dans ce cas là. Dommage, car finalement, comme vous le verrez, il s&amp;rsquo;agissait d&amp;rsquo;un problème de dépendance de docker sur une librairie comportant un &amp;ldquo;bug&amp;rdquo;&amp;hellip; :(&lt;/p&gt;&#xA;&lt;p&gt;Il faut donc aller voir ceux de Plex : ils se trouvent dans le répertoire déclaré pour la configuration lors de la création du container (volume &amp;lsquo;/config&amp;rsquo;). Voilà ce que ça donnait chez moi pour le log principal :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ grep ERROR /srv/dev-disk-by-label-DATA/AppData/Plex/Library/Application&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;Support/Plex&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;Media&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;Server/Logs/Plex&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;Media&lt;span style=&#34;color:#ae81ff&#34;&gt;\ &lt;/span&gt;Server.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb29ff430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Error issuing curl_easy_perform&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;handle&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;28&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb29ff430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Error parsing content.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb29ff430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Error parsing XML: Error parsing file.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb05fc430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Time&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Failed to convert &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1970-01-01 00:00:01&amp;#39;&lt;/span&gt; to epoch.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb05fc430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Time&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Failed to convert &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1970-01-01 00:00:01&amp;#39;&lt;/span&gt; to epoch.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb05fc430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Error issuing curl_easy_perform&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;handle&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;28&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb05fc430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Error parsing content.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xb05fc430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Exception caught &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; updating system agent list: Error parsing file&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xacffe430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Error issuing curl_easy_perform&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;handle&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;28&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xa85fe430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Time&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Failed to convert &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1970-01-01 00:00:01&amp;#39;&lt;/span&gt; to epoch.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jan 01, &lt;span style=&#34;color:#ae81ff&#34;&gt;1970&lt;/span&gt; 00:01:28.000 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0xacffe430&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ERROR - Error issuing curl_easy_perform&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;handle&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;28&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On voit que manifestement ça boucle&amp;hellip; Après quelques recherches sur le net, le message &amp;ldquo;Error issuing curl_easy_perform&amp;rdquo; est connu et sans impact. L&amp;rsquo;autre message qui aurait du attirer mon attention est celui à propos de l&amp;rsquo;échec de conversion de la date du 01/01/1970 : ça pue le bug système, genre celui de l&amp;rsquo;an 2000 !!&lt;/p&gt;&#xA;&lt;h3 id=&#34;nettoyer-plex&#34;&gt;Nettoyer Plex&#xA;&lt;/h3&gt;&lt;p&gt;Mais je me suis obstiné à réinstaller Plex encore et encore, en essayant de nettoyer complètement le système auparavant, persuadé que le problème venait de Plex. Il faut bien sûr supprimer le container via l&amp;rsquo;interface de Portainer, mais ce n&amp;rsquo;est pas suffisant.&lt;/p&gt;&#xA;&lt;p&gt;Il faut aussi aller supprimer le dossier/volume de configuration cité précédemment, notamment si l&amp;rsquo;on veut effacer la base de donnée utilisée par Plex. Ce n&amp;rsquo;est pas fait par défaut pour simplifier la création d&amp;rsquo;un nouveau container, et ne pas avoir à réindexer tous vos fichiers media ! À faire vraiment quand on veut repartir de zéro donc&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo find /srv/dev-disk-by-label-DATA/AppData/Plex -name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*.db&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/srv/dev-disk-by-label-DATA/AppData/Plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.blobs.db&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/srv/dev-disk-by-label-DATA/AppData/Plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo rm -rf /srv/dev-disk-by-label-DATA/AppData/Plex/Library&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;À force de faire du ménage à la main dans le système, je me suis retrouvé dans l&amp;rsquo;impossibilité de démarrer un container Plex que je venais de créé ! :( J&amp;rsquo;avais le message suivant : &lt;code&gt;unable to exec /usr/lib/plexmediaserver&lt;/code&gt;&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Là, je ne sais plus trop comment je m&amp;rsquo;en suis sorti : via Portainer, j&amp;rsquo;ai vérifié que plus rien de Plex n&amp;rsquo;apparaissait (y compris dans les images), puis je suis allé dans l&amp;rsquo;interface d&amp;rsquo;OMV - Gestionnaire de mises à jour, mis le système à jour, puis dans OMV-Extras - Mises à jour j&amp;rsquo;ai lancé un &amp;ldquo;apt clean&amp;rdquo;. Et puis j&amp;rsquo;ai redémarré, et créé un nouveau container qui cette fois a pu démarrer, mais toujours avec le même problème.&lt;/p&gt;&#xA;&lt;h3 id=&#34;emby&#34;&gt;Emby&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;188&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/plex-depannage/embylogo.png&#34; width=&#34;188&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;À ce stade, je me suis dit qu&amp;rsquo;il était temps de chercher une alternative à Plex. J&amp;rsquo;ai vite trouvé &lt;a class=&#34;link&#34; href=&#34;https://emby.media/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Emby&lt;/a&gt;, avec un container disponible pour OMV. Restait à voir s&amp;rsquo;il y avait un client pour ma TV Samsung de 2015. C&amp;rsquo;était bien le cas, même s&amp;rsquo;il a fallu l&amp;rsquo;installer manuellement (non disponible par défaut dans le catalogue de Samsung).&lt;/p&gt;&#xA;&lt;p&gt;Il faut aller sur &lt;a class=&#34;link&#34; href=&#34;https://emby.media/community/index.php?/topic/74969-samsung-tizen-smarttv-2015-present-beta-app-install-from-usb/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;, récupérer le fichier &lt;strong&gt;tizen.zip&lt;/strong&gt;, l&amp;rsquo;extraire sur une clef USB, puis allumer la TV avec la clef connectée : l&amp;rsquo;installation se fait automatiquement.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;installation du container sur OMV est classique, j&amp;rsquo;ai suivi &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=Rbee3Se24Ms&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette video de TDL&lt;/a&gt;, mais je commence à bien connaître la création de container, et on peut se débrouiller tout seul en allant sur &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;hub.docker.com&lt;/a&gt;, en cherchant Emby, et en suivant les indications (env, volumes, etc&amp;hellip;) pour créer le container. C&amp;rsquo;est assez classique, avec principalement la définition des &amp;ldquo;share&amp;rdquo; pour les différentes bibliothèques de media que l&amp;rsquo;on veut renseigner.&lt;/p&gt;&#xA;&lt;p&gt;Attention toutefois à l&amp;rsquo;architecture : elle ne sera pas détectée automatiquement, et il faut bien spécifier celle de votre machine&amp;hellip; Dans mon cas, j&amp;rsquo;ai une architecture 32 bits (armv7l est un processeur 32 bits, et ARMv8 est 64 bits) et l&amp;rsquo;OS est un Debian Buster :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo uname -m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;armv7l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ sudo lsb_release -d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Description:&#x9;Debian GNU/Linux &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;buster&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Je dois donc renseigner comme ceci l&amp;rsquo;image lors de la création du container :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;666px&#34; data-flex-grow=&#34;277&#34; height=&#34;190&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/plex-depannage/emby.png&#34; width=&#34;528&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour connecter la TV au serveur, il faudra (comme pour Plex), se créer un compte sur le site d&amp;rsquo;Emby, et rentrer le PIN code affiché sur la TV.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai testé vite fait, ça &amp;ldquo;fait le taf&amp;rdquo;, mais c&amp;rsquo;est moins évolué que Plex, on est plus proche d&amp;rsquo;un serveur DLNA de base : la recherche d&amp;rsquo;affiches pour les séries par exemple n&amp;rsquo;a pas fonctionné quand Plex fonctionne à merveille de ce côté. Je le garde toutefois comme serveur de rechange (container arrêté), au cas où.&lt;/p&gt;&#xA;&lt;p&gt;Je me suis ensuite remis à la recherche d&amp;rsquo;une solution pour Plex&amp;hellip;&lt;/p&gt;&#xA;&lt;h3 id=&#34;la-solution&#34;&gt;La solution&#xA;&lt;/h3&gt;&lt;p&gt;Je me suis alors dit qu&amp;rsquo;il fallait que je trouve un moyen d&amp;rsquo;installer une version plus ancienne du container Plex (j&amp;rsquo;avais installé la version précédente qui fonctionnait vers mi-Novembre). Je suis donc allé sur le site dockerhub, sur la page de &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/linuxserver/plex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;linuxserver/plex&lt;/a&gt;. Deux nouvelles versions étaient sorties depuis mi-novembre.&lt;/p&gt;&#xA;&lt;p&gt;Ne trouvant rien sur une façon de lancer une version précédente, je suis alors allé sur le forum Dicord (qui m&amp;rsquo;avait déjà bien aidé pour l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16959&#34; &gt;installation de Nextcloud et mes problèmes de NAT hairpinning&lt;/a&gt;), et j&amp;rsquo;ai décrit mon problème, terminant en disant &amp;ldquo;J&amp;rsquo;ai l&amp;rsquo;impression qu&amp;rsquo;il y a un problème avec cette version&amp;hellip;&amp;rdquo;. J&amp;rsquo;ai très vite eu une réponse me renvoyant sur &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/faq#my-host-is-incompatible-with-images-based-on-ubuntu-focal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette FAQ&lt;/a&gt; et confirmant le bug :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;268px&#34; data-flex-grow=&#34;111&#34; height=&#34;551&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/plex-depannage/discord.png&#34; width=&#34;616&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme l&amp;rsquo;explique la FAQ, il y a un problème avec une dépendance de docker, un bug dans une librairie&amp;hellip; qui semble se produire sur les systèmes 32 bits de Debian Buster. Bingo, ça correspond bien à mon OS ! 8-)&lt;/p&gt;&#xA;&lt;p&gt;La façon la plus pérenne de résoudre le problème est alors de déclarer le dépot &amp;ldquo;backport&amp;rdquo; pour Debian/Buster. C&amp;rsquo;est d&amp;rsquo;ailleurs exactement à cela que servent les dépots &amp;ldquo;backport&amp;rdquo; : on y trouve des versions corrigées de certaines mises à jour, quand un problème a été identifié.&lt;/p&gt;&#xA;&lt;p&gt;Voilà donc les instructions à passer, où l&amp;rsquo;on déclare le backport (avec les clefs de sécurité), puis on met le système à jour, et enfin on demande l&amp;rsquo;installation de la librairie fautive, à savoir &lt;code&gt;libseccomp2&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;deb http://deb.debian.org/debian buster-backports main&amp;#34;&lt;/span&gt; | sudo tee -a /etc/apt/sources.list.d/buster-backports.list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; sudo apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; sudo apt install -t buster-backports libseccomp2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, le tour est joué, je n&amp;rsquo;ai plus qu&amp;rsquo;à réinstaller mon container Plex et tout va se passer comme un charme ! :-D&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai commis l&amp;rsquo;erreur de me focaliser sur Plex, persuadé que l&amp;rsquo;erreur venait de là. Alors qu&amp;rsquo;il s&amp;rsquo;agissait d&amp;rsquo;un problème avec le container docker, et dès que j&amp;rsquo;ai cherché dans cette direction, la solution est venue rapidement.&lt;/p&gt;&#xA;&lt;p&gt;La communauté LinuxServer.io sur Discord est vraiment d&amp;rsquo;une grande aide. Le lien Discord sur la page de &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/linuxserver/plex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;linuxserver/plex&lt;/a&gt; est un lien d&amp;rsquo;invitation pour rejoindre le groupe :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;310px&#34; data-flex-grow=&#34;129&#34; height=&#34;346&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/plex-depannage/discord1.png&#34; width=&#34;447&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On peut y accéder via le navigateur, ou installer ensuite une application dédiée. Discord permet de créer des salons entre groupes, et d&amp;rsquo;y faire du chat, de l&amp;rsquo;audio ou encore de la vidéo, partager son écran, etc&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Discord_%28logiciel%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Discord&lt;/a&gt; vient du monde des jeux, est privatif, et gratuit pour ses fonctionnalités de base. Il a été utilisé en France par des établissements universitaires et scolaires lors de la crise du Covid, pour pallier les difficultés techniques des espaces officiels&amp;hellip;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Openmediavault : Installation de Nextcloud</title>
            <link>https://pled.fr/openmediavault-installation-de-nextcloud/</link>
            <pubDate>Tue, 01 Dec 2020 17:14:36 +0000</pubDate>
            <guid>https://pled.fr/openmediavault-installation-de-nextcloud/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;nextcloud.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Étape importante pour mon nouveau NAS : installer Nextcloud avec un accès externe sécurisé afin de pouvoir y accéder hors de la maison. Pour info, il s&amp;rsquo;agit de la version 20 de Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;Car en plus de fichiers classiques dont un Cloud offre la disponibilité, il y a une autre fonctionnalité que j&amp;rsquo;apprécie énormément : le téléchargement automatique des photos prises sur le smartphone, chose rendue possible par l&amp;rsquo;application cliente Nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;accès par internet était donc primordial. J&amp;rsquo;ai eu plus de mal que prévu, et pas forcément sur l&amp;rsquo;installation en elle-même (avec Docker et ses containers c&amp;rsquo;est plutôt bien fait), mais j&amp;rsquo;ai du faire face à des problèmes de réseau (NAT, DNS&amp;hellip;) et le plus dur a été finalement de bien identifier les problèmes, puis de leur trouver une solution.&lt;/p&gt;&#xA;&lt;p&gt;Mais bon, aujourd&amp;rsquo;hui tout fonctionne, et je vais pouvoir me débarrasser de mon NAS Synology, et ce sera sans aucun regret, je suis plutôt épaté par Openmediavault et par tout ce qu&amp;rsquo;il propose.&lt;/p&gt;&#xA;&lt;p&gt;Je vais donc installer le triptyque Nextcloud-MariaDB-Swag. SWAG ( &lt;strong&gt;S&lt;/strong&gt; ecure &lt;strong&gt;W&lt;/strong&gt; eb &lt;strong&gt;A&lt;/strong&gt; pplication &lt;strong&gt;G&lt;/strong&gt; ateway, qui s&amp;rsquo;appelait précédemment &lt;strong&gt;letsencrypt&lt;/strong&gt;), inclut un &lt;em&gt;webserver&lt;/em&gt;, un &lt;em&gt;reverse-proxy&lt;/em&gt;, un client certbot pour la génération de certificats SSL, et enfin &lt;em&gt;fail2ban&lt;/em&gt; pour prévenir les intrusions. Plutôt complet donc !&lt;/p&gt;&#xA;&lt;p&gt;Pour cela, il faut définir un nom de domaine ; comme j&amp;rsquo;ai un domaine avec ce blog (pled.fr), et que mon hébergeur permet de se créer des enregistrements, j&amp;rsquo;ai procédé de cette manière.&lt;/p&gt;&#xA;&lt;p&gt;Hélas, une fois l&amp;rsquo;installation terminée, il m&amp;rsquo;était impossible d&amp;rsquo;accéder à la page web de Nextcloud. D&amp;rsquo;où venait le problème : configuration ? NAT ? DNS ? J&amp;rsquo;ai pas mal galéré avant de trouver la solution.&lt;/p&gt;&#xA;&lt;p&gt;Il s&amp;rsquo;agissait en fait d&amp;rsquo;un problème de &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Hairpinning&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;NAT hairpinning&lt;/a&gt; : on ne peut pas communiquer entre deux machines sur le même réseau interne en utilisant les adresses externes. On verra comment régler ce problème.&lt;/p&gt;&#xA;&lt;p&gt;Bref, voyons un peu tout cela de plus près, et comment tout a fini par tomber en marche&amp;hellip; :cool:&lt;/p&gt;&#xA;&lt;h2 id=&#34;préparation&#34;&gt;Préparation&#xA;&lt;/h2&gt;&lt;p&gt;Voilà ce que donne le schéma général : le reverse proxy et nextcloud tournent sur la même machine, mais cette vue permet de voir la redirection des ports 443 et 80 :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;782px&#34; data-flex-grow=&#34;326&#34; height=&#34;368&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/network.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/network_hu_1c788dd408c4f17.png 800w, https://pled.fr/openmediavault-installation-de-nextcloud/network.png 1200w&#34; width=&#34;1200&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Première chose à faire : on passe l&amp;rsquo;interface d&amp;rsquo;administration d&amp;rsquo;OMV sur le port 8080 afin de libérer le port 80 :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;396px&#34; data-flex-grow=&#34;165&#34; height=&#34;286&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/OVM.png&#34; width=&#34;472&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ensuite, une des premières questions à se poser est celle-ci : ma box dispose-t-elle d&amp;rsquo;une IP fixe ? Car les enregistrements DNS que l&amp;rsquo;on va créer vont pointer sur cette adresse, c&amp;rsquo;est donc très important.&lt;/p&gt;&#xA;&lt;h3 id=&#34;adresse-ip&#34;&gt;Adresse IP&#xA;&lt;/h3&gt;&lt;p&gt;Orange à priori ne fournit pas d&amp;rsquo;adresse IP fixe aux particuliers ! Mais heureusement j&amp;rsquo;ai trouvé &lt;a class=&#34;link&#34; href=&#34;https://communaute.orange.fr/t5/ma-connexion/adresse-ip-fixe-et-dynamique/td-p/2351552&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette information&lt;/a&gt; :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Orange ne fournit pas d&amp;rsquo;adresse fixe pour ses contrats grand public. Mais :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Les liaisons Fibre et VDSL ont des adresses &amp;ldquo;presque fixe&amp;rdquo;. Elles ne changent que rarement.&lt;/li&gt;&#xA;&lt;li&gt;Les liaisons ADSL (en voie de disparition) ont des adresses dynamiques.&lt;/li&gt;&#xA;&lt;li&gt;L&amp;rsquo;utilisateur ne peut pas forcer une IP strictement fixe.&lt;/li&gt;&#xA;&lt;li&gt;L&amp;rsquo;utilisateur peut forcer un changement d&amp;rsquo;IP depuis son espace client ou l&amp;rsquo;interface d&amp;rsquo;administration de sa box (forcer un redémarrage par logiciel)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;De plus ce n&amp;rsquo;est pas nécessaire, même pour atteindre une machine ayant une fonction de &amp;ldquo;serveur&amp;rdquo; : disque NAS, caméra, imprimante, serveur web, etc&amp;hellip; Il suffit de passer par l&amp;rsquo;utilisation d&amp;rsquo;un DNS dynamique.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Dans mon cas, étant en VDSL, je peux considérer que mon adresse IP ne changera que très rarement. Je peux donc me baser sur celle-ci pour définir mon domaine DNS.&lt;/p&gt;&#xA;&lt;p&gt;Je ne souhaite pas utiliser de DNS dynamique : beaucoup de vidéos d&amp;rsquo;installation de Nextcloud sur OMV utilisent cette méthode (avec le service &lt;a class=&#34;link&#34; href=&#34;http://www.duckdns.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;duckdns&lt;/a&gt; par exemple). Mais comme mon hébergeur me permet de créer mon propre sous-domaine, je voulais vraiment utiliser cette solution, c&amp;rsquo;est plus propre.&lt;/p&gt;&#xA;&lt;h3 id=&#34;dns&#34;&gt;DNS&#xA;&lt;/h3&gt;&lt;p&gt;D&amp;rsquo;après ce que j&amp;rsquo;ai pu lire, il faut donc créer deux enregistrements: un enregistrement &lt;strong&gt;A&lt;/strong&gt; qui pointe vers l&amp;rsquo;adresse IP de la box, puis un enregistrement &lt;strong&gt;CNAME&lt;/strong&gt; qui pointe vers ce &amp;ldquo;A record&amp;rdquo; (qui est en fait un simple alias). Alors voilà ce que cela donne dans mon cas :&lt;/p&gt;&#xA;&lt;p&gt;TypeNomPointe versAxxx.pled.fr1.2.3.4TypeNomAlias deCNAMEnextcloud.xxx.pled.frxxx.pled.fr&lt;/p&gt;&#xA;&lt;p&gt;On peut vérifier facilement que la résolution du nom en adresse fonctionne avec la commande nslookup par exemple.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal$ nslookup nextcloud.xxx.pled.fr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Server:&#x9;&#x9;127.0.0.53&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Address:&#x9;127.0.0.53#53&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Non-authoritative answer:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nextcloud.xxx.pled.fr&#x9;canonical name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; xxx.pled.fr.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Name:&#x9;xxx.pled.fr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Address: 1.2.3.4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;box-orange&#34;&gt;Box orange&#xA;&lt;/h3&gt;&lt;p&gt;On va ouvrir les ports 443 et 80 en les redirigeant vers eux-mêmes, soit 443 et 80. Il suffit d&amp;rsquo;aller sur la box, &amp;ldquo;Configuration réseau&amp;rdquo;, puis &amp;ldquo;Configuration avancée&amp;rdquo;, et enfin choisir l&amp;rsquo;onglet NAT/PAT. Ensuite, sélectionner les deux services concernés, et les faire pointer sur le périphérique où tourne Openmediavault :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;896px&#34; data-flex-grow=&#34;373&#34; height=&#34;188&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/boxorange.png&#34; width=&#34;702&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, tout est prêt, on peut maintenant installer Nextcloud.&lt;/p&gt;&#xA;&lt;h2 id=&#34;nextcloud---mariadb---swag&#34;&gt;Nextcloud - Mariadb - Swag&#xA;&lt;/h2&gt;&lt;p&gt;La première méthode que j&amp;rsquo;ai essayé est normalement la plus simple, à savoir utiliser &amp;ldquo;Stacks&amp;rdquo;, qui permet de tout installer en une seule fois.&lt;/p&gt;&#xA;&lt;p&gt;Tout est expliqué sur &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=4HPXGKfFibc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette vidéo de Techno Dad Life&lt;/a&gt;. Concernant la configuration et les paramètres, On trouve pas mal d&amp;rsquo;explications et d&amp;rsquo;exemples de configuration sur &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/general/swag&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;, ou encore &lt;a class=&#34;link&#34; href=&#34;https://forum.openmediavault.org/index.php?thread%2F28216-how-to-nextcloud-with-letsencrypt-using-omv-and-docker-compose%2F&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;celle-ci&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Comme j&amp;rsquo;ai rencontré des problèmes de NAT, j&amp;rsquo;ai fini par tout installer container par container, mais la méthode &amp;ldquo;Stacks&amp;rdquo; est beaucoup plus simple et plus rapide ! C&amp;rsquo;est donc celle-là que je vais décrire.&lt;/p&gt;&#xA;&lt;p&gt;Dans Portainer, le gestionnaire Docker d&amp;rsquo;Openmediavault (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16901&#34; &gt;l&amp;rsquo;article sur Plex&lt;/a&gt; si nécessaire), on clique sur Stacks à gauche, puis sur le bouton &amp;ldquo;Add stack&amp;rdquo;. Il ne reste plus qu&amp;rsquo;à coller le contenu suivant qui définit les 3 containers que l&amp;rsquo;on souhaite installer.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;version: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;services:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  nextcloud:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    image: linuxserver/nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    container_name: nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    environment:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PUID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PGID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - TZ&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Europe/Paris&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    volumes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/AppData/Nextcloud/config:/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/Nextcloud/data:/data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    depends_on:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - mariadb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    restart: unless-stopped&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  mariadb:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    image: linuxserver/mariadb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    container_name: nextclouddb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    environment:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PUID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PGID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - MYSQL_ROOT_PASSWORD&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;password&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - TZ&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Europe/Paris&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    volumes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/AppData/Nextclouddb:/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    restart: unless-stopped&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  swag:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    image: linuxserver/swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    container_name: swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cap_add:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - NET_ADMIN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    environment:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PUID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;997&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - PGID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - TZ&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Europe/Paris&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - URL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xxx.pled.fr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - SUBDOMAINS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - VALIDATION&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - EMAIL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xxx@yyy.zz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    volumes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - /srv/dev-disk-by-label-DATA/AppData/swag:/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ports:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 443:443&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 80:80&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - 81:81&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    restart: unless-stopped&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Quelques remarques sur ce contenu :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai volontairement retiré le définition du port 443 pour le container Nextcloud, car il rentrait en conflit au démarrage avec la définition du même port dans Swag. Comme le port SSL par défaut est 443, Nextcloud fonctionne parfaitement sans avoir à définir le port.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Le PUID et le PGID du compte admin sont à identifier sur votre serveur, comme lors de l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16901&#34; &gt;installation de PLEX&lt;/a&gt;. Vous pouvez éventuellement créer un compte spécifique &amp;ldquo;nextcloud&amp;rdquo; pour cette installation, à vous de voir.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Le port 81 n&amp;rsquo;est pas nécessaire à ce stade, mais je vais l&amp;rsquo;utiliser pour &amp;ldquo;Swag Dashboard&amp;rdquo;, un &amp;ldquo;mod&amp;rdquo; qui permet d&amp;rsquo;afficher les stats de Swag (voir &lt;a class=&#34;link&#34; href=&#34;https://colinfo.fr/installation-du-dashboard-de-swag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Pour le chemin d&amp;rsquo;accès aux volumes, j&amp;rsquo;ai d&amp;rsquo;abord créé via l&amp;rsquo;interface d&amp;rsquo;OMV les dossiers partagés &lt;code&gt;AppData&lt;/code&gt; (utilisé pour la configuration des containers), et un répertoire &lt;code&gt;Nextcloud&lt;/code&gt; qui sera utilisé par les utilisateurs de Nextcloud. Je peux ainsi accéder facilement à ce dernier avec un partage NFS (ou autre) si je le souhaite.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;458px&#34; data-flex-grow=&#34;190&#34; height=&#34;372&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/shared-folders.png&#34; width=&#34;710&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ensuite, il faut se connecter en SSH pour créer les sous-dossiers &amp;ldquo;Nextcloud&amp;rdquo;, &amp;ldquo;Nextclouddb&amp;rdquo; et &amp;ldquo;swag&amp;rdquo; qui sont utilisés pour les dossiers &amp;ldquo;config&amp;rdquo; des applis, et les faire appartenir au compte admin (le compte utilisé par OMV).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ cd /srv/dev-disk-by-label-DATA/AppData&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:/srv/dev-disk-by-label-DATA/AppData$ sudo mkdir Nextcloud Nextclouddb swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:/srv/dev-disk-by-label-DATA/AppData$ sudo chown -R admin Nextcloud Nextclouddb swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:/srv/dev-disk-by-label-DATA/AppData$ ls -l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;total &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxrwsrwx+  &lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt; admin users &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; Nov &lt;span style=&#34;color:#ae81ff&#34;&gt;22&lt;/span&gt; 18:23 Nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxrwsrwx+  &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; admin users &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; Nov &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt; 14:59 Nextclouddb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;drwxrwsrwx+ &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt; admin users &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; Nov &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt; 19:00 swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;En ce qui concerne les noms de domaine, j&amp;rsquo;ai donc utilisé mon enregistrement de type A pour le paramètre &lt;strong&gt;URL&lt;/strong&gt;, et le sous-domaine &amp;ldquo;nextcloud&amp;rdquo; du CNAME pour le paramètre &lt;strong&gt;SUBDOMAINS&lt;/strong&gt;. La validation est elle de type http.&lt;/li&gt;&#xA;&lt;li&gt;Concernant le port pour swag, j&amp;rsquo;ai bien mappé le port 443 (ce que je vais recevoir du router de la box) vers le port 443 (celui sur lequel écoute l&amp;rsquo;instance Nextcloud).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Voilà, il ne reste plus qu&amp;rsquo;à cliquer sur &amp;ldquo;Deploy the stack&amp;rdquo; pour que tout s&amp;rsquo;exécute et s&amp;rsquo;installe. Cela prend un peu de temps, puisque les logiciels vont être téléchargés, puis installés et configurés.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Ce n&amp;rsquo;est pas complètement terminé, il reste à finaliser l&amp;rsquo;installation en modifiant quelques fichiers de configuration.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Swag&lt;/strong&gt; : comme je souhaite utiliser un sous-domaine (nextcloud.xxx.pled.fr) et non pas un sous-dossier (xxx.pled.fr/nextcloud) pour accéder au serveur, il va falloir &amp;ldquo;activer&amp;rdquo; le fichier d&amp;rsquo;exemple :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /srv/dev-disk-by-label-DATA/AppData/swag/nginx/proxy-confs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp nextcloud.subdomain.conf.sample nextcloud.subdomain.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chown -R admin nextcloud.subdomain.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Avec une version plus récente de Nextcloud (v23 par exemple), modifier le fichier config.php comme indiqué ci-dessous est à faire APRÈS avoir passé la page d&amp;rsquo;installation dans le navigateur, ce qui permet de finir l&amp;rsquo;installation, et télécharger tous les fichiers nécessaires. Avant, le fichier n&amp;rsquo;est pas encore présent.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nextcloud&lt;/strong&gt; : il faut éditer et modifier/ajouter quelques paramètres dans le fichier &lt;code&gt;/srv/dev-disk-by-label-DATA/AppData/Nextcloud/config/www/nextcloud/config/config.php&lt;/code&gt; : vérifiez que ceux listés ci-dessous existent et adaptez-les à votre configuration.&lt;/p&gt;&#xA;&lt;p&gt;Pour une bonne définition du réseau pour l&amp;rsquo;entrée &lt;code&gt;trusted_proxies&lt;/code&gt;, il est recommandé d&amp;rsquo;utiliser la notation CIDR (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/streaming-de-sa-propre-musique-avec-lapplication-nextcloud-music/&#34; &gt;cet article&lt;/a&gt;). Grâce à Portainer, on peut voir le réseau utilisé par Nextcloud et/ou Swag :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;550px&#34; data-flex-grow=&#34;229&#34; height=&#34;219&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/reseau.png&#34; width=&#34;502&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On indique donc ce réseau en notation CIDR pour que Nextcloud soit content (sinon, laisser &amp;lsquo;swag&amp;rsquo;) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trusted_proxies&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;17Z.20.0.0/16&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trusted_domains&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;array&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;192.168.1.30:443&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nextcloud.xxx.pled.fr&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;overwrite.cli.url&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://nextcloud.xxx.pled.fr&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;overwritehost&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nextcloud.xxx.pled.fr&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;overwriteprotocol&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;il faut vérifier que tout démarre bien. Il faut se connecter en SSH sur la machine, et entre les commandes suivantes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker restart swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker restart nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker logs -f swag&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker logs -f nextcloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour swag, vérifier que vous voyez bien les messages suivants : &amp;quot; &lt;em&gt;Congratulations! Your certificate and chain have been saved at&amp;hellip;&lt;/em&gt;&amp;quot;. Pour swag et nextcloud, vous devez voir &amp;quot; &lt;em&gt;[services.d] starting services&lt;/em&gt;&amp;quot; suivi de &amp;quot; &lt;em&gt;[services.d] done&lt;/em&gt;&amp;quot; en fin de log. Si ces deux messages s&amp;rsquo;affichent, c&amp;rsquo;est plutôt bon signe.&lt;/p&gt;&#xA;&lt;p&gt;Du côté de l&amp;rsquo;interface de Portainer, on doit voir les containers démarrés et actifs :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;963px&#34; data-flex-grow=&#34;401&#34; height=&#34;299&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/portainer.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/portainer_hu_70d5a5055c27595a.png 800w, https://pled.fr/openmediavault-installation-de-nextcloud/portainer.png 1200w&#34; width=&#34;1200&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, on doit maintenant pouvoir afficher la page de première connexion de Nextcloud. C&amp;rsquo;est là que j&amp;rsquo;ai eu des problèmes avec mon histoire de NAT. J&amp;rsquo;y reviens tout de suite, mais terminons rapidement l&amp;rsquo;installation de Nextcloud :&lt;/p&gt;&#xA;&lt;p&gt;Sur l&amp;rsquo;écran qui s&amp;rsquo;affiche ci-dessous, il suffit de remplir les champs correctement. J&amp;rsquo;ai également décoché l&amp;rsquo;installation des &amp;ldquo;applications recommandées&amp;rdquo;, je n&amp;rsquo;installerai que ce dont j&amp;rsquo;ai besoin au fur et à mesure.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;197px&#34; data-flex-grow=&#34;82&#34; height=&#34;1098&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/nextcloud.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/nextcloud_hu_16818c5b329d135d.png 800w, https://pled.fr/openmediavault-installation-de-nextcloud/nextcloud.png 903w&#34; width=&#34;903&#34;&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Créer un compte admin (choisissez le nom que vous voulez, c&amp;rsquo;est celui qui aura les droits d&amp;rsquo;administration) et lui donner un mot de passe.&lt;/li&gt;&#xA;&lt;li&gt;Pour la base de données, laisser &amp;ldquo;/data&amp;rdquo; pour le dossier de la DB, choisir MySQL/MariaDB, le &amp;ldquo;Database user&amp;rdquo; est &amp;ldquo;root&amp;rdquo;, le &amp;ldquo;Database password&amp;rdquo; est celui que l&amp;rsquo;on a mis dans le fichier de configuration &amp;ldquo;Stack&amp;rdquo; ( &lt;code&gt;MYSQL_ROOT_PASSWORD&lt;/code&gt;), idem pour le nom de la base de donnée ( &lt;code&gt;nextclouddb&lt;/code&gt;), et enfin on remplace localhost par &amp;quot; &lt;code&gt;mariadb&lt;/code&gt;&amp;quot; (le nom du container en tant que nom DNS).&lt;/li&gt;&#xA;&lt;li&gt;Comme indiqué juste en-dessous de &amp;ldquo;mariadb&amp;rdquo;, on peut aussi préciser le numéro de port. Dans mon cas, comme j&amp;rsquo;ai fait l&amp;rsquo;installation container par container, j&amp;rsquo;avais défini un port pour mariadb (3306, le port par défaut), j&amp;rsquo;ai donc remplacé&amp;quot; &amp;ldquo;localhost&amp;rdquo; par mon adresse IP locale suivie du numéro de port (soit 192.168.1.30:3306). Ce n&amp;rsquo;était sans doute pas nécessaire, puisque ce sont finalement les valeurs par défaut, mais cela permet de comprendre ce que l&amp;rsquo;on fait !&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Voilà, cliquer sur les quelques écrans de présentation qui suivent, et Nextcloud est installé et prêt à fonctionner !&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;265px&#34; data-flex-grow=&#34;110&#34; height=&#34;922&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/nextcloud-dashboard-1.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/nextcloud-dashboard-1_hu_a49be1b53e85adba.png 800w, https://pled.fr/openmediavault-installation-de-nextcloud/nextcloud-dashboard-1.png 1020w&#34; width=&#34;1020&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;nat-hairpinning&#34;&gt;NAT hairpinning&#xA;&lt;/h2&gt;&lt;p&gt;Revenons donc au problème qui m&amp;rsquo;a occupé bien des heures. Non pas qu&amp;rsquo;il soit compliqué à résoudre, mais j&amp;rsquo;ai mis un certain temps à comprendre ce qui se passait.&lt;/p&gt;&#xA;&lt;p&gt;Donc lorsque je voulais afficher la page &lt;a class=&#34;link&#34; href=&#34;https://nextcloud.xxx.pled.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://nextcloud.xxx.pled.fr&lt;/a&gt; pour finaliser l&amp;rsquo;installation de Nextcloud, je partais en timeout :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;512px&#34; data-flex-grow=&#34;213&#34; height=&#34;234&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/timeout.png&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais tout vérifié : les ports ouverts avec &lt;strong&gt;nmap&lt;/strong&gt;, les noms de domaine avec &lt;strong&gt;nslookup&lt;/strong&gt;, tout semblait correct. J&amp;rsquo;ai fini par réinstaller tous les containers un par un, pour chaque fois arriver au même résultat. Et puis j&amp;rsquo;ai eu l&amp;rsquo;idée de prendre mon smartphone, de couper le wifi, et de tester l&amp;rsquo;URL de Nextcloud en passant donc par le réseau GSM : et là, ça marchait !! :razz:&lt;/p&gt;&#xA;&lt;p&gt;Restait à comprendre le problème, et là c&amp;rsquo;est un type sur Discord (en bas de la page de &lt;a class=&#34;link&#34; href=&#34;https://docs.linuxserver.io/general/swag&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Swag setup&lt;/a&gt;, il y a une invitation pour rejoindre le groupe) avec qui j&amp;rsquo;avais vérifié ma config swag quand je pensais que c&amp;rsquo;était peut-être la cause du problème, qui m&amp;rsquo;a parlé de ce désormais fameux &amp;ldquo;NAT hairpinning&amp;rdquo; !&lt;/p&gt;&#xA;&lt;p&gt;Alors qu&amp;rsquo;est-ce qui se passe ? quand on envoie un message TCP sur le réseau, il y a une adresse destination et une adresse source : quand je suis sur mon PC, l&amp;rsquo;adresse source est donc mon adresse locale (192.168.x.y). Le message par vers la destination (le nom DNS du serveur Nextcloud), soit une fois le nom DNS résolu en adresse IP, l&amp;rsquo;adresse de ma box. Et la box, voyant un message TCP arriver de l&amp;rsquo;extérieur avec une adresse source ET destination locale&amp;hellip; eh bien bloque tout simplement ce message le message : c&amp;rsquo;est apparemment une limitation du protocole NAT. Voilà ce qu&amp;rsquo;explique &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Hairpinning&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la page wikipedia&lt;/a&gt; sur le sujet :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;le hairpinning décrit une communication entre deux machines placées derrière le même routeur NAT qui utilisent l&amp;rsquo;adresse IP de leurs points de sorties pour communiquer. Tous les mécanismes de NAT ne supportent pas cette configuration de communication.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;Et donc soit vous avez un router évolué qui permet de définir une règle pour éviter ce problème (ce qui n&amp;rsquo;est pas le cas du router de box Orange), soit le plus simple est d&amp;rsquo;utiliser un serveur DNS local.&lt;/p&gt;&#xA;&lt;p&gt;Or il se trouve que j&amp;rsquo;ai installé il y a peu &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16628&#34; &gt;un serveur Pihole sur mon Raspberry&lt;/a&gt;. J&amp;rsquo;avais fait ça pour le fun (ou presque), mais finalement cela va m&amp;rsquo;être très utile, puisque Pihole fait office de serveur DNS. Il me suffit alors de définir deux entrées pour mes deux enregistrements DNS :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;678px&#34; data-flex-grow=&#34;282&#34; height=&#34;230&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/localdns-1.png&#34; width=&#34;650&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;847px&#34; data-flex-grow=&#34;353&#34; height=&#34;160&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-nextcloud/localdns2-1.png&#34; width=&#34;565&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà ! Après un rechargement de la page, Nextcloud s&amp;rsquo;affiche enfin correctement dans le PC et je peux finaliser l&amp;rsquo;installation ! :cool:&lt;/p&gt;&#xA;&lt;p&gt;Pour être complet, j&amp;rsquo;ai bien entendu eu le même problème avec le smartphone et l&amp;rsquo;application android Nextcloud. Sauf que là, quand j&amp;rsquo;ai voulu passer ma connexion wifi en mode &amp;ldquo;statique&amp;rdquo; (au lieu de DHCP) afin de définir mon propre DNS, cela ne fonctionnait toujours pas. Je n&amp;rsquo;ai pas creusé plus que ça, j&amp;rsquo;ai installé &lt;a class=&#34;link&#34; href=&#34;https://f-droid.org/fr/packages/org.blokada.alarm/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Blokada&lt;/a&gt;, ajouté mon propre DNS avec mon serveur Pihole en primaire, et celui de Google en secondaire, pour quand je suis en extérieur. Ça a l&amp;rsquo;air de bien fonctionner comme ça.&lt;/p&gt;&#xA;&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h2&gt;&lt;p&gt;Cette installation n&amp;rsquo;aura pas été facile. Elle aurait pu l&amp;rsquo;être sans ce problème de NAT, qui m&amp;rsquo;a bien pris la tête. Comme toujours, à force de réinstaller, de tester, regarder les logs de docker, j&amp;rsquo;ai appris plein de choses (comme des commandes &amp;lsquo;docker&amp;rsquo;). C&amp;rsquo;est donc bénéfique globalement.&lt;/p&gt;&#xA;&lt;p&gt;Et maintenant, j&amp;rsquo;ai un Nextcloud dernière version qui tourne sur une machine suffisamment puissante. Contrairement à ma baie Synology qui manque singulièrement de puissance CPU, et sur laquelle installer Nextcloud est une plaie.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est d&amp;rsquo;ailleurs la raison principale de ce changement de NAS : passer sur un système open-source, afin d&amp;rsquo;avoir un choix plus vaste de logiciels.&lt;/p&gt;&#xA;&lt;p&gt;Il me reste maintenant à penser à la sauvegarde de tout ça (car je n&amp;rsquo;ai plus de RAID sur mon Odroid-HC2 !). Et puis ce sera le tour d&amp;rsquo;un client Open VPN, chose que je ne pouvais tout simplement pas installer sur la baie Synology.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Openmediavault - Installation de PLEX server</title>
            <link>https://pled.fr/openmediavault-installation-de-plex-server/</link>
            <pubDate>Wed, 11 Nov 2020 17:34:56 +0000</pubDate>
            <guid>https://pled.fr/openmediavault-installation-de-plex-server/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;plex.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Suite de l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16854&#34; &gt;installation d&amp;rsquo;Openmediavault&lt;/a&gt; : cette fois, il s&amp;rsquo;agit d&amp;rsquo;installer PLEX Media Server, solution bien pratique pour diffuser le contenu media (films, séries, documentaires) du NAS vers la TV Samsung, qui intègre un client Plex.&lt;/p&gt;&#xA;&lt;p&gt;Pour ce faire, on va utiliser Docker et Portainer, qui simplifie l&amp;rsquo;installation. Il va tout de même y avoir quelques valeurs à saisir correctement, mais rien de très compliqué non plus, et tout a fonctionné du premier coup, c&amp;rsquo;est bien là l&amp;rsquo;essentiel.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai en fait suivi &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=I6PloKML_sc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;une vidéo&lt;/a&gt; (en anglais) pour cette installation. Je la retranscris ici en mode texte avec les captures d&amp;rsquo;écran nécessaires, et en français. Il y a un petit changement par rapport à la vidéo concernant le répertoire de configuration de Plex, qu&amp;rsquo;il n&amp;rsquo;est plus nécessaire de créer car il est géré par l&amp;rsquo;installation. La version Plex d&amp;rsquo;installée est la 1.20.4.3517 .&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est parti&amp;hellip;&lt;/p&gt;&#xA;&lt;h2 id=&#34;dossiers-partagés&#34;&gt;Dossiers partagés&#xA;&lt;/h2&gt;&lt;p&gt;Avant d&amp;rsquo;installer Plex, on va d&amp;rsquo;abord créer des dossiers partagés. Pendant l&amp;rsquo;installation d&amp;rsquo;OMV, j&amp;rsquo;avais partagé tout mon disque DATA (OMV-DATA), de manière à pouvoir y accéder depuis mon PC.&lt;/p&gt;&#xA;&lt;p&gt;Je vais donc créer des sous-répertoires à ce dossier partagé, pour l&amp;rsquo;utilisation de Plex :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;539px&#34; data-flex-grow=&#34;224&#34; height=&#34;309&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/dossiers-partages-1.png&#34; width=&#34;694&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc créé les trois dossiers dont j&amp;rsquo;ai besoin : Films, Series et Docus. Lors de la création de ceux-ci, j&amp;rsquo;ai ajouté un chemin relatif pour créer des sous-répertoires par rapport à OMV-DATA (qui est celui que je partage en NFS), et j&amp;rsquo;ai accordé à tous ces dossiers les droits Lecture/Ecriture :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;445px&#34; data-flex-grow=&#34;185&#34; height=&#34;268&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/dossiers-partages-ajout.png&#34; width=&#34;498&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Passons maintenant à l&amp;rsquo;installation du container Plex.&lt;/p&gt;&#xA;&lt;h3 id=&#34;docker-et-portainer&#34;&gt;Docker et Portainer&#xA;&lt;/h3&gt;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Au sujet de Docker, si vous l&amp;rsquo;installez, il peut être utile de le déplacer hors du disque système, si ce dernier est sur une carte microSD comme c&amp;rsquo;est mon cas avec mon odroid-hc2 (et tous les &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Ordinateur_%C3%A0_carte_unique&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;SBC&lt;/a&gt; comme les Raspberry &amp;amp; Co). Et mieux vaut le faire dès le départ, c&amp;rsquo;est plus simple.&lt;/p&gt;&#xA;&lt;p&gt;Voir cet article : &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17223&#34; &gt;Openmediavault : déplacement de Docker&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Pour installer ces deux-là, rien de plus simple : on va dans OMV-Extras (qui ont été précédemment installés par le script d&amp;rsquo;installation), et on installe les deux programmes :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;403px&#34; data-flex-grow=&#34;168&#34; height=&#34;486&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/docker-portainer.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-plex-server/docker-portainer_hu_ed7251c31573238b.png 800w, https://pled.fr/openmediavault-installation-de-plex-server/docker-portainer.png 818w&#34; width=&#34;818&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ensuite, on ouvre Portainer (bouton à droite de l&amp;rsquo;installation de Portainer), qui s&amp;rsquo;ouvre dans un nouvel onglet, et on saisit un mot de passe. Puis on choisit &amp;ldquo;Local&amp;rdquo; pour la gestion de l&amp;rsquo;environnement Docker, et on se connecte. On clique sur la petite baleine bleue, et on arrive sur notre &amp;ldquo;Dashboard&amp;rdquo;. Il y a déjà un Container qui tourne, c&amp;rsquo;est Portainer (qui est donc lui-même un container dans Docker).&lt;/p&gt;&#xA;&lt;h3 id=&#34;plex&#34;&gt;Plex&#xA;&lt;/h3&gt;&lt;p&gt;On clique sur Container, puis sur le bouton &amp;quot; + Add container&amp;quot;. Là, il va falloir aller chercher l&amp;rsquo;adresse du Container Plex. On ouvre alors un nouvel onglet dans notre navigateur, et on rentre l&amp;rsquo;adresse &lt;code&gt;hub.docker.com&lt;/code&gt; et on cherche &amp;ldquo;linuxserver/plex&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;408px&#34; data-flex-grow=&#34;170&#34; height=&#34;255&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/dockerhub.png&#34; width=&#34;434&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On arrive sur alors sur la page de Linuxserver.io (qui fournit des containers) pour PLEX :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1153px&#34; data-flex-grow=&#34;480&#34; height=&#34;104&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/linuxserver.png&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est à partir des informations de cette page qu&amp;rsquo;il va falloir saisir les paramètres de configuration pour notre futur container Plex. C&amp;rsquo;est la partie la plus fastidieuse, mais finalement assez simple. Sur cette page descriptive du container Plex, on trouve donc un peu plus bas les infos suivantes :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;216px&#34; data-flex-grow=&#34;90&#34; height=&#34;593&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plexvariables.png&#34; width=&#34;535&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce sont toutes ces informations qu&amp;rsquo;il va falloir saisir en créant notre container Plex (sauf PLEX_CLAIM) afin de pouvoir ensuite la démarrer. Une dernière chose à faire, c&amp;rsquo;est de noter l&amp;rsquo;UID et le GID pour le compte admin de notre propre NAS. On se loggue donc en SSH sur le serveur, et on tape la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$ id admin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;997&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;admin&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; gid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;100&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;users&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; groups&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;100&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;users&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;,996&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;openmediavault-admin&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@odroidhc2:~$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Retour dans l&amp;rsquo;onglet &amp;ldquo;New container&amp;rdquo; ouvert précédemment, on commence par lui donner un nom et indiquer le chemin de l&amp;rsquo;image ci-dessus :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;431px&#34; data-flex-grow=&#34;179&#34; height=&#34;272&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plex1.png&#34; width=&#34;489&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis en bas de la page, on clique sur &amp;ldquo;Env&amp;rdquo;, et sur &amp;ldquo;+ add environment variable&amp;rdquo; plusieurs fois pour ajouter nos variables (en appliquant bien nos propres valeurs pour UID et GID) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;706px&#34; data-flex-grow=&#34;294&#34; height=&#34;314&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/env.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-plex-server/env_hu_a006c30884acc8cd.png 800w, https://pled.fr/openmediavault-installation-de-plex-server/env.png 924w&#34; width=&#34;924&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Même chose pour Network où l&amp;rsquo;on choisit &amp;ldquo;host&amp;rdquo; dans la liste :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;934px&#34; data-flex-grow=&#34;389&#34; height=&#34;162&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plex2.png&#34; width=&#34;631&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour les Volumes, il va falloir définir chaque répertoire avec le chemin absolu (voir plus haut), en ayant coché &amp;ldquo;Bind&amp;rdquo; auparavant :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;590px&#34; data-flex-grow=&#34;246&#34; height=&#34;398&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plex3.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plex3_hu_e49aafbe9507fee0.png 800w, https://pled.fr/openmediavault-installation-de-plex-server/plex3.png 980w&#34; width=&#34;980&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Dans la vidéo, un dossier Config est créé et destiné aux fichiers de configurations de Plex. Cela ne sert plus à rien, le container va créer son propre répertoire &amp;ldquo;config&amp;rdquo;. On peut le retrouver en éditant le container créé et en allant voir les Volumes : chez moi, le dossier est créé dans /var/lib/docker/volumes/ec75ef70e88d3dbfed36925d274292439931f9ff77c88dde055abb9bbf41ae6b/_data. Ça peut servir pour aller voir les logs de Plex en cas de souci&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Et enfin , on modifie le mode &amp;ldquo;Restart&amp;rdquo; comme indiqué en mode &amp;ldquo;Unless stopped&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1630px&#34; data-flex-grow=&#34;679&#34; height=&#34;168&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plex4.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plex4_hu_8cc9fba863ea7b08.png 800w, https://pled.fr/openmediavault-installation-de-plex-server/plex4.png 1141w&#34; width=&#34;1141&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, tout est configuré, il ne reste plus qu&amp;rsquo;à cliquer sur le bouton &amp;quot; &lt;strong&gt;Deploy the container&lt;/strong&gt;&amp;quot;. Votre instance Plex est désormais installée et opérationnelle !&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à copier des vidéos dans vos dossiers partagés (dans mon cas, via le partage NFS que j&amp;rsquo;ai mis en place &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16854&#34; &gt;pendant l&amp;rsquo;installation d&amp;rsquo;OMV&lt;/a&gt;. Puis de lancer l&amp;rsquo;interface de Plex pour la première fois en ouvrant l&amp;rsquo;adresse suivante : &lt;code&gt;http://192.168.1.X:32400/web/index.html&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faudra un peu la configurer, choisir les dossiers Media, etc&amp;hellip; Rien de très compliqué, et ce n&amp;rsquo;est pas l&amp;rsquo;objet de cet article.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;396px&#34; data-flex-grow=&#34;165&#34; height=&#34;1035&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/home-plex.png&#34; srcset=&#34;https://pled.fr/openmediavault-installation-de-plex-server/home-plex_hu_32bef3d8a2d4841e.png 800w, https://pled.fr/openmediavault-installation-de-plex-server/home-plex_hu_a7a387aa204ac06f.png 1600w, https://pled.fr/openmediavault-installation-de-plex-server/home-plex.png 1712w&#34; width=&#34;1712&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Enfin, sur la TV, je me suis déconnecté de mon instance existante (sur la baie Synology), puis reconnecté avec l&amp;rsquo;adresse mail du nouveau compte Plex que j&amp;rsquo;ai créé pour cette occasion. Le &amp;ldquo;Plex client&amp;rdquo; de la TV vous demande alors de rentrer un code :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;344px&#34; data-flex-grow=&#34;143&#34; height=&#34;360&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/openmediavault-installation-de-plex-server/plex-code.png&#34; width=&#34;517&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il suffit alors de taper l&amp;rsquo;adresse indiquée &lt;code&gt;http://plex.tv/link&lt;/code&gt; et de saisir le code pour que le client de la TV se synchronise avec le nouveau serveur.&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, le nouveau serveur PLEX est prêt ! Reste à recopier ma vidéothèque qui est toujours sur la baie Synology et aussi à automatiser une solution de backup avec Rsync vers mon PC local, puisque sur ce nouveau NAS, je n&amp;rsquo;ai pas de RAID. Ce sera l&amp;rsquo;objet d&amp;rsquo;un prochain article.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>ODROID-HC2 - Installation d&#39;Openmediavault</title>
            <link>https://pled.fr/odroid-hc2-installation-dopenmediavault/</link>
            <pubDate>Sun, 08 Nov 2020 16:22:40 +0000</pubDate>
            <guid>https://pled.fr/odroid-hc2-installation-dopenmediavault/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;omv-icon.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ça faisait longtemps que je voulais remplacer ma baie Synology par un système ouvert, à savoir &lt;a class=&#34;link&#34; href=&#34;https://www.openmediavault.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;openmediavault&lt;/a&gt;, &amp;quot; &lt;em&gt;The open network attached storage solution&lt;/em&gt;&amp;quot;. Restait à savoir sur quel matériel faire tourner ce serveur, l&amp;rsquo;objectif étant aussi de minimiser le budget : ces baies propriétaires comme Synology, Qnas, restent tout de même assez chères, quand on y ajoute le prix des disques durs.&lt;/p&gt;&#xA;&lt;p&gt;Il y a bien les NAS &lt;a class=&#34;link&#34; href=&#34;https://shop.kobol.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Kobol&lt;/a&gt; qui m&amp;rsquo;avaient tapés dans l&amp;rsquo;œil, projet open-source proposant des baies physiques (open hardware) sur lesquelles on peut faire tourner Armbian ou Syncloud, Openmediavault ou encore Nextcould. Mais là en plus du prix (300$ + le port), le produit est indisponible depuis plusieurs mois.&lt;/p&gt;&#xA;&lt;p&gt;Après avoir d&amp;rsquo;abord pensé à utiliser le populaire Raspberry 4, j&amp;rsquo;ai finalement opté pour un Odroid-HC2. D&amp;rsquo;abord parce qu&amp;rsquo;il dispose d&amp;rsquo;un contrôleur SATA, un vrai contrôleur disque, ce qui préférable à la solution USB d&amp;rsquo;un Raspberry. Ensuite parce que le processeur est nettement plus puissant.&lt;/p&gt;&#xA;&lt;p&gt;Enfin parce que j&amp;rsquo;aime bien la conception : le fait de pouvoir insérer un disque dur 3&amp;quot;½ dans le rail, permet avec une coque de n&amp;rsquo;avoir au final un seul boîtier, contrairement à un Raspberry où l&amp;rsquo;on se retrouve forcément avec un disque externe. C&amp;rsquo;est tout de même plus pratique.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;400px&#34; data-flex-grow=&#34;166&#34; height=&#34;360&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/odroid-hc2.png&#34; width=&#34;600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Évidemment, je fais le choix d&amp;rsquo;un disque unique, pas de baie RAID comme dans les NAS du marché. Mais avec un backup via le réseau sur mon PC où j&amp;rsquo;ai de la place en stockage, ce sera parfait. C&amp;rsquo;est le principe &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Principe_KISS&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;KISS&lt;/a&gt; ! (Keep It Simple, Stupid). :cool:&lt;/p&gt;&#xA;&lt;p&gt;Voyons voir la mise en œuvre et l&amp;rsquo;installation d&amp;rsquo;Openmediavault, la première étape de mon future NAS. Il s&amp;rsquo;agit de la version 5.5.15-1. Car j&amp;rsquo;ai ensuite l&amp;rsquo;intention d&amp;rsquo;installer OpenVPN, un serveur NextCloud, PLEX media server, et sans doute un logiciel de torrent. Ce sera l&amp;rsquo;objet d&amp;rsquo;autres articles.&lt;/p&gt;&#xA;&lt;h3 id=&#34;hardware&#34;&gt;Hardware&#xA;&lt;/h3&gt;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;OCT 2021 : À l&amp;rsquo;époque je n&amp;rsquo;ai pas fait attention à l&amp;rsquo;architecture (32 bits ou 64 bits). Ce NAS est en x32 (processeur armv7l) et de nos jours il est tout de même préférable d&amp;rsquo;utiliser une architecture x64 (il y a des problèmes de limitation en x32, voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17941&#34; &gt;cet article&lt;/a&gt;).&#xA;Donc même si je suis content de ce NAS, si c&amp;rsquo;était à refaire, je ne le choisirais pas.&lt;/p&gt;&#xA;&lt;p&gt;Comme j&amp;rsquo;avais un HD 3&amp;quot;½ en stock de 1To, c&amp;rsquo;était l&amp;rsquo;occasion de l&amp;rsquo;utiliser. Pour info, le HC2 permet d&amp;rsquo;utiliser ce type de disque, quand le HC1 n&amp;rsquo;autorise que les disques de 2&amp;quot;½. Il ne restait plus qu&amp;rsquo;à commander le matériel.&lt;/p&gt;&#xA;&lt;p&gt;Pour ce faire, je suis allé sur le site &lt;a class=&#34;link&#34; href=&#34;http://odroid.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;odroid.fr&lt;/a&gt;, qui permet de payer en euros, et d&amp;rsquo;inclure la TVA dans le prix, ce qui évite les mauvaises surprises à la douane (tout est envoyé d&amp;rsquo;Angleterre je crois). Bref, alimentation, carte SD 8 Go, coque et port compris, j&amp;rsquo;en ai eu pour un peu moins de 100 € (97,95 €).&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;assemblage est on ne peut plus simple (voir photo), il ne reste plus qu&amp;rsquo;à installer openmediavault.&lt;/p&gt;&#xA;&lt;h3 id=&#34;installation-domv&#34;&gt;Installation d&amp;rsquo;OMV&#xA;&lt;/h3&gt;&lt;p&gt;Le premier problème est de trouver la bonne image OS à récupérer. Le lien des images OMV toutes prêtes vous renvoient vers un document expliquant qu&amp;rsquo;il faut utiliser maintenant une autre méthode, le nombre de SBD ( &lt;strong&gt;S&lt;/strong&gt; ingle &lt;strong&gt;B&lt;/strong&gt; oard &lt;strong&gt;C&lt;/strong&gt; omputer) ne cessant de croître, et qu&amp;rsquo;il est impossible de fournir une image toute prête pour chaque modèle de SBC.&lt;/p&gt;&#xA;&lt;p&gt;On arrive donc sur &lt;a class=&#34;link&#34; href=&#34;https://forum.openmediavault.org/index.php?thread/28789-installing-omv5-on-raspberry-pi-s-armbian-sbc-s-i386-32-bit-platforms/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt; du forum OMV, où il faut choisir &lt;a class=&#34;link&#34; href=&#34;https://github.com/OpenMediaVault-Plugin-Developers/docs/blob/master/Adden-A-Installing_OMV5_on_Armbian.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Installing OMV5 on Armbian Buster&lt;/a&gt;. Buster est la version recommandée pour OMV sur ce genre de carte. Ce dernier lien affiche la documentation intitulée &amp;ldquo;Getting Started with OMV Addendum A: Installing OMV5 On Armbian SBC&amp;rsquo;s&amp;rdquo;. Commencer par la télécharger localement comme il est demandé, afin de l&amp;rsquo;ouvrir avec votre lecteur de PDF préféré (d&amp;rsquo;ailleurs les hyperliens de la doc ne fonctionnaient pas avec l&amp;rsquo;affichage du PDF dans Firefox !).&lt;/p&gt;&#xA;&lt;p&gt;Dans &amp;ldquo;Supported Devices&amp;rdquo;, il faut cliquer sur le lien &lt;a class=&#34;link&#34; href=&#34;https://www.armbian.com/download/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Armbian Download Page&lt;/a&gt;. Sur la page qui s&amp;rsquo;affiche, on trouve finalement notre modèle :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;258px&#34; data-flex-grow=&#34;107&#34; height=&#34;260&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/download.png&#34; width=&#34;280&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On clique sur l&amp;rsquo;image, et on arrive enfin sur la page recherchée. Ici, il faut choisir Buster qui offre une meilleure compatibilité avec OMV :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;518px&#34; data-flex-grow=&#34;215&#34; height=&#34;265&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/download1.png&#34; width=&#34;572&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste qu&amp;rsquo;à suivre les instructions, à savoir dézipper le fichier avec 7-Zip (extension .xz). Sur Ubuntu, il suffit de passer la commande suivante pour installer 7-Zip :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install p7zip-full&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis pour extraire l&amp;rsquo;archive :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;7z e Armbian_20.08.1_Odroidxu4_buster_legacy_4.14.195.img.xz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On récupère alors un fichier &lt;strong&gt;.img&lt;/strong&gt; qu&amp;rsquo;il va falloir flasher sur la carte microSD avec Balena Etcher, dont l&amp;rsquo;utilisation est vraiment simplissime :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;370px&#34; data-flex-grow=&#34;154&#34; height=&#34;324&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/balena.png&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, tout est prêt pour le premier démarrage : insérer la carte microSD dans l&amp;rsquo;Odroid, assurez-vous d&amp;rsquo;avoir bien raccordé le boîtier au réseau (c&amp;rsquo;est requis pour l&amp;rsquo;installation), puis brancher l&amp;rsquo;alimentation. Les trois LEDs doivent s&amp;rsquo;allumer (une rouge, une verte et une bleue qui doit se mettre à clignoter quand le réseau est activé).&lt;/p&gt;&#xA;&lt;p&gt;Le temps de se faire un café, et l&amp;rsquo;on va pouvoir se connecter en SSH sur la machine. Pour trouver l&amp;rsquo;adresse IP, vous pouvez aller sur votre Box et regarder les adresses allouées (DHCP). Un nouveau client a du apparaître. Sinon, sous Linux, on peut faire un &lt;strong&gt;nmap&lt;/strong&gt; tout simple (à adapter à votre réseau) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal$ sudo nmap -sn 192.168.1.0/24&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nmap scan report &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; 192.168.1.30&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host is up &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;0.00088s latency&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MAC Address: 00:1E:06:37:0D:45 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;Wibrain&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour info, Wibrain est le nom de la boîte qui est devenue ensuite Hardkernel qui fabrique les Odroid&amp;hellip; Voilà, j&amp;rsquo;ai mon adresse, et je vais même aller dans l&amp;rsquo;interface de la Box pour lui assigner cette adresse, afin qu&amp;rsquo;elle ne change pas, c&amp;rsquo;est plus simple comme ça (Baux DHCP statiques). Puis on se connecte en SSH sur le serveur avec le compte admin (le mot de passe par défaut est 1234) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh admin@192.168.1.30&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La première chose demandée est de changer le mot de passe, normal. On crée ensuite un autre compte (avec la permission sudo) à utiliser de préférence à root. Ensuite, il s&amp;rsquo;agit de mettre le système à jour, suivi d&amp;rsquo;un redémarrage :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;reboot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On attend le redémarrage, puis on se reconnecte (avec le nouveau mot de passe. J&amp;rsquo;en profite pour fignoler et changer le nom de la machine puisque par défaut c&amp;rsquo;est &amp;ldquo;odroidxu4&amp;rdquo; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo hostnamectl set-hostname odroidhc2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis on lance l&amp;rsquo;installation d&amp;rsquo;openmediavault proprement dit, à l&amp;rsquo;aide d&amp;rsquo;un script qui va tout configurer :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J&amp;rsquo;ai du taper la touche &amp;ldquo;Entrée&amp;rdquo; pour que l&amp;rsquo;on me demande mon mot de passe, sinon il ne se passait rien ! L&amp;rsquo;installation peut prendre jusqu&amp;rsquo;à 30 minutes selon la doc&amp;hellip; Avec le HC2, ça a pris à peine une dizaine de minutes. Le système va redémarrer tout seul à la fin de l&amp;rsquo;installation.&lt;/p&gt;&#xA;&lt;p&gt;Toujours bon à savoir, la doc précise que Network Manager a été retiré des machines SBC qui tournent OVM pour la raison suivante : incompatibilité avec Portainer et Docker (Portainer facilite l&amp;rsquo;utilisation de Docker).&lt;/p&gt;&#xA;&lt;p&gt;Et on passe enfin en mode graphique : dans votre navigateur préféré, taper l&amp;rsquo;adresse de la machine, et identifiez vous avec le compte &amp;ldquo;admin&amp;rdquo; et le mot de passe &amp;ldquo;openmediavault&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;280px&#34; data-flex-grow=&#34;116&#34; height=&#34;470&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/omvgui.png&#34; width=&#34;549&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h3&gt;&lt;p&gt;Il va maintenant falloir suivre l &lt;a class=&#34;link&#34; href=&#34;https://forum.openmediavault.org/index.php?thread/27073-new-user-guide-getting-started-with-openmediavault-4-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;a doc d&amp;rsquo;installation d&amp;rsquo;OVM 5&lt;/a&gt; (Getting started with Openmediavault 5) que l&amp;rsquo;on va également télécharger en local. Puis on l&amp;rsquo;ouvre en allant directement au chapitre &amp;ldquo;Initial Configuration&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;On va suivre la documentation pour régler certains paramètres : entre autres changer le mot de passe, et plus globalement passer en revue les sections qui nous intéressent dans le menu de gauche. Si l&amp;rsquo;anglais de la doc vous rebute, il y a des vidéos qui expliquent tout ça dont certaines en français, comme &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=LjM6n5qmU6s&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;celle-ci&lt;/a&gt; par exemple.&lt;/p&gt;&#xA;&lt;p&gt;On va en fait régler la config de base, monter le disque, etc&amp;hellip; À noter dans &amp;ldquo;Paramètres généraux&amp;rdquo;, la &lt;strong&gt;Déconnexion automatique&lt;/strong&gt; est réglée à 5mn, c&amp;rsquo;est pas mal de la passer à 1 jour, sinon c&amp;rsquo;est plutôt gênant (enfin, c&amp;rsquo;est selon vos préoccupations de sécurité !). En profiter pour changer le mot de passe par défaut dans l&amp;rsquo;onglet d&amp;rsquo;à côté.&lt;/p&gt;&#xA;&lt;p&gt;Côté Plugins, j&amp;rsquo;installe &lt;strong&gt;openmediavault-resetperms 5.0&lt;/strong&gt;, qui est bien pratique pour visualiser quels plugins utilisent quels dossiers partagés (vu dans une vidéo).&lt;/p&gt;&#xA;&lt;p&gt;Dans &amp;ldquo;Disques&amp;rdquo;, on sélectionne notre HD et on l&amp;rsquo;efface. Puis dans &amp;ldquo;Système de fichiers&amp;rdquo; on crée et on formate le disque avec un label DATA (par exemple). Puis on le monte. Enfin, on va dans &amp;ldquo;Dossiers partagés&amp;rdquo; et on partage ce disque en donnant les droits de Lecture/Écriture à tout le monde (avec le nom OMV-DATA par exemple). Etc&amp;hellip; À la fin, j&amp;rsquo;ai ceci :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;597px&#34; data-flex-grow=&#34;248&#34; height=&#34;235&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/OMV-DATA.png&#34; width=&#34;585&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai pour ma part opté pour un &lt;strong&gt;partage NFS&lt;/strong&gt; sur tout le disque DATA (soit tout le HD SATA, la carte microSD étant réservée au système), plus adapté à mon PC Ubuntu que SMB. Dans la partie NFS, je l&amp;rsquo;active, puis crée un partage en indiquant l&amp;rsquo;adresse IP de mon PC, et en accordant les droits Lecture/Écriture :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;602px&#34; data-flex-grow=&#34;251&#34; height=&#34;233&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/NFS-OMV-DATA.png&#34; width=&#34;585&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, je peux monter ce partage à partir de mon PC Ubuntu. Le mount via &lt;code&gt;/etc/fstab&lt;/code&gt; fonctionne parfaitement, et c&amp;rsquo;est doute la façon la plus simple de procéder :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;580px&#34; data-flex-grow=&#34;241&#34; height=&#34;299&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/nfs-ubuntu.png&#34; width=&#34;723&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;problème-nfs-avec-nautilus&#34;&gt;Problème NFS avec Nautilus&#xA;&lt;/h4&gt;&lt;p&gt;À noter qu&amp;rsquo;à partir de Nautilus, le partage était bien vu dans &amp;ldquo;Autres emplacements&amp;rdquo;, mais l&amp;rsquo;accès refusé :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;378px&#34; data-flex-grow=&#34;157&#34; height=&#34;504&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/nautilus-error.png&#34; width=&#34;795&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;En fait, il s&amp;rsquo;agit d&amp;rsquo;un problème de port utilisé. Si je regarde les journaux systèmes côté OMV, je vois ceci :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;757px&#34; data-flex-grow=&#34;315&#34; height=&#34;201&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/journal.png&#34; width=&#34;634&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il s&amp;rsquo;agit d&amp;rsquo;un problème de sécurité, par défaut un serveur NFS n&amp;rsquo;accepte que les ports inférieurs à 1024. Il faut donc ajouter une option appelée &amp;ldquo;insecure&amp;rdquo; pour qu&amp;rsquo;il accepte des ports plus élevés. On la voit dans les options du partage :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1413px&#34; data-flex-grow=&#34;589&#34; height=&#34;73&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/insecure.png&#34; width=&#34;430&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mais alors, ça devrait fonctionner ? En fait, non, parce que Nautilus utilise les &amp;ldquo;pseudos filesystem&amp;rdquo; de NFSv4, ce qui n&amp;rsquo;est pas le cas du &lt;strong&gt;mount&lt;/strong&gt; dans &lt;code&gt;/etc/fstab&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Pour résoudre lce problème, il faut se connecter en ssh sur le serveur OMV, éditer le fichier &lt;code&gt;/etc/exports&lt;/code&gt;, et ajouter l&amp;rsquo;option &amp;ldquo;insecure&amp;rdquo; aux lignes sous la partie &lt;code&gt;# NFSv4 - pseudo filesystem root&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cat /etc/exports&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This file is auto-generated by openmediavault (https://www.openmediavault.org)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# WARNING: Do not edit this file, your changes will get lost.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# /etc/exports: the access control list for filesystems which may be exported&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#               to NFS clients.  See exports(5).&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/export/OMV-DATA 192.168.1.20&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;fsid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;d725df26-36b0-4925-b9ca-3c65fa1b7572,rw,subtree_check,insecure&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# NFSv4 - pseudo filesystem root&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/export 192.168.1.20&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;ro,fsid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;0,root_squash,no_subtree_check,hide,insecure&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si l&amp;rsquo;option était bien indiquée pour le premier lien (correspondant à l&amp;rsquo;interface graphique d&amp;rsquo;OMV), j&amp;rsquo;ai du rajouter l&amp;rsquo;option pour la partie sous NVFv4. Il ne reste plus qu&amp;rsquo;à redémarrer le service NFS :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo systemctl restart nfs-kernel-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, je peux accéder directement au partage via Nautilus si je le souhaite :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;408px&#34; data-flex-grow=&#34;170&#34; height=&#34;459&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/odroid-hc2-installation-dopenmediavault/export.png&#34; width=&#34;782&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ce premier partage me servira à copier les fichiers facilement à partir de mon desktop Ubuntu sur le NAS OMV.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h3&gt;&lt;p&gt;À ce stade, je remarque que l&amp;rsquo;interface d&amp;rsquo;OMV est une interface d&amp;rsquo;admin pure et dure, à aucun endroit je ne peux créer un fichier de test, histoire de tester mon partage NFS. Il me faut soit le faire à partir du client Ubuntu, soit connecté en SSH sur l&amp;rsquo;Odroid-hc2, en allant dans le répertoire /exports/OMV-DATA.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;apprends aussi (à mes dépends) que OMV fonctionne avec une base de données et qu&amp;rsquo;il vaut mieux éviter de faire des changements en se connectant directement sur la machine hôte, par exemple pour effacer un répertoire partagé. C&amp;rsquo;est ce que j&amp;rsquo;ai fait, et là, le répertoire était toujours affiché dans OMV, impossible de l&amp;rsquo;effacer. J&amp;rsquo;ai fini par tout réinstaller !&lt;/p&gt;&#xA;&lt;p&gt;Ce n&amp;rsquo;est pas interdit pour certaines commandes (comme le redémarrage d&amp;rsquo;un service ci-dessus), mais il faut savoir ce que l&amp;rsquo;on fait. En fait, tout ce qui touche la configuration d&amp;rsquo;OMV doit être dans la database, et des modifs directes sur le système casseront ce mécanisme.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, ce sera tout pour cette première étape. La suivante, ce sera d&amp;rsquo;installer PLEX server, et pour cela utiliser Docker. C&amp;rsquo;est bien, j&amp;rsquo;ai déjà entendu parlé de Docker sans jamais l&amp;rsquo;utiliser. Ce sera l&amp;rsquo;occasion de rentrer dans ce monde de &amp;ldquo;containers&amp;rdquo; (conteneurs logiciels en français) qui permettent entre autres de simplifier l&amp;rsquo;installation.&lt;/p&gt;&#xA;&lt;p&gt;Ce sera pour le prochain épisode.&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Au sujet de Docker, si vous l&amp;rsquo;installez, il peut être utile de le déplacer hors du disque système, si ce dernier est sur une carte microSD comme c&amp;rsquo;est mon cas.&lt;/p&gt;&#xA;&lt;p&gt;Voir cet article : &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=17223&#34; &gt;Openmediavault : déplacement de Docker&lt;/a&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Indexation Baie Synology : Installation de SynoIndex Watcher</title>
            <link>https://pled.fr/indexation-baie-synology-installation-de-synoindex-watcher/</link>
            <pubDate>Fri, 22 May 2020 10:01:39 +0000</pubDate>
            <guid>https://pled.fr/indexation-baie-synology-installation-de-synoindex-watcher/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;indexation.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Troisième article et troisième solution pour l&amp;rsquo;indexation des fichiers sur la baie Synology ! En effet, si l&amp;rsquo;on passe par NFS pour y copier nos fichiers multimédia, les fichiers ne sont pas indexés automatiquement, et certaines applications risquent de ne pas les voir&amp;hellip; Ce qui peut être gênant.&lt;/p&gt;&#xA;&lt;p&gt;La dernière solution que j&amp;rsquo;avais documentée, à savoir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=11704&#34; &gt;Synology-mediamon&lt;/a&gt;, pose problème à son tour : le process ne se lance pas au démarrage (&lt;a class=&#34;link&#34; href=&#34;https://github.com/carljm/synology-mediamon/issues/14&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;bug&lt;/a&gt;), et de plus crash régulièrement, sans doute à cause d&amp;rsquo;un problème de caractère dans le nom du fichier indexé&amp;hellip; Ce script n&amp;rsquo;a pas l&amp;rsquo;air d&amp;rsquo;être suivi, et n&amp;rsquo;a pas bougé depuis 4 ans, on ne peut plus vraiment compter sur lui.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc regardé à nouveau la situation de ce côté, et de site en site je suis tombé sur un nouveau script appelé &lt;a class=&#34;link&#34; href=&#34;https://github.com/letorbi/synoindexwatcher&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Synoindex Watcher&lt;/a&gt;, qui a l&amp;rsquo;air plus récent et semble maintenu.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;installation est facile, on peut même générer un fichier de configuration si l&amp;rsquo;on a des besoins spécifiques, ça m&amp;rsquo;a donc l&amp;rsquo;air pas mal du tout ! Voilà les infos pour l&amp;rsquo;installer, sinon tout est expliqué et documenté (en anglais) sur la page &lt;a class=&#34;link&#34; href=&#34;https://github.com/letorbi/synoindexwatcher&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;du projet github&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Les caractéristiques du script sont répertoriées comme suit :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Léger&lt;/strong&gt; : pas besoin d&amp;rsquo;installer de packages Synology supplémentaires. On verra qu&amp;rsquo;il faut tout de même installer &lt;strong&gt;pip&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Intelligent&lt;/strong&gt; : Ne s&amp;rsquo;exécute que si un fichier a été ajouté/supprimé/renommé.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Compatible&lt;/strong&gt; avec Python 2 comme Python 3 (version minimum testée 2.7).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;installation&#34;&gt;Installation&#xA;&lt;/h3&gt;&lt;p&gt;Pour l&amp;rsquo;installation, il faut se connecter en SSH à la baie Synology. Il est recommandé d&amp;rsquo;utiliser &lt;strong&gt;pip&lt;/strong&gt; pour l&amp;rsquo;installation. Pip n&amp;rsquo;est pas installé par défaut, mais il s&amp;rsquo;installe avec la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ wget https://bootstrap.pypa.io/get-pip.py -qO - | sudo python&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ce qui donne à l&amp;rsquo;écran :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;353px&#34; data-flex-grow=&#34;147&#34; height=&#34;533&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/indexation-baie-synology-installation-de-synoindex-watcher/install.png&#34; width=&#34;786&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Vous remarquerez l&amp;rsquo;avertissement concernant la version de Python 2.7 qui ne sera plus supportée par pip en janvier 2021. C&amp;rsquo;est un problème Synology, car sur ma machine, les deux versions de Python (2.7 et 3) sont installées : mais si je tape &lt;code&gt;python --version&lt;/code&gt; dans un terminal, j&amp;rsquo;obtiens la version 2.7 en réponse.&lt;/p&gt;&#xA;&lt;p&gt;Il semble que ce soit parce que beaucoup de scripts système Synology dépendent encore de la version 2.7&amp;hellip; Il y aura toujours moyen de contourner ce problème, il y a des pistes &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/questions/38938205/how-to-override-the-pip-command-to-python3-x-instead-of-python2-7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;sur cette page&lt;/a&gt;, mais inutile de s&amp;rsquo;en préoccuper pour l&amp;rsquo;instant (on va pouvoir installer Synoindex Watcher, donc tout va bien). Synology devrait logiquement mettre à jour son système pour ne dépendre que de Python 3 ? Wait &amp;amp; See&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;installation du module Synoindex Watcher se fait alors par cette commande :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo python -m pip install --upgrade synoindexwatcher&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;NOTE : Cette même commande peut être utilisée pour mettre à jour le script si une nouvelle version est disponible.&lt;/p&gt;&#xA;&lt;p&gt;Par défaut, les dossiers suivants sont surveillés : &lt;code&gt;/volume1/music&lt;/code&gt;, &lt;code&gt;/volume1/photo&lt;/code&gt; et &lt;code&gt;/volume1/video&lt;/code&gt;. Cela peut être modifié soit en ajoutant des arguments à la ligne de commande, soit en créant un fichier de configuration (voir plus bas). Voilà, il ne reste plus qu&amp;rsquo;à lancer le script pour vérifier son fonctionnement.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@DiskStation:~$ python -m synoindexwatcher&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-05-22 10:18:53,487 INFO Adding watch &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; path: /volume1/music&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-05-22 10:18:54,624 INFO Adding watch &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; path: /volume1/photo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-05-22 10:18:54,642 INFO Adding watch &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; path: /volume1/video&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-05-22 10:18:55,561 INFO Waiting &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; media file changes...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ici, on voit que le script démarre bien (c&amp;rsquo;est déjà ça!), active le monitoring des fichiers indexés, mais ce serait mieux de tester si l&amp;rsquo;indexation fonctionne comme attendu. On va le faire en ajoutant le mode DEBUG :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pascal@DiskStation:~$ python -m synoindexwatcher --loglevel&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;DEBUG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-05-22 10:16:06,258 INFO Waiting &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; media file changes...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-05-22 10:16:28,212 DEBUG Calling &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;synoindex -d /volume1/video/Films/Docu1.mkv&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-05-22 10:16:28,339 DEBUG Calling &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;synoindex -a /volume1/video/Docus/Docu1.mkv&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Une fois le mode DEBUG lancé (très verbeux), on voit bien que j&amp;rsquo;ai effacé (-d) le fichier &lt;code&gt;Docu1.mkv&lt;/code&gt; du répertoire &amp;ldquo;Films&amp;rdquo; et que je l&amp;rsquo;ai ajouté (-a) au répertoire &amp;ldquo;Docus&amp;rdquo;. Tout fonctionne donc à merveille.&lt;/p&gt;&#xA;&lt;p&gt;Il y a pas mal d&amp;rsquo;options disponibles indiquées sur &lt;a class=&#34;link&#34; href=&#34;https://github.com/letorbi/synoindexwatcher&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la page&lt;/a&gt; du projet. Je ne vais pas les détailler ici, celles par défaut me conviennent, les trois répertoires par défaut (music, photo, video) sont bien monitorés.&lt;/p&gt;&#xA;&lt;p&gt;À noter tout de même que l&amp;rsquo;on peut générer un fichier de configuration de manière à faciliter la configuration que l&amp;rsquo;on souhaite. Cela se fait par la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ python -m synoindexwatcher --generate-config | sudo tee /usr/local/etc/synoindexwatcher.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On obtient donc un fichier &lt;code&gt;synoindexwatcher.conf&lt;/code&gt; qu&amp;rsquo;il suffira d&amp;rsquo;éditer pour configurer aux petits oignons notre configuration. Il faudra néanmoins le préciser au démarrage du script par l&amp;rsquo;option suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ python -m synoindexwatcher --config&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/local/etc/synoindexwatcher.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Reste à automatiser le démarrage. Cela se fait très facilement par les deux commandes suivantes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ python -m synoindexwatcher --generate-init | sudo tee /usr/local/etc/rc.d/S99synoindexwatcher.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo chmod a+x /usr/local/etc/rc.d/S99synoindexwatcher.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;NOTE : Si vous avez créé un fichier de configuration particulier, il faudra modifier ce script pour y ajouter le paramètre &lt;code&gt;--config&lt;/code&gt; et le chemin d&amp;rsquo;accès au fichier de configuration.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, tout doit fonctionner. J&amp;rsquo;ai testé un redémarrage de la baie Synology, le script est bien lancé au redémarrage. 8-)&lt;/p&gt;&#xA;&lt;p&gt;Il y a un message d&amp;rsquo;erreur connu, pas vraiment lié au script d&amp;rsquo;ailleurs, mais plutôt à une limitation système de Synology :&lt;/p&gt;&#xA;&lt;h3 id=&#34;oserror-errno-28-no-space-left-on-device&#34;&gt;OSError: [Errno 28] No space left on device&#xA;&lt;/h3&gt;&lt;p&gt;Si vous obtenez ce message, cela ne signifie pas qu&amp;rsquo;il n&amp;rsquo;y a plus de place sur le périphérique, mais qu&amp;rsquo;il n&amp;rsquo;y a pas assez de &amp;ldquo;inode-watchers&amp;rdquo; pour surveiller vos fichiers media.&lt;/p&gt;&#xA;&lt;p&gt;Pour le corriger temporairement, taper ceci en étant root ::&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# echo 204800 &amp;gt; /proc/sys/fs/inotify/max_user_watches&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mais cela ne règle le problème que jusqu&amp;rsquo;au prochain reboot. Pour corriger définitivement le problème, il faut ajouter la ligne &lt;code&gt;fs.inotify.max_user_watches = 204800&lt;/code&gt; au fichier &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, les premières impressions sont bonnes, ça fonctionne nettement mieux que la solution précédente, pourvu que cela dure ! ;-)&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Nextcloud sur NAS Synology : mise à jour version 13 à 14</title>
            <link>https://pled.fr/nextcloud-sur-nas-synology-mise-a-jour-version-13-a-14/</link>
            <pubDate>Thu, 28 Feb 2019 18:17:42 +0000</pubDate>
            <guid>https://pled.fr/nextcloud-sur-nas-synology-mise-a-jour-version-13-a-14/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;nextcloud.png#floatleft&#34;&gt; Hier, je me suis décidé à passer mon instance NextCloud de la version 13 à la version 14. Mon instance NextCloud tourne sur la baie Synology (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=11827&#34; &gt;cet article pour l&amp;rsquo;installation&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;En effet, j&amp;rsquo;avais des soucis lors du transfert de photos du smartphone vers NextCloud qui échouaient de manière aléatoire et avec un &amp;ldquo;error unknown&amp;rdquo; dans les logs côté smartphone&amp;hellip; Problème pas forcément lié, mais j&amp;rsquo;ai préféré commencer par installer une version plus récente avant d&amp;rsquo;investiguer plus loin côté smartphone.&lt;/p&gt;&#xA;&lt;p&gt;La mise à jour automatique proposée via l&amp;rsquo;interface web de Nextcloud échouant avec un message &amp;ldquo;Extracting : Can&amp;rsquo;t handle Zip file. Error code is : 28&amp;rdquo;(problème sans doute du à la version Zip utilisée par le serveur PHP de Synology), j&amp;rsquo;ai du y aller à la mano, et même si ce que j&amp;rsquo;ai fait n&amp;rsquo;est pas nickel, cela a finit par fonctionner. Alors voilà un petit retour, si ça peut aider&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Je me suis ensuite reporté sur &lt;a class=&#34;link&#34; href=&#34;https://help.nextcloud.com/t/synology-update-nc-13-0-7-to-nc-14-0-3/39123&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;une page du forum d&amp;rsquo;aide nextcloud&lt;/a&gt; décrivant l&amp;rsquo;opération manuelle d&amp;rsquo;une mise à jour sur Synology, mais la première commande occ ( &lt;strong&gt;o&lt;/strong&gt; wn &lt;strong&gt;c&lt;/strong&gt; loud &lt;strong&gt;c&lt;/strong&gt; onsole, un script php) pour passer le serveur en mode maintenance échouait :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -u http php70 occ maintenance:mode --on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;An unhandled exception has been thrown:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Doctrine&lt;span style=&#34;color:#ae81ff&#34;&gt;\D&lt;/span&gt;BAL&lt;span style=&#34;color:#ae81ff&#34;&gt;\D&lt;/span&gt;BALException: Failed to connect to the database: An exception occured in driver: could not find driver in /volume1/web/nextcloud/lib/private/DB/Connection.php:64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Peut-être un problème d&amp;rsquo;extension PHP sur la baie Synology ? :-(&lt;/p&gt;&#xA;&lt;p&gt;Bref, je recommence alors en suivant les instructions indiquées par NextCloud sur la page &amp;ldquo;&lt;a class=&#34;link&#34; href=&#34;https://docs.nextcloud.com/server/15/admin_manual/maintenance/manual_upgrade.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Update manually&lt;/a&gt;&amp;rdquo;. On verra que par la suite je suis retombé sur la même erreur avec &lt;strong&gt;occ&lt;/strong&gt;, mais que la mise à jour a tout de même pu se terminer via la page web. J&amp;rsquo;ai aussi du installer deux extensions php supplémentaires : &lt;strong&gt;intl&lt;/strong&gt; et &lt;strong&gt;iconv&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Allez hop, on commence par télécharger la dernière version de NextCloud. En l&amp;rsquo;occurrence, j&amp;rsquo;ai préféré télécharger le version 14 car les mises à jour (upgrade) en sautant une version majeure ne sont pas supportées ( &lt;strong&gt;Skipping major releases is not supported&lt;/strong&gt;). J&amp;rsquo;ai donc récupéré &lt;a class=&#34;link&#34; href=&#34;https://nextcloud.com/changelog/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt; le fichier nextcloud-14.0.7.zip que j&amp;rsquo;ai ensuite copié sur la baie Synology en utilisant le &amp;ldquo;File Station&amp;rdquo; de DSM.&lt;/p&gt;&#xA;&lt;p&gt;Ensuite il faut se logguer en ssh sur la baie Synology, passer root, se déplacer au bon endroit, puis recopier le fichier nextcloud récupéré précédemment dans le répertoire courant :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo su&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /volume1/web&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp /volume1/homes/pascal/nextcloud-14.0.7.zip .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J&amp;rsquo;ai ensuite passé le serveur en mode maintenance manuellement. Pas sûr d&amp;rsquo;ailleurs que cette étape soit réellement nécessaire, cela empêche les accès pendant la phase de mise à jour, alors si vous êtes seul à utiliser votre serveur&amp;hellip;). Néanmoins, il suffit d&amp;rsquo;éditer le fichier config.php dans le répertoire config, et de passer le paramètre &amp;lsquo;maintenance&amp;rsquo; à &amp;rsquo;true&amp;rsquo; avec l&amp;rsquo;aide de vi, l&amp;rsquo;éditeurdont il est utile de connaître les bases&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd nextcloud/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vi config.php&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;sauvegarde&#34;&gt;Sauvegarde&#xA;&lt;/h3&gt;&lt;p&gt;Comme il faut tout de même essayer de faire les choses bien, on fait une sauvegarde des fichiers au cas où :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -avx nextcloud/ nextcloud-dirbck_&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;date +&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y%m%d`/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour la base de données, la commande &amp;lsquo;mysqldump&amp;rsquo; ne fonctionnant pas (problème Synology certainement), je suis passé par phpMyAdmin de DSM pour faire une sauvegarde de la base de données nextcloud.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2019/02/phpmyadmin.png&#34; &gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;416px&#34; data-flex-grow=&#34;173&#34; height=&#34;446&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-sur-nas-synology-mise-a-jour-version-13-a-14/phpmyadmin.png&#34; width=&#34;774&#34;&gt;&lt;/a&gt; On peut maintenant passer à la mise à jour proprement dit. Nous allons d&amp;rsquo;abord renommer le répertoire nextcloud existant, puis dézipper le fichier de la version 14 (ce qui crée un nouveau répertoire nextcloud), et enfin copier l&amp;rsquo;ancien fichier config.php à la place du nouveau :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /volume1/web&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mv nextcloud nextcloud-old&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;7z x nextcloud-14.0.7.zip .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp ./nextcloud-old/config/config.php ./nextcloud/config/config.php&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il n&amp;rsquo;y a rien à faire pour les data, puisque le répertoire est placé dans /volume1/homes/pascal/NextCloud (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=11827&#34; &gt;installation&lt;/a&gt;). Et je n&amp;rsquo;utilise pas d&amp;rsquo;application &amp;ldquo;3rd party&amp;rdquo;.&#xA;Reste à appliquer les permissions comme lors de l&amp;rsquo;installation. Le script est toujours là, il suffit donc de le lancer (toujours en tant que root !) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./nextcloud-permissions.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Jusque là tout s&amp;rsquo;est bien passé. Mais il faut maintenant lancer la commande d&amp;rsquo;upgrade, et celle-ci va échouer comme attendu (même problème que pour passer en mode maintenance) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -u http php70 occ upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;An unhandled exception has been thrown:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Doctrine&lt;span style=&#34;color:#ae81ff&#34;&gt;\D&lt;/span&gt;BAL&lt;span style=&#34;color:#ae81ff&#34;&gt;\D&lt;/span&gt;BALException: Failed to connect to the database: An exception occured in driver: could not find driver in /volume1/web/nextcloud/lib/private/DB/Connection.php:64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ce serait bien sûr sympa de trouver la solution à ce message d&amp;rsquo;erreur, mais je n&amp;rsquo;ai pas fait de recherches sur ce point. J&amp;rsquo;ai repassé le serveur en &amp;lsquo;maintenance&amp;rsquo; =&amp;gt; false, puis je me suis contenté de recharger la page web de mon instance Nextcloud, et là miracle, l&amp;rsquo;upgrade a commencé à s&amp;rsquo;exécuter :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;244px&#34; data-flex-grow=&#34;101&#34; height=&#34;358&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-sur-nas-synology-mise-a-jour-version-13-a-14/nextcloud1.png&#34; width=&#34;365&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis j&amp;rsquo;ai eu une erreur heureusement sans conséquence :&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Lancement de la vérification d&amp;rsquo;intégrité du code&#xA;Une erreur est survenue.&#xA;Veuillez recharger la page.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai rechargé la page, et tout s&amp;rsquo;est bien passé. Je suis tout de même allé voir dans les Paramètres - Journalisation, et j&amp;rsquo;ai vu un message récurrent à propos d&amp;rsquo;une extension php &lt;strong&gt;intl&lt;/strong&gt; manquante. D&amp;rsquo;ailleurs, le lendemain, en passant par l&amp;rsquo;application Nextcloud d&amp;rsquo;Ubuntu, j&amp;rsquo;ai vu un autre problème similaire avec l&amp;rsquo;extension &lt;strong&gt;iconv&lt;/strong&gt;. Je suis donc allé via DSM, ouvert Web Station, et ajouté ces deux extensions :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2019/02/php.png&#34; &gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;329px&#34; data-flex-grow=&#34;137&#34; height=&#34;680&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nextcloud-sur-nas-synology-mise-a-jour-version-13-a-14/php.png&#34; srcset=&#34;https://pled.fr/nextcloud-sur-nas-synology-mise-a-jour-version-13-a-14/php_hu_32848baf54e8a737.png 800w, https://pled.fr/nextcloud-sur-nas-synology-mise-a-jour-version-13-a-14/php.png 933w&#34; width=&#34;933&#34;&gt;&lt;/a&gt; Et voilà&amp;hellip; Mon instance Nextcloud est désormais opérationnelle et en version 14.0.7.&lt;/p&gt;&#xA;&lt;p&gt;Peut-être les problèmes PHP rencontrés sont dus à des extensions manquantes ? J&amp;rsquo;ai également noté que j&amp;rsquo;ai encore la version 5.6 d&amp;rsquo;installée, même si c&amp;rsquo;est la version 7 qui est déclarée par défaut&amp;hellip; Le fait que l&amp;rsquo;upgrade se soit lancée via l&amp;rsquo;interface web me fait penser que l&amp;rsquo;environnement via la connexion SSH ne doit pas être correct. À voir, pour la prochaine mise à jour !! j&amp;rsquo;attends un peu pour la version 15, rien ne presse.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>NAS Synology : installation de NextCloud sur DSM 6</title>
            <link>https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/</link>
            <pubDate>Mon, 18 Jun 2018 14:33:01 +0000</pubDate>
            <guid>https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;nextcloud.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;On entend souvent parler de la solution NextCloud quand il s&amp;rsquo;agit d&amp;rsquo;héberger soi-même ses données personnelles, en se libérant ainsi des vilains GAFAM qui veulent tout savoir de nous&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais plus particulièrement en tête un système de prises de Notes que je puisse synchroniser entre mon smartphone et le PC, la synchro se faisant automatiquement par NextCloud. Il s&amp;rsquo;agit de &lt;a class=&#34;link&#34; href=&#34;https://joplin.cozic.net/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Joplin&lt;/a&gt;, qui fera l&amp;rsquo;objet d&amp;rsquo;un article un peu plus tard.&lt;/p&gt;&#xA;&lt;p&gt;Étant possesseur d&amp;rsquo;une baie Synology, je me suis rendu compte que je pouvais effectivement installer un serveur NextCloud sur mon NAS ! Cela n&amp;rsquo;a rien de très compliqué, mais il y a des paquets à installer et à configurer scrupuleusement avant de pouvoir lancer son NextCloud.&lt;/p&gt;&#xA;&lt;p&gt;Les infos de cet article viennent de &lt;a class=&#34;link&#34; href=&#34;https://luvis.se/software/install-nextcloud-on-synology-dsm-6/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article&lt;/a&gt; (en anglais). Il est très bien fait, mais comme je n&amp;rsquo;ai pas trouvé d&amp;rsquo;équivalent en français, j&amp;rsquo;y vais de mon billet, en ajoutant quelques petites notes prises pendant ma propre installation.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est parti !&lt;/p&gt;&#xA;&lt;h3 id=&#34;packages&#34;&gt;Packages&#xA;&lt;/h3&gt;&lt;p&gt;Commençons par installer les paquets requis à partir du centre de paquets  :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Web station&lt;/li&gt;&#xA;&lt;li&gt;HTTP Server 2.4&lt;/li&gt;&#xA;&lt;li&gt;PHP 7.0&lt;/li&gt;&#xA;&lt;li&gt;Phpmyadmin&lt;/li&gt;&#xA;&lt;li&gt;MariaDB 10&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h3&gt;&lt;h6 id=&#34;mariadb&#34;&gt;MariaDB&#xA;&lt;/h6&gt;&lt;p&gt;Pour finir l&amp;rsquo;installation de MariaDB, il faut mettre un mot de passe (laissé vide par l&amp;rsquo;installation). Il faut donc lancer MariaDB, choisir &amp;ldquo;Changer le mot de passe MariaDB&amp;rdquo;, laisser le premier champ vide, et choisir un bon mot de passe.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;451&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno1.jpg&#34; width=&#34;603&#34;&gt;&lt;/p&gt;&#xA;&lt;h6 id=&#34;webstation&#34;&gt;Webstation&#xA;&lt;/h6&gt;&lt;p&gt;Lancer Webstation, puis sélectionner Apache HTTP Server 2.4 et PHP 7.0 :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;622px&#34; data-flex-grow=&#34;259&#34; height=&#34;257&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno2.jpg&#34; width=&#34;667&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Dans ma configuration, je n&amp;rsquo;active pas de &amp;ldquo;Virtual Host&amp;rdquo;, je vais au plus simple. Si c&amp;rsquo;est votre cas, renseigner les paramètres demandés (nom de l&amp;rsquo;hôte, le port, le répertoire racine du document), et sélectionner les mêmes versions d&amp;rsquo;Apache et PHP. Retenir surtout l&amp;rsquo;emplacement du répertoire racine pour la suite.&lt;/p&gt;&#xA;&lt;h6 id=&#34;extensions-php&#34;&gt;Extensions PHP&#xA;&lt;/h6&gt;&lt;p&gt;Il va maintenant falloir indiquer l&amp;rsquo;emplacement où seront stockés vos fichiers personnels (le dossier pour vos données NextCloud). Pour ma part, ce sera dans /volume1/homes/pascal/NextCloud : j&amp;rsquo;ai donc créé ce dossier précédemment. Il va aussi falloir activer les extensions PHP nécessaires au fonctionnement de NextCloud, à savoir :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;bz2&lt;/li&gt;&#xA;&lt;li&gt;curl&lt;/li&gt;&#xA;&lt;li&gt;gd&lt;/li&gt;&#xA;&lt;li&gt;mysqli&lt;/li&gt;&#xA;&lt;li&gt;openssl&lt;/li&gt;&#xA;&lt;li&gt;pdo_mysql&lt;/li&gt;&#xA;&lt;li&gt;zip&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;L&amp;rsquo;auteur de l&amp;rsquo;article précise qu&amp;rsquo;il ne sait plus vraiment lesquelles sont vraiment nécessaires, mais au moins avec celles-ci, on est certain que tout fonctionne.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;278px&#34; data-flex-grow=&#34;116&#34; height=&#34;648&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno3.jpg&#34; width=&#34;752&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Après une mise à jour à la version 14 (voir &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=12294&#34; &gt;cet article&lt;/a&gt;), j&amp;rsquo;ai eu besoin d&amp;rsquo;activer deux autres extensions, alors autant les activer dès maintenant : &lt;strong&gt;intl&lt;/strong&gt; et &lt;strong&gt;iconv&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h6 id=&#34;paramètres-php&#34;&gt;Paramètres PHP&#xA;&lt;/h6&gt;&lt;p&gt;Il y a également des paramètres PHP à modifier : sélectionner l&amp;rsquo;onglet &amp;ldquo;Cœur&amp;rdquo; est modifier si nécessaire les paramètres suivants :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;mysql.default_port=3307  (port par default pour MariaDB 10)&lt;/li&gt;&#xA;&lt;li&gt;opcache.enable=1&lt;/li&gt;&#xA;&lt;li&gt;opcache.enable_cli=1&lt;/li&gt;&#xA;&lt;li&gt;opcache.interned_strings_buffer=8&lt;/li&gt;&#xA;&lt;li&gt;opcache.max_accelerated_files=10000&lt;/li&gt;&#xA;&lt;li&gt;opcache.memory_consumption=128&lt;/li&gt;&#xA;&lt;li&gt;opcache.save_comments=1&lt;/li&gt;&#xA;&lt;li&gt;opcache.revalidate_freq=1&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;277px&#34; data-flex-grow=&#34;115&#34; height=&#34;650&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno4.jpg&#34; width=&#34;751&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, les paramètres de la &amp;ldquo;Web station&amp;rdquo; sont prêts pour que NextCloud fonctionne. Il ne reste plus qu&amp;rsquo;à installer NextCloud proprement dit.&lt;/p&gt;&#xA;&lt;h3 id=&#34;nextcloud&#34;&gt;NextCloud&#xA;&lt;/h3&gt;&lt;p&gt;Télécharger NexCloud à partir de &lt;a class=&#34;link&#34; href=&#34;https://nextcloud.com/install/#instructions-server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;. Vous allez récupérer un fichier nextcloud-XX.Y.Z.zip qu&amp;rsquo;il va falloir copier sur votre NAS Synology, à la racine de votre &amp;ldquo;Web station&amp;rdquo;, soit dans /volume1/web.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;ayant téléchargé sur le PC, et comme il m&amp;rsquo;était impossible avec le &amp;ldquo;File Station&amp;rdquo; de Synology d&amp;rsquo;aller dans le dossier /volume1/web :-(, voilà comment j&amp;rsquo;ai procédé :&lt;/p&gt;&#xA;&lt;p&gt;Je suis allé dans /volume1/homes/pascal/NextCloud, puis j&amp;rsquo;ai fait &amp;ldquo;Charger&amp;rdquo; et suis allé chercher le zip de NextCloud sur mon PC. Ensuite, je me suis connecté en SSH sur la baie Synology (il faut avoir activé SSH sur le NAS auparavant bien sûr, dans “Terminal &amp;amp; SNMP” sélectionner “Activer le service  SSH”, sur le port de votre choix, 2158 dans mon cas), et tapé la commande suivante pour extraire le zip au bon endroit grâce à 7z, l&amp;rsquo;outil installé par défaut par Synology :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pascal@pascal-SH87R:~$ ssh admin@192.168.1.14 -p 2158&#xA;admin@DiskStation:~$ 7z x /volume1/homes/pascal/NextCloud/nextcloud-13.0.4.zip -o/volume1/web&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h6 id=&#34;modifier-les-permissions&#34;&gt;Modifier les permissions&#xA;&lt;/h6&gt;&lt;p&gt;Reste à modifier les permissions par défaut. Nous allons pour cela utiliser un script : créer le fichier nextcloud-permissions.sh comme ci-dessous sur votre PC en adaptant les chemins des dossiers à votre configuration, puis copier-le sur le NAS comme précédemment :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash&#xA;chown -R http:http /volume1/web/nextcloud/&#xA;chown -R http:http /volume1/web/nextcloud/apps/&#xA;chown -R http:http /volume1/web/nextcloud/config/&#xA;chown -R http:http /volume1/web/nextcloud/themes/&#xA;chown -R http:http /volume1/homes/pascal/NextCloud/&#xA;chown http:http /volume1/web/nextcloud/.htaccess&#xA;find /volume1/web/nextcloud/ -type f -print0 | xargs -0 chmod 777&#xA;find /volume1/web/nextcloud/ -type d -print0 | xargs -0 chmod 777&#xA;find /volume1/homes/pascal/NextCloud/ -type d -print0 | xargs -0 chmod 777&#xA;chmod 777 /volume1/web/nextcloud/.htaccess&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Je l&amp;rsquo;ai déplacé ensuite dans /volume1/web. Connecté en SSH, il ne reste plus qu&amp;rsquo;à exécuter le script, et vérifier qu&amp;rsquo;il n&amp;rsquo;y pas d&amp;rsquo;erreur. Si nécessaire, donner les droits d&amp;rsquo;exécution au script :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;admin@DiskStation:~$ cd /volume1/web&#xA;admin@DiskStation:/volume1/web$ sudo chmod +x nextcloud-permissions.sh&#xA;admin@DiskStation:/volume1/web$ sudo ./nextcloud-permissions.sh&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Voilà, c&amp;rsquo;est terminé pour l&amp;rsquo;installation de NextCloud, il ne reste plus qu&amp;rsquo;à accéder à notre nouveau serveur.&lt;/p&gt;&#xA;&lt;h3 id=&#34;dernière-étape&#34;&gt;Dernière étape&#xA;&lt;/h3&gt;&lt;p&gt;Pour que votre serveur NextCloud soit accessible par l&amp;rsquo;internet, vérifier d&amp;rsquo;abord que vous avez bien mis en place le service &amp;ldquo;Quickconnect&amp;rdquo; de Synology qui vous permet de vous connecter avec une adresse du style &lt;strong&gt;myservicename.synology.me&lt;/strong&gt; (à moins que vous ayez votre propre nom de domaine).&lt;/p&gt;&#xA;&lt;p&gt;Aller dans le Panneau de configuration, puis &amp;ldquo;Accès externe&amp;rdquo;, onglet DDNS et créer une entrée en choisissant Synology comme fournisseur de service :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;329px&#34; data-flex-grow=&#34;137&#34; height=&#34;551&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno5.jpg&#34; width=&#34;757&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une fois ceci fait (si vous avez un routeur/une box, penser à ouvrir le port 80), il ne reste plus qu&amp;rsquo;à accéder à la page de NextCloud :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;409px&#34; data-flex-grow=&#34;170&#34; height=&#34;687&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno4.png&#34; srcset=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno4_hu_91f4a7fedf054892.png 800w, https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/syno4.png 1172w&#34; width=&#34;1172&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut bien remplir cette première page, avec un utilisateur créé sur le NAS, le chemin d&amp;rsquo;accès à vos données () soit /volume1/homes/pascal/NextCloud dans mon cas), et enfin l&amp;rsquo;utilisateur &amp;lsquo;root&amp;rsquo; pour MariaDB avec le mot de passe que l&amp;rsquo;on a changé tout à l&amp;rsquo;heure&amp;hellip; Puis cliquer sur &amp;ldquo;Finish setup&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;En ce qui me concerne, j&amp;rsquo;ai eu deux erreur 504 (il s&amp;rsquo;agit d&amp;rsquo;un Gateway time-out), mais au troisième rechargement, la page finale de NextCloud s&amp;rsquo;est enfin affichée :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;259px&#34; data-flex-grow=&#34;108&#34; height=&#34;753&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/nextcloud.jpg&#34; srcset=&#34;https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/nextcloud_hu_696653d30062d6e2.jpg 800w, https://pled.fr/nas-synology-installation-de-nextcloud-sur-dsm-6/nextcloud.jpg 814w&#34; width=&#34;814&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, j&amp;rsquo;ai mon instance NextCloud qui tourne ! :-D Reste à l&amp;rsquo;utiliser, la première chose sera un système de prise de notes comme je le disais en début d&amp;rsquo;article. Ce sera l&amp;rsquo;objet d&amp;rsquo;un futur billet.&lt;/p&gt;&#xA;&lt;p&gt;Il y a aussi plein d&amp;rsquo;autres choses que l&amp;rsquo;on peut faire, comme synchroniser ses contacts, ou son agenda&amp;hellip; Pour cela, j&amp;rsquo;ai d&amp;rsquo;autres solutions (un serveur Baikal sur le serveur du blog), mais il y a aussi les photos du smartphone par exemple, et plein d&amp;rsquo;autres choses à faire avec ce bel outil.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Indexation baie Synology : installation de Synology-mediamon</title>
            <link>https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/</link>
            <pubDate>Tue, 01 May 2018 16:30:03 +0000</pubDate>
            <guid>https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;indexation.png#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;indexation automatique d&amp;rsquo;une baie Synology n&amp;rsquo;est pas optimale, et pose souvent problème quand on passe par NFS pour copier les fichiers (par exemple). J&amp;rsquo;avais écrit l&amp;rsquo;année dernière &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=10827&#34; &gt;un article&lt;/a&gt; pour installer le paquet “Media Indexer” de Francis Besset.&lt;/p&gt;&#xA;&lt;p&gt;Hélas, depuis le passage en DSM 6, cela ne marchait plus vraiment : je retrouvais souvent le service arrêté. Et en allant aux nouvelles, le paquet a été retiré, et manifestement il ne faut pas compter sur une nouvelle version.&lt;/p&gt;&#xA;&lt;p&gt;Je me suis donc tourné vers une autre solution appelée &lt;a class=&#34;link&#34; href=&#34;https://github.com/carljm/synology-mediamon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;synology-mediamon&lt;/a&gt;. L&amp;rsquo;installation n&amp;rsquo;a rien de compliquée, mais elle se passe en mode &amp;ldquo;ligne de commande&amp;rdquo;. Je fais donc ce petit tuto en français, n&amp;rsquo;en ayant pas trouvé d&amp;rsquo;autres.&lt;/p&gt;&#xA;&lt;p&gt;Tout ceci ne concerne bien entendu que les répertoires définis pour le &amp;ldquo;Indexing Service&amp;rdquo; dans le Control Panel :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;490px&#34; data-flex-grow=&#34;204&#34; height=&#34;382&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/indexed.jpg&#34; width=&#34;781&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;La première chose à faire est d&amp;rsquo;installer Python 3 s&amp;rsquo;il n&amp;rsquo;a pas été installé précédemment. Rien de plus simple, aller dans le Package Center, sélectionner &amp;ldquo;Community&amp;rdquo; dans la partie gauche, et donc installer Python 3. Vous verrez peut-être qu&amp;rsquo;une autre version de Python est installée (la v2) : peu importe, installer Python 3 à côté.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;646px&#34; data-flex-grow=&#34;269&#34; height=&#34;267&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/python3.jpg&#34; width=&#34;719&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;La solution présentée ci-dessous ne fonctionne plus (pb démarrage automatique, plantages fréquents), et de plus n&amp;rsquo;est plus maintenue.&lt;br&gt;&#xA;Voir désormais &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=16444&#34; &gt;ce nouvel article&lt;/a&gt; pour une autre solution, &lt;strong&gt;Synoindex Watcher&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Il va d&amp;rsquo;abord falloir récupérer le fichier zip de &lt;a class=&#34;link&#34; href=&#34;https://github.com/carljm/synology-mediamon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la page github de synology-mediamon&lt;/a&gt;. Cliquer sur &amp;ldquo;Clone or Download&amp;rdquo; à droite, puis sur &amp;ldquo;Download ZIP&amp;rdquo;. En plus du readme, il y a deux fichiers qu&amp;rsquo;il va falloir copier dans /volume1/homes/admin/ : mediamon.py et S99mediamon.sh. On peut utiliser le File station de Synology pour ce faire :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;634px&#34; data-flex-grow=&#34;264&#34; height=&#34;256&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/admin.jpg&#34; width=&#34;677&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Passons maintenant à la partie &amp;ldquo;ligne de commande&amp;rdquo;. Il va falloir activer SSH pour pouvoir se connecter à la baie Synology : aller dans le Control Panel, sélectionner &amp;ldquo;Terminal et SNMP&amp;rdquo; dans la partie gauche, cocher SSH et lui attribuer un numéro de port :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;586px&#34; data-flex-grow=&#34;244&#34; height=&#34;307&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/ssh.jpg&#34; width=&#34;750&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à se connecter à partir d&amp;rsquo;un terminal (l&amp;rsquo;adresse IP de la baie est indiquée dans le Control Panel -&amp;gt; Info Center -&amp;gt; onglet Network). Dans mon cas, cela donne ceci :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh admin@192.168.1.14 -p 2158&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Taper ensuite la commande suivante pour être l&amp;rsquo;utilisateur root (il faudra retaper le mot de passe) :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo su&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On installe ensuite pyinotify :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;python3 -m ensurepip&#xA;python3 -m pip install pyinotify&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour vérifier que pyinotify fonctionne, taper :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;python3 -m pyinotify -v /tmp&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Vous devez alors voir des choses comme ceci défiler (taper Ctrl-c pour arrêter) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;585px&#34; data-flex-grow=&#34;243&#34; height=&#34;301&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/pyinotify.jpg&#34; width=&#34;734&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour que synology-mediamon démarre automatiquement, Il faut maintenant copier S99mediamon.sh dans le répertoire /usr/local/etc/rc.d/, puis lui accorder les permissions 0755 :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cp /volume1/homes/admin/S99mediamon.sh /usr/local/etc/rc.d/&#xA;chmod 755 /usr/local/etc/rc.d/S99mediamon.sh&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à redémarrer votre baie Synology pour vérifier que le service démarre bien automatiquement. Sinon, taper la commande suivante :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/usr/local/etc/rc.d/S99mediamon.sh start&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour vérifier que tout fonctionne, ajouter des fichiers (via NFS tant qu&amp;rsquo;à faire) dans l&amp;rsquo;un des répertoires /volume1/photo, /volume1/music, ou /volume1/video, et vérifier le fichier de log de mediamon. On doit voir  défiler des &amp;ldquo;synoindex -a&amp;rdquo; pour chaque fichier ajouté (pour chaque inode j&amp;rsquo;ai l&amp;rsquo;impression !) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;669px&#34; data-flex-grow=&#34;279&#34; height=&#34;263&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/indexation-baie-synology-installation-de-synology-mediamon/mediamonlog.jpg&#34; width=&#34;734&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, ça a l&amp;rsquo;air de bien fonctionner, pas de problème depuis que je l&amp;rsquo;ai installé.&lt;/p&gt;&#xA;&lt;p&gt;Le développeur note que si vous avez un très grand nombre de fichiers multimédias, le message d&amp;rsquo;erreur &amp;ldquo;No space on device&amp;rdquo; peut survenir. Cela ne signifie pas qu&amp;rsquo;il n&amp;rsquo;y a plus d&amp;rsquo;espace disque, mais que l&amp;rsquo;on a atteint la limite du nombre de fichiers surveillés. Il est possible d&amp;rsquo;augmenter cette limite en tapant la commande suivante (en tant que root) :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bonne indexation !&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>DS Video sur Samsung Smart TV</title>
            <link>https://pled.fr/ds-video-sur-samsung-smart-tv/</link>
            <pubDate>Thu, 20 Jul 2017 18:01:59 +0000</pubDate>
            <guid>https://pled.fr/ds-video-sur-samsung-smart-tv/</guid>
            <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;dsvideo.jpg#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour regarder les films ou les Séries stockées sur ma baie Synology, je passais par un changement de sources, passant de &amp;ldquo;HDMI1&amp;rdquo; à &amp;ldquo;Synology DiskStation Réseau&amp;rdquo;, soit une manière tout à fait classique. Avec comme limitation une interface assez basique, dossier par dossier, même si je pouvais tout de même afficher les affiches des films en choisissant &amp;ldquo;Video Station&amp;rdquo; sur le premier écran :&lt;/p&gt;&#xA;&lt;p&gt;Mais il y avait beaucoup mieux :  : installer une application appelée &lt;strong&gt;DS Video&lt;/strong&gt; sur la TV Samsung, et accéder ainsi à une interface beaucoup plus plaisante et offrant plus d&amp;rsquo;options.&lt;/p&gt;&#xA;&lt;p&gt;Voilà quelques informations que j&amp;rsquo;ai noté, car l&amp;rsquo;installation n&amp;rsquo;est pas vraiment triviale&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Depuis cet article, qui commence à dater un peu, je suis passé à PLEX, une solution beaucoup plus évoluée et maintenue (contrairement à DS Video). On l&amp;rsquo;installe sur le NAS Synology (partie serveur), et sur la TV Samsung (PLEX fait partie des applications disponibles sur la TV, partie cliente).&lt;/p&gt;&#xA;&lt;p&gt;       Avant, je passais donc par le bouton SOURCE de la télécommande, pour choisir la baie Synology :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1401px&#34; data-flex-grow=&#34;583&#34; height=&#34;137&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/ds-video-sur-samsung-smart-tv/TVSamsungSource.jpg&#34; width=&#34;800&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Côté config, c&amp;rsquo;est standard: la TV est connectée en WIFI, et la baie est connectée à la box par un câble ethernet. J&amp;rsquo;ai attribué une adresse IP fixe à chacun des appareils, cela simplifie les choses (ce sera même nécessaire dans ce cas pour que la TV puisse se connecter à la baie Synology à chaque lancement de l&amp;rsquo;application DS Video).&lt;/p&gt;&#xA;&lt;p&gt;En choisissant &amp;ldquo;Video Station&amp;rdquo; sur le premier écran proposé, on arrive à ce genre d&amp;rsquo;écran pour choisir son film : il n&amp;rsquo;y a pas vraiment d&amp;rsquo;options, c&amp;rsquo;est assez basique, mais cela fonctionne.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;426px&#34; data-flex-grow=&#34;177&#34; height=&#34;450&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/ds-video-sur-samsung-smart-tv/TVSamsungVideoStation.jpg&#34; width=&#34;800&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;ds-video&#34;&gt;DS Video&#xA;&lt;/h3&gt;&lt;p&gt;On va donc installer une application sur la TV Samsung, qui saura se connecter à la baie Synology avec une interface beaucoup évoluée, offrant par exemple la possibilité de reprise sur une lecture interrompue&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;installation est un peu inattendue, puisqu&amp;rsquo;il faut, une fois dans le Smart Hub, se connecter avec un compte &amp;ldquo;develop&amp;rdquo;&amp;hellip; Tout est détaillé sur cette page au titre tout aussi inattendu : &lt;a class=&#34;link&#34; href=&#34;https://www.synology.com/fr-fr/knowledgebase/DSM/tutorial/Mobile/What_should_I_know_about_DS_video_for_Samsung_Smart_TV&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Que devrais-je savoir à propos de DS video for Samsung Smart TV ?&lt;/a&gt; (utile par exemple pour savoir quels modèles de TV sont supportées).&lt;/p&gt;&#xA;&lt;p&gt;La procédure n&amp;rsquo;est pas vraiemnt triviale, et les menus ont semble-t-il changés. Dans mon cas (modèle TV LED SAMSUNG UE40JU6000 4K UHD achetée en 2015), j&amp;rsquo;ai fait les actions suivantes :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Touche Smart Hub de la télécommande&lt;/li&gt;&#xA;&lt;li&gt;Sélection des applis &amp;ldquo;Recommandées&amp;rdquo; en bas à gauche&lt;/li&gt;&#xA;&lt;li&gt;Sélection de &amp;ldquo;Mes applications&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Tout en haut à droite, sélectionner compte&lt;/li&gt;&#xA;&lt;li&gt;Cliquer sur le +, et choisissez &amp;ldquo;Connexion&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Entrer &amp;ldquo;develop&amp;rdquo; comme ID, laisser &amp;ldquo;mot de passe&amp;rdquo; vide. Cocher &amp;ldquo;Me connecter automatiquement&amp;rdquo; si ce n&amp;rsquo;est pas fait.&lt;/li&gt;&#xA;&lt;li&gt;La page &amp;ldquo;Mes Applications&amp;rdquo; s&amp;rsquo;affiche alors, et dans la section &amp;ldquo;Le plus populaire&amp;rdquo;, vous devez voir l&amp;rsquo;application DS Video s&amp;rsquo;afficher, qu&amp;rsquo;il suffit de sélectionner pour l&amp;rsquo;installer.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Toujours est-il que vous retrouvez désormais une application DS Video dans le Smart Hub, avec laquelle vous allez pouvoir vous connecter à votre baie Synology. Attention, il faudra fournir l&amp;rsquo;adresse IP de la baie (donc autant lui assigner une adresse fixe sur la box !), ainsi qu&amp;rsquo;un nom d&amp;rsquo;utilisateur et un mot de passe. Ces informations seront mémorisées et donc à ne saisir qu&amp;rsquo;une seule fois.&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, vous pouvez maintenant accéder au contenu multimédia de votre NAS Synology à partir d&amp;rsquo;une application installée sur votre TV Samsung. Il suffit d&amp;rsquo;appuyer sur le bouton Smart Hub de la télécommande, puis de choisir l&amp;rsquo;application DS Video :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1514px&#34; data-flex-grow=&#34;630&#34; height=&#34;97&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/ds-video-sur-samsung-smart-tv/DSVideo2.png&#34; width=&#34;612&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Utiliser les flèches pour choisir le contenu, comme Séries, Films, etc&amp;hellip; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;442px&#34; data-flex-grow=&#34;184&#34; height=&#34;332&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/ds-video-sur-samsung-smart-tv/DSVideo1.jpg&#34; width=&#34;612&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;interface est conviviale, offre beaucoup plus d&amp;rsquo;options et est beaucoup agréable à utiliser : affichage des informations (affiche, acteurs, résumé,etc&amp;hellip; si votre bibliothèque video est bien gérée bien sûr !), reprise sur dernier arrêt, navigation rapide, etc&amp;hellip; Bref, ce que doit proposer une application de ce genre.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;375px&#34; data-flex-grow=&#34;156&#34; height=&#34;391&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/ds-video-sur-samsung-smart-tv/DSVideo.png&#34; width=&#34;612&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tout n&amp;rsquo;est pas parfait pour autant : pour les séries, pas toujours facile de s&amp;rsquo;y retrouver parmi les épisodes (selon le nommage des fichiers, vous ne voyez que le début du nom de fichier), et la vue par dossier semble bugée, elle affiche et mélange le contenu de plusieurs dossiers, par exemple de plusieurs saisons alors que l&amp;rsquo;on a choisi le dossier Saison2. Mais bon, c&amp;rsquo;est déjà beaucoup mieux que le simple DLNA.&lt;/p&gt;&#xA;&lt;p&gt;Voilà, il suffisait surtout de savoir que cette application existait !&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Synology : indexation multimedia et NFS</title>
            <link>https://pled.fr/synology-indexation-multimedia/</link>
            <pubDate>Wed, 28 Jun 2017 17:11:30 +0000</pubDate>
            <guid>https://pled.fr/synology-indexation-multimedia/</guid>
            <description>&lt;p&gt;&lt;img alt=&#34;Media Indexer&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;MediaIndexer.jpg#floatleft&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Comme expliqué dans l&amp;rsquo;article &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=10813&#34; &gt;Mapper le répertoire d’un NAS Synology sur Ubuntu&lt;/a&gt;, je copie directement les fichiers multimédia vers le NAS Synology depuis le PC (via le protocole NFS). Et un problème pas vraiment sympa est apparu : les fichiers copiés de cette façon ne sont pas indexés automatiquement, et donc quand le veux les visionner sur la TV (via DLNA), je ne les vois pas !&lt;/p&gt;&#xA;&lt;p&gt;Il faut aller dans l&amp;rsquo;interface de DSM, aller dans le &lt;strong&gt;Panneau de configuration&lt;/strong&gt;, sélectionner &lt;strong&gt;Service d&amp;rsquo;indexation&lt;/strong&gt; sur la gauche, puis cliquer sur le bouton &lt;strong&gt;Ré-indexation&lt;/strong&gt;. Opération à répéter à chaque fois que vous aller copier des fichiers de cette manière sur le NAS Synology ! :evil:&lt;/p&gt;&#xA;&lt;p&gt;En  cherchant un peu dans la base de connaissance de Synology, c&amp;rsquo;est confirmé :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Limitation fichiers copiés par NFS&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;1821px&#34; data-flex-grow=&#34;759&#34; height=&#34;93&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/synology-indexation-multimedia/syno1.jpg&#34; width=&#34;706&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faudrait donc le faire manuellement&amp;hellip; C&amp;rsquo;est quand même assez lamentable ! D&amp;rsquo;autant qu&amp;rsquo;il n&amp;rsquo;y a aucun moyen d&amp;rsquo;automatiser le lancement de l&amp;rsquo;indexation de manière récurrente, en tout cas je n&amp;rsquo;ai rien trouvé pour le faire dans le panneau de configuration. On se demande ce que font les développeurs de DSM, ce genre d&amp;rsquo;option serait vraiment la bienvenue, et ce n&amp;rsquo;est pourtant pas difficile d&amp;rsquo;en deviner le besoin.&lt;/p&gt;&#xA;&lt;p&gt;Info&lt;/p&gt;&#xA;&lt;p&gt;Cet article n&amp;rsquo;est plus d&amp;rsquo;actualité depuis DSM 6, le package de Francis Besset mentionné ci-dessous n&amp;rsquo;est d&amp;rsquo;ailleurs plus disponible. Voir ce nouvel article : &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=11704&#34; &gt;Indexation baie Synology : installation de Synology-mediamon&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Heureusement, il y a la communauté, et un certain Francis Besset, qui a développé le package qui pallie ce manque (voir &lt;a class=&#34;link&#34; href=&#34;http://synology.francis-besset.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cette page&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Il faut d&amp;rsquo;abord ajouter une nouvelle source de paquet &amp;ldquo;&lt;a class=&#34;link&#34; href=&#34;http://synology.francis-besset.com/%22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;http://synology.francis-besset.com/&#34;&lt;/a&gt; dans le &lt;strong&gt;Centre de paquets&lt;/strong&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;nouvelle source de paquet&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;524px&#34; data-flex-grow=&#34;218&#34; height=&#34;302&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/synology-indexation-multimedia/syno2.jpg&#34; width=&#34;660&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut ensuite installer le nouveau paquet &amp;ldquo;Media installer&amp;rdquo; qui apparaît dans la liste. Valider les deux premières fenêtres (cryptage et licence), puis la fenêtre ci-dessous apparaît : par défaut, les répertoires proposés doivent suffire (video, audio et photo), sinon ajouter le ou les votre(s) dans le champ &lt;strong&gt;Watch directories&lt;/strong&gt; proposé, séparés par &amp;ldquo;:&amp;rdquo; s&amp;rsquo;il y en a plusieurs :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Configuration de base&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;688px&#34; data-flex-grow=&#34;286&#34; height=&#34;242&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/synology-indexation-multimedia/syno4.jpg&#34; width=&#34;694&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une fois ceci fait, le paquet &lt;strong&gt;Media Indexer&lt;/strong&gt; (ainsi que &lt;strong&gt;inotity-tools&lt;/strong&gt;, une librairie C et un ensemble de commandes permettant d&amp;rsquo;utiliser facilement inotify) apparaissent dans le &lt;strong&gt;Centre de paquets&lt;/strong&gt; (et en cours d&amp;rsquo;exécution !) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Centre de paquets&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;709px&#34; data-flex-grow=&#34;295&#34; height=&#34;254&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/synology-indexation-multimedia/syno3.jpg&#34; width=&#34;751&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, les nouveaux fichiers copiés vont maintenant être indexés immédiatement et copiés dans la base de données utilisée par DLNA pour des raisons de performance (si vous aviez copiés des fichiers auparavant, il faut passer par la case Ré-indexation).&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Mapper le répertoire d&#39;un NAS Synology sur Ubuntu</title>
            <link>https://pled.fr/mapper-le-repertoire-dun-nas-synology-sur-ubuntu/</link>
            <pubDate>Thu, 22 Jun 2017 17:05:27 +0000</pubDate>
            <guid>https://pled.fr/mapper-le-repertoire-dun-nas-synology-sur-ubuntu/</guid>
            <description>&lt;p&gt;Ça fait longtemps que j&amp;rsquo;aurais du faire ça, histoire de faciliter la copie de fichier entre les deux machines. Je m&amp;rsquo;en tenais à l&amp;rsquo;interface de DSM pour copier les fichiers du PC vers la baie Synology, mais c&amp;rsquo;est plus simple de tout faire directement à partir de Nautilus, l&amp;rsquo;explorateur de fichiers d&amp;rsquo;Ubuntu.&lt;/p&gt;&#xA;&lt;p&gt;Comme je n&amp;rsquo;ai pas trouvé la solution tout de suite (et particulièrement les options de fstab), voilà les étapes à suivre (l&amp;rsquo;article qui m&amp;rsquo;a apporté la réponse est &lt;a class=&#34;link&#34; href=&#34;https://www.ryananddebi.com/2013/01/15/linuxmint-or-ubuntu-how-to-automount-synology-shares/comment-page-1/#comments&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;, mais en anglais).&lt;/p&gt;&#xA;&lt;p&gt;Nous allons utiliser le protocole &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Network_File_System&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;NFS&lt;/a&gt; (Network File System) pour ce faire, qu&amp;rsquo;il va falloir installer/activer des deux côtés : le PC Ubuntu sera le client, et la baie Synology sera le serveur. Il faudra ensuite définir un dossier de partage sur la baie, et automatiser le montage de ce répertoire côté PC. Rien de très compliqué donc, mais il est facile de se tromper !&lt;/p&gt;&#xA;&lt;p&gt;Allons-y !&lt;/p&gt;&#xA;&lt;h3 id=&#34;sur-la-baie-synology&#34;&gt;Sur la baie Synology&#xA;&lt;/h3&gt;&lt;p&gt;D&amp;rsquo;abord activer NFS via le panneau de configuration -&amp;gt; Service de fichiers, cocher la case puis cliquer sur &amp;ldquo;Appliquer&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Activer NFS&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;459px&#34; data-flex-grow=&#34;191&#34; height=&#34;403&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mapper-le-repertoire-dun-nas-synology-sur-ubuntu/nfs1.jpg&#34; width=&#34;772&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Puis aller dans &amp;ldquo;Dossier partagés&amp;rdquo; : le dossier que je veux partager est le dossier &lt;strong&gt;video&lt;/strong&gt;, et il est déjà présent, pas besoin de le créer (sinon faites-le). Cliquer sur Modifier, puis sélectionner l&amp;rsquo;onglet &lt;strong&gt;Autorisations NFS&lt;/strong&gt;, et paramétrer comme suit (192.168.1.11 est l&amp;rsquo;adresse de mon PC) :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Autorisations NFS&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;382px&#34; data-flex-grow=&#34;159&#34; height=&#34;363&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mapper-le-repertoire-dun-nas-synology-sur-ubuntu/nfs2.jpg&#34; width=&#34;578&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Mapper le root sur Admin&amp;rdquo; permettra de pouvoir monter automatiquement le répertoire au démarrage du PC. Cela simplifie énormément la configuration.&lt;/p&gt;&#xA;&lt;h3 id=&#34;sur-le-pc-ubuntu&#34;&gt;Sur le PC Ubuntu&#xA;&lt;/h3&gt;&lt;p&gt;Il faut d&amp;rsquo;abord installer le package client de NFS, qui n&amp;rsquo;est pas installé par défaut :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install nfs-common&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il faut ensuite créer un répertoire qui servira de point de montage. Le plus simple est d&amp;rsquo;aller dans son home, dans mon cas ce sera /home/pascal/DS214/video.&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à modifier le fichier /etc/fstab :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo vi /etc/fstab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous pouvez aussi utiliser gedit si vous préférez&amp;hellip; Puis ajouter les deux lignes suivantes :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# NAS SYNOLOGY&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.14:/volume1/video /home/pascal/DS214/video nfs rw,hard,intr,nolock &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;L&amp;rsquo;adresse IP 192.168.1.14 est celle de la baie Synology, et le chemin est indiqué dans la fenêtre des Autorisations NFS du dossier :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;chemin fichier&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;573px&#34; data-flex-grow=&#34;239&#34; height=&#34;307&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mapper-le-repertoire-dun-nas-synology-sur-ubuntu/nfs3.jpg&#34; width=&#34;734&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, le tour est joué. Pour le vérifier, taper la commande suivante (qui va relire le fichier fstab et monter ce qui ne l&amp;rsquo;est pas) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mount -a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voilà, dans Nautilus, le contenu du répertoire tant attendu apparaît maintenant :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Le dossier monté dans Nautilus&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;530px&#34; data-flex-grow=&#34;221&#34; height=&#34;292&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/mapper-le-repertoire-dun-nas-synology-sur-ubuntu/nautilus.jpg&#34; width=&#34;646&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voir aussi cet article : &lt;a class=&#34;link&#34; href=&#34;https://pled.fr/?p=10827&#34; &gt;Synology : indexation multimedia et NFS&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Sauvegarder les données de son NAS Synology vers Ubuntu 16.04 avec Hyper Backup et Rsync</title>
            <link>https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/</link>
            <pubDate>Thu, 28 Jul 2016 16:20:34 +0000</pubDate>
            <guid>https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/</guid>
            <description>&lt;p&gt;&lt;img alt=&#34;icône hyper backup&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;hyperbackup.png#floatleft&#34;&gt; Même si la baie Synology que j&amp;rsquo;utilise contient deux disques en miroir, ce qui réduit fortement le risque de perte de données, ce n&amp;rsquo;est pas une raison pour ne pas sauvegarder les données de celle-ci.&lt;/p&gt;&#xA;&lt;p&gt;Synology fournit un logiciel, &lt;strong&gt;Hyper Backup&lt;/strong&gt;, qui permet de faire une sauvegarde vers un &lt;strong&gt;serveur rsync&lt;/strong&gt; distant. Mon PC tournant sous Ubuntu, il peut devenir un serveur rsync facilement. Il ne reste plus qu&amp;rsquo;à mettre tout cela en œuvre.&lt;/p&gt;&#xA;&lt;p&gt;Dans le cas présent, je vais sauvegarder des données qui sont déjà sur mon PC, et que je synchronise sur la baie Synology avec « &lt;strong&gt;Cloud Station&lt;/strong&gt;». En fait, elles sont déjà sauvegardées avec Déjà-Dup&amp;hellip; Il s&amp;rsquo;agit donc plus ici de tester la solution (et vérifier que cela fonctionne, restauration comprise).&lt;/p&gt;&#xA;&lt;p&gt;La limitation de ce type de solution est que le PC doit être allumé pour que la sauvegarde fonctionne&amp;hellip; Mais bon, cela vaut le coup de tester, trop de sauvegarde ne tue pas la sauvegarde ! :-)&lt;/p&gt;&#xA;&lt;h3 id=&#34;configuration-de-rsync-sur-le-pc&#34;&gt;Configuration de rsync sur le PC&#xA;&lt;/h3&gt;&lt;p&gt;Il faut d&amp;rsquo;abord configurer &lt;strong&gt;rsync&lt;/strong&gt;, et le déclarer en tant que service. Un service est simplement un programme capable de s&amp;rsquo;exécuter au démarrage du PC, sans intervention manuelle. Rsync en fait partie sur les système Linux, c&amp;rsquo;est assez facile à mettre en œuvre.&lt;/p&gt;&#xA;&lt;p&gt;D&amp;rsquo;abord, autorisons le service rsync à se lancer :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo vi /etc/default/rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si vous n&amp;rsquo;aimez pas vi, vous pouvez utiliser un éditeur graphique comme gedit :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo gedit /etc/default/rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis modifier la ligne suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RSYNC_ENABLE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il faut maintenant créer le fichier de configuration :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo vi /etc/rsyncd.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voici le contenu que j&amp;rsquo;y ai ajouté, à adapter selon votre cas :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max connections &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;log file &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /var/log/rsyncd.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;timeout &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;share_rsync&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   path &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; /Ebackup/Baie-Synology&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   comment &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Sauvegarde fichiers Baie Synology&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   read only &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts allow &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 192.168.0.11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   hosts deny &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Explications :&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Le service rsync va utiliser un compte rsync, qui sera autorisé à utiliser le module &lt;strong&gt;share_rsync&lt;/strong&gt;, qui pointe sur le répertoire /Ebackup/Baie-Synology (avec les droits d&amp;rsquo;écriture), et uniquement pour la machine avec l&amp;rsquo;adresse IP 192.168.0.11 (soit l&amp;rsquo;adresse de la baie Synology).&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;adresse IP de mon PC est bien entendu celle de mon réseau local, à qui j&amp;rsquo;ai assigné une adresse fixe via l&amp;rsquo;interface de la freebox :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;625px&#34; data-flex-grow=&#34;260&#34; height=&#34;248&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/mafreebox.jpg&#34; width=&#34;646&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut donc d&amp;rsquo;abord créer l&amp;rsquo;utilisateur rsync (et lui donner un mot de passe), puis lui donner les droits nécessaires sur le répertoire en question :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo useradd rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo passwd rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo groupadd rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo gpasswd -a rsync rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chown -R rsync:rsync /Ebackup/Baie-Synology&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chmod -R &lt;span style=&#34;color:#ae81ff&#34;&gt;775&lt;/span&gt; /Ebackup/Baie-Synology&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à démarrer le service (de manière interactive) :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo /etc/init.d/rsync start&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voyons maintenant l&amp;rsquo;état du service :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl status rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On voit que le service est démarré mais en état &amp;ldquo;disable&amp;rdquo;, c&amp;rsquo;est-à-dire qu&amp;rsquo;il n&amp;rsquo;est pas en démarrage automatique :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;878px&#34; data-flex-grow=&#34;366&#34; height=&#34;200&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/terminal1.jpg&#34; width=&#34;732&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Validons le service au démarrage du PC avec la commande suivante :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et regardons maintenant l&amp;quot;état :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;497px&#34; data-flex-grow=&#34;207&#34; height=&#34;353&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/terminal2.jpg&#34; width=&#34;732&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour contrôler les services, voilà les commandes les plus utiles :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status SERVICE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl start SERVICE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl restart SERVICE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl stop SERVICE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable SERVICE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl disable SERVICE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;pare-feu&#34;&gt;Pare-feu&#xA;&lt;/h3&gt;&lt;p&gt;Côté PC, il reste à ouvrir le port 873 utilisé par rsync. Comme je suis sur mon réseau local (et que sur le routeur de la freebox ce port est fermé), je vais faire une règle simple, à l&amp;rsquo;aide de GUFW, l&amp;rsquo;outil de configuration fournit sur Ubuntu :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;308px&#34; data-flex-grow=&#34;128&#34; height=&#34;432&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/FW2.jpg&#34; width=&#34;555&#34;&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;330px&#34; data-flex-grow=&#34;137&#34; height=&#34;449&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/FW1.jpg&#34; width=&#34;619&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, tout est près côté PC, il est temps de se tourner vers la baie Synology.&lt;/p&gt;&#xA;&lt;h3 id=&#34;hyper-backup&#34;&gt;Hyper Backup&#xA;&lt;/h3&gt;&lt;p&gt;Ce logiciel est installé par défaut par Synology. Il suffit donc de le lancer à partir du menu principal. Puis cliquer sur le &amp;ldquo;+&amp;rdquo; en bas à gauche, et sélectionner &amp;ldquo;Tâche de sauvegarde de données&amp;rdquo;. Sélectionner le mode &amp;ldquo;Serveur rsync distant&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;509&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB1.jpg&#34; width=&#34;680&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Dans le fenêtre suivante, il va falloir saisir :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Type de serveur : serveur compatible rsync&lt;/li&gt;&#xA;&lt;li&gt;Nom ou adresse IP du serveur : &amp;lt;l&amp;rsquo;adresse IP de votre PC&amp;gt; (voir plus haut)&lt;/li&gt;&#xA;&lt;li&gt;Chiffrement du transfert : je laisse &amp;ldquo;éteint&amp;rdquo;, pas de chiffrement nécessaire.&lt;/li&gt;&#xA;&lt;li&gt;Port : 873 (le port par défaut pour le service rsync, et pour lequel nous avons créé une règle sur la pare-feu)&lt;/li&gt;&#xA;&lt;li&gt;Nom utilisateur : rsync (l&amp;rsquo;utilisateur que l&amp;rsquo;on a créé précédemment sur le PC)&lt;/li&gt;&#xA;&lt;li&gt;Mot de passe : le mot de passe définit pour l&amp;rsquo;utilisateur rsync lors de sa création&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;À ce stade, cliquer sur la petite flèche pour le champ de &amp;ldquo;Module de sauvegarde&amp;rdquo;. Hyper Backup va se connecter au service rsync de votre PC, et doit retrouver tout seul le module &lt;strong&gt;[share_rsync]&lt;/strong&gt; déclaré :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;321px&#34; data-flex-grow=&#34;133&#34; height=&#34;509&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB3.jpg&#34; width=&#34;682&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;À ce stade, j&amp;rsquo;ai d&amp;rsquo;abord eu un message d&amp;rsquo;erreur &amp;ldquo;Échec de l&amp;rsquo;opération. Reconnectez-vous à DSM et réessayer&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;321px&#34; data-flex-grow=&#34;133&#34; height=&#34;509&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB4.jpg&#34; width=&#34;681&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Après quelques recherches sur le net, ce message d&amp;rsquo;erreur est vraiment générique et ne vous aide pas vraiment ! Seule la première phrase compte&amp;hellip; Quelque chose n&amp;rsquo;a pas fonctionné, c&amp;rsquo;est tout ce que &amp;lsquo;on peut en conclure.&lt;/p&gt;&#xA;&lt;p&gt;En fait, j&amp;rsquo;avais créé un répertoire /Ebackup/BaieSynology sur le disque dur au lieu de /Ebackup/Baie-Synology (comme déclaré dans le fichier /etc/rsyncd.conf).&lt;/p&gt;&#xA;&lt;p&gt;Une fois ceci corrigé, on arrive à l&amp;rsquo;écran suivant :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;321px&#34; data-flex-grow=&#34;133&#34; height=&#34;509&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB5.jpg&#34; width=&#34;682&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à cliquer sur Suivant, et à sélectionner le répertoire que l&amp;rsquo;on veut sauvegarder :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;319px&#34; data-flex-grow=&#34;133&#34; height=&#34;512&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB6.jpg&#34; width=&#34;681&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;écran suivant vous propose de sauvegarder également des applications Synology, je ne coche rien. Sur le suivant, je change le nom de la tâche, et assigne une heure où le PC est souvent allumé :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;510&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB7.jpg&#34; width=&#34;682&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Reste à définir les paramètres de la sauvegarde. À chacun de voir, j&amp;rsquo;ai choisi d&amp;rsquo;activer la rotation des sauvegardes, d&amp;rsquo;activer l&amp;rsquo;option &amp;ldquo;Smart Recycle&amp;rdquo;, et un nombre de versions qui me permet de revenir un an en arrière :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;319px&#34; data-flex-grow=&#34;132&#34; height=&#34;510&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB8.jpg&#34; width=&#34;678&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Voilà, c&amp;rsquo;est terminé, l&amp;rsquo;assistant vous demande si vous désirez effectuer une sauvegarde maintenant, je valide, puis quelques instants plus tard (en fonction de la taille de la sauvegarde), j&amp;rsquo;obtiens l&amp;rsquo;écran suivant, m&amp;rsquo;informant que la sauvegarde a bien été effectuée :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/07/HBfinal.jpg&#34; &gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;407px&#34; data-flex-grow=&#34;169&#34; height=&#34;399&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HBfinal-678.jpg&#34; width=&#34;678&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il est possible de vérifier l&amp;rsquo;intégrité de la sauvegarde :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;345px&#34; data-flex-grow=&#34;144&#34; height=&#34;472&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB9.jpg&#34; width=&#34;680&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Testons maintenant la restauration ! Car dans les scénarios &amp;ldquo;disaster-recovery&amp;rdquo;, le &amp;ldquo;disaster&amp;rdquo; est toujours facile à mettre en place ! ;-) Il faut toujours tester la partie &amp;ldquo;recovery&amp;rdquo; pour être certain d&amp;rsquo;avoir tout validé.&lt;/p&gt;&#xA;&lt;p&gt;Comme je l&amp;rsquo;ai dit au début de l&amp;rsquo;article, ces données sont déjà sauvegardées sur le PC, je ne risque donc rien à effacer un répertoire de mon &amp;ldquo;home&amp;rdquo; sur la baie Synology. J&amp;rsquo;efface donc le répertoire &amp;ldquo;APKs&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Ceci fait, je relance Hyper Backup, clique sur la petite horloge en bas à gauche, et sélectionne &amp;ldquo;Data&amp;rdquo;. Puis je sélectionne la dernière sauvegarde :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1166px&#34; data-flex-grow=&#34;486&#34; height=&#34;136&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB11.jpg&#34; width=&#34;661&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et coche le dossier que je souhaite restaurer :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;331px&#34; data-flex-grow=&#34;138&#34; height=&#34;580&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB12.jpg&#34; srcset=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB12_hu_d9fc35fae5ebd045.jpg 800w, https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB12.jpg 801w&#34; width=&#34;801&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je valide, et la restauration démarre :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;1337px&#34; data-flex-grow=&#34;557&#34; height=&#34;122&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/sauvegarder-son-nas-synology-vers-ubuntu-16-04-avec-hyper-backup-et-rsync/HB13.jpg&#34; width=&#34;680&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, une fois l&amp;rsquo;opération terminée, mon répertoire &amp;ldquo;APKs&amp;rdquo; a bien été restauré sur la Baie Synology.&lt;/p&gt;&#xA;&lt;p&gt;Pour conclure, mis à part le message d&amp;rsquo;erreur du à une erreur de ma part, tout s&amp;rsquo;est fait très facilement. Voilà donc une solution facile à mettre en place, si on stocke sur la baie Synology des fichiers que l&amp;rsquo;on n&amp;rsquo;a pas ailleurs. En prime, on a appris à mettre en place le service &lt;strong&gt;rsync&lt;/strong&gt; sur le PC ! ;-)&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>NAS Synology : notification par SMS via Free Mobile</title>
            <link>https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/</link>
            <pubDate>Fri, 19 Feb 2016 15:19:46 +0000</pubDate>
            <guid>https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/</guid>
            <description>&lt;p&gt;Free Mobile propose un système de notification par SMS, et il est possible de l&amp;rsquo;utiliser pour recevoir les messages d&amp;rsquo;un NAS Synology. Exemple des messages reçus :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;sms reçus du NAS Synology&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;219px&#34; data-flex-grow=&#34;91&#34; height=&#34;547&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/sms.jpg&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il s&amp;rsquo;agit des messages signalant un changement d&amp;rsquo;état, une mise à jour nécessaire, etc&amp;hellip; Par défaut, Synology  nous prévient par mail (ce qui peut se révéler suffisant), mais je suis tombé sur &lt;a class=&#34;link&#34; href=&#34;http://www.universfreebox.com/article/26340/Tutoriel-Utiliser-la-notification-SMS-Free-Mobile-avec-un-NAS-Synology&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;cet article&lt;/a&gt; qui explique comment recevoir ces messages par SMS et ça m&amp;rsquo;a intéressé. Comme il y a quelques erreurs dans l&amp;rsquo;article en question (les captures d&amp;rsquo;écran ne correspondent pas toujours avec ce qui est expliqué), j&amp;rsquo;ai décidé de faire cet article.&lt;/p&gt;&#xA;&lt;p&gt;Il faut bien entendu avoir au préalable activé l&amp;rsquo;option de notification par SMS sur le site &lt;a class=&#34;link&#34; href=&#34;http://mobile.free.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;http://mobile.free.fr&lt;/a&gt;. Se connecter sur le site, puis aller dans &amp;ldquo;Gérer mon compte - Mes options&amp;rdquo;. Activer la notification par SMS, et noter la clé d&amp;rsquo;identification au service qui vous est fournie :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/02/notifications-free-mobile.jpg&#34; &gt;&lt;img alt=&#34;notifications-free-mobile&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;576px&#34; data-flex-grow=&#34;240&#34; height=&#34;208&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/notifications-free-mobile-500.jpg&#34; width=&#34;500&#34;&gt;&lt;/a&gt; Dans DSM, l&amp;rsquo;interface de management de votre NAS Synology, aller dans le Panneau de configuration, puis choisir Notifications, et enfin l&amp;rsquo;onglet SMS. Cocher alors la case &amp;ldquo;Notifications par SMS&amp;rdquo;, et cliquer sur le bouton &amp;ldquo;Ajouter un fournisseur de service SMS&amp;rdquo;. Dans la fenêtre qui s&amp;rsquo;ouvre, donner un nom pour le fournisseur, et saisir la chaîne suivante :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;325px&#34; data-flex-grow=&#34;135&#34; height=&#34;369&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/fournisseur1.jpg&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cliquer sur Suivant, et définir le type de données pour chaque champ :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;325px&#34; data-flex-grow=&#34;135&#34; height=&#34;369&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/fournisseur2.jpg&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cliquer sur Appliquer. Il ne reste plus qu&amp;rsquo;à saisir les identifiants Free Mobile :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le nom d&amp;rsquo;utilisateur est votre identifiant pour se connecter à votre espace abonné sur le site de Free Mobile.&lt;/li&gt;&#xA;&lt;li&gt;Le mot de passe est la clé d&amp;rsquo;identification au service que vous avez noté précédemment.&lt;/li&gt;&#xA;&lt;li&gt;Et bien sûr votre numéro de téléphone (en numérotation internationale, donc sans le 0 initial).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;296px&#34; data-flex-grow=&#34;123&#34; height=&#34;405&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/fournisseur3.jpg&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voilà, cliquer sur le bouton &amp;ldquo;Envoyer un message SMS de test&amp;rdquo; pour vérifier que tout fonctionne, ce qui doit être le cas.&lt;/p&gt;&#xA;&lt;p&gt;À noter un petit bug tout de même : les messages de notification par SMS sont en anglais, alors que les messages par mail sont bien en français&amp;hellip; Le réglage se trouve dans le Panneau de configuration - Options Régionales - onglet Langue, et il n&amp;rsquo;y a qu&amp;rsquo;un réglage pour les deux modes, donc bug ! :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;langue&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;294px&#34; data-flex-grow=&#34;122&#34; height=&#34;408&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/nas-synology-notification-par-sms-via-free-mobile/langue.jpg&#34; width=&#34;500&#34;&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Disk Station DS214 Synology - Installation</title>
            <link>https://pled.fr/disk-station-ds214-synology-installation/</link>
            <pubDate>Mon, 18 Jan 2016 18:59:02 +0000</pubDate>
            <guid>https://pled.fr/disk-station-ds214-synology-installation/</guid>
            <description>&lt;p&gt;&lt;img alt=&#34;DS214 Synology&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;DS214.png#floatleft&#34;&gt;Je me suis récemment offert une Disk Station DS214 de Synology, histoire de faire un premier pas dans l&amp;rsquo;auto-hébergement&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Dans cet article, je vais décrire l&amp;rsquo;installation de la baie, et mon premier essai d&amp;rsquo;utilisation, à savoir la &lt;strong&gt;Station Audio&lt;/strong&gt; à partir de mon smartphone, histoire de pouvoir écouter ma musique lorsque je suis loin de chez moi.&lt;/p&gt;&#xA;&lt;p&gt;Autant le dire tout de suite, cela a été d&amp;rsquo;une simplicité enfantine. Je m&amp;rsquo;attendais à rencontrer quelques soucis, mais non, c&amp;rsquo;est vraiment très bien conçu et l&amp;rsquo;installation est quasi transparente.&lt;/p&gt;&#xA;&lt;p&gt;Il y a bien deux ou trois actions à prendre par la suite, notamment pour la configuration de l&amp;rsquo;accès externe (et donc le routeur de la freebox ainsi que la redirection de ports), mais là aussi, Synology s&amp;rsquo;occupe de tout. Le &lt;strong&gt;QuickConnect ID&lt;/strong&gt; est tout simplement bluffant de simplicité.&lt;/p&gt;&#xA;&lt;p&gt;Le boîtier est relativement petit, et a trouvé facilement sa place sous le bureau, près de la Freebox server à laquelle il faudra le connecter par un câble réseau.&lt;/p&gt;&#xA;&lt;p&gt;Mais la première chose à faire est d&amp;rsquo;installer les disques durs dans le boîtier Synology. J&amp;rsquo;ai choisi deux disques de 1 To chacun, qui fonctionneront en RAID 1, c&amp;rsquo;est-à-dire en &amp;ldquo;miroir&amp;rdquo; : chaque disque est l&amp;rsquo;image de l&amp;rsquo;autre, et en cas de panne sur un disque, le système continue de fonctionner comme si de rien n&amp;rsquo;était. Synology a son propre système appelé SHR ( &lt;strong&gt;S&lt;/strong&gt; ynology &lt;strong&gt;H&lt;/strong&gt; ybrid &lt;strong&gt;R&lt;/strong&gt; AID), et il va s&amp;rsquo;occuper de tout configurer pour vous.&lt;/p&gt;&#xA;&lt;p&gt;Première bonne surprise, même pas besoin de tournevis pour fixer les disques durs : une languette plastique permet de les fixer très simplement, il suffit de suivre le petit schéma livré avec le boîtier :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;DS214 : installer les HDs&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;789px&#34; data-flex-grow=&#34;329&#34; height=&#34;265&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/DS214HD.jpg&#34; srcset=&#34;https://pled.fr/disk-station-ds214-synology-installation/DS214HD_hu_7b71ef71e53521af.jpg 800w, https://pled.fr/disk-station-ds214-synology-installation/DS214HD.jpg 872w&#34; width=&#34;872&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il ne reste plus qu&amp;rsquo;à tout refermer, et brancher la baie électriquement, la connecter avec le câble réseau fourni sur la Freebox Server, et enfin la démarrer.&lt;/p&gt;&#xA;&lt;p&gt;À ce stade, je suis allé dans l&amp;rsquo;administration de la freebox (&lt;a class=&#34;link&#34; href=&#34;http://mafreebox.freebox.fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;http://mafreebox.freebox.fr&lt;/a&gt;), et j&amp;rsquo;ai assigné une adresse IP fixe à la Disk Station (192.168.0.11 ici), histoire de simplifier les choses :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;IP fixe pour la Disk Sation&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;928px&#34; data-flex-grow=&#34;386&#34; height=&#34;167&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/bail-statique.jpg&#34; width=&#34;646&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il ne  reste plus qu&amp;rsquo;à se connecter à la Disk Station en utilisant le navigateur internet via l&amp;rsquo;adresse IP assignée précédemment et en précisant le port 5000 : http://192.168.0.11:5000. Une page de bienvenue s&amp;rsquo;affiche, listant quelques informations :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm1.jpg&#34; &gt;&lt;img alt=&#34;dsm1&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;384px&#34; data-flex-grow=&#34;160&#34; height=&#34;500&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm1.jpg&#34; width=&#34;800&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;écran suivant vous demande de confirmer l&amp;rsquo;installation de DSM, le &lt;strong&gt;D&lt;/strong&gt; isk &lt;strong&gt;S&lt;/strong&gt; tation &lt;strong&gt;M&lt;/strong&gt; anager, soit l&amp;rsquo;interface web qui vous permettra d&amp;rsquo;administrer la baie Synology. Choisir l&amp;rsquo;installation via internet, afin d&amp;rsquo;obtenir la dernière version :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm2.jpg&#34; &gt;&lt;img alt=&#34;dsm2&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;384px&#34; data-flex-grow=&#34;160&#34; height=&#34;500&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm2.jpg&#34; width=&#34;800&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;écran suivant vous demande de saisir un mot de passe pour le compte &lt;strong&gt;admin&lt;/strong&gt;, créé par défaut. Vous aurez tout le loisir de créer d&amp;rsquo;autres comptes par la suite, mais celui-ci est obligatoire.  Puis l&amp;rsquo;installation démarre, et dure une bonne dizaine de minutes :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm3.jpg&#34; &gt;&lt;img alt=&#34;dsm3&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;384px&#34; data-flex-grow=&#34;160&#34; height=&#34;500&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm3.jpg&#34; width=&#34;800&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;étape suivante est importante, puisque l&amp;rsquo;on va configurer &lt;strong&gt;QuickConnect&lt;/strong&gt;, qui permettra d&amp;rsquo;accéder à votre Disk Station de n&amp;rsquo;importe où, et ceci de manière très simple ! Renseignez votre adresse mail, choisissez un mot de passe, et enfin le QuickConnect ID, qui peut contenir de lettres des chiffres et des tirets :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm4.jpg&#34; &gt;&lt;img alt=&#34;dsm4&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;391px&#34; data-flex-grow=&#34;163&#34; height=&#34;490&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm4.jpg&#34; width=&#34;800&#34;&gt;&lt;/a&gt; Et voilà, une URL toute simple est générée pour vous connecter à distance sur votre Disk Station :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm5.jpg&#34; &gt;&lt;img alt=&#34;dsm5&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;471px&#34; data-flex-grow=&#34;196&#34; height=&#34;407&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm5.jpg&#34; width=&#34;800&#34;&gt;&lt;/a&gt; Il faut également enregistrer un compte Synology sur leur site : &lt;a class=&#34;link&#34; href=&#34;https://account.synology.com/fr-fr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://account.synology.com/fr-fr&lt;/a&gt;, en s&amp;rsquo;identifiant avec l&amp;rsquo;adresse mail et le mot de passe indiqué lors de la configuration de QuickConnect.&lt;/p&gt;&#xA;&lt;p&gt;Comme l&amp;rsquo;installation est bien pensée, on vous propose ensuite d&amp;rsquo;installer les paquets Synology recommandés :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm4.jpg&#34; &gt;&lt;img alt=&#34;dsm6&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;401px&#34; data-flex-grow=&#34;167&#34; height=&#34;478&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm6.jpg&#34; width=&#34;800&#34;&gt;&lt;/a&gt; Ensuite DSM vous propose une rapide visite guidée pour la prise en main de l&amp;rsquo;interface (qui est assez intuitive).&lt;/p&gt;&#xA;&lt;p&gt;Terminé ? pas tout à fait, car DSM va se mettre à jour à la toute dernière version, et donc il faudra patienter encore une dizaine de minutes :&lt;/p&gt;&#xA;&lt;h3 id=&#34;dsm7-premiers-pas&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm7.jpg&#34; &gt;&lt;img alt=&#34;dsm7&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;384px&#34; data-flex-grow=&#34;160&#34; height=&#34;500&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm7.jpg&#34; width=&#34;800&#34;&gt;&lt;/a&gt; Premiers pas&#xA;&lt;/h3&gt;&lt;p&gt;OK, tout est maintenant installé, qu&amp;rsquo;est-ce que je fais ?&lt;/p&gt;&#xA;&lt;p&gt;D&amp;rsquo;abord, je vais aller voir comment la Disk Station s&amp;rsquo;en sort avec la Freebox (qui fait office de routeur) : Dans le panneau de configuration, je sélectionne Accès Externe, et je clique sur le bouton Configuration du routeur. Quelques secondes plus tard, j&amp;rsquo;ai le message suivant :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/routeur1.jpg&#34; &gt;&lt;img alt=&#34;routeur1&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;563px&#34; data-flex-grow=&#34;234&#34; height=&#34;382&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/routeur1.jpg&#34; srcset=&#34;https://pled.fr/disk-station-ds214-synology-installation/routeur1_hu_ddd6af0a3c3a674d.jpg 800w, https://pled.fr/disk-station-ds214-synology-installation/routeur1.jpg 897w&#34; width=&#34;897&#34;&gt;&lt;/a&gt; Je valide, et Ô miracle (technologique), la configuration a été faite automatiquement :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/routeur2.jpg&#34; &gt;&lt;img alt=&#34;routeur2&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;862px&#34; data-flex-grow=&#34;359&#34; height=&#34;277&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/routeur2.jpg&#34; srcset=&#34;https://pled.fr/disk-station-ds214-synology-installation/routeur2_hu_9ebca9c054b0254.jpg 800w, https://pled.fr/disk-station-ds214-synology-installation/routeur2.jpg 996w&#34; width=&#34;996&#34;&gt;&lt;/a&gt; Puis un petit test de sécurité, ça ne peut pas faire de mal, disponible via le &amp;ldquo;conseiller de sécurité&amp;rdquo;, à partir du menu principal :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;dsm8&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;414px&#34; data-flex-grow=&#34;172&#34; height=&#34;463&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm8.jpg&#34; width=&#34;800&#34;&gt; Ensuite, puisque je dispose maintenant d&amp;rsquo;une &lt;strong&gt;Audio Station,&lt;/strong&gt; j&amp;rsquo;ai bien envie de l&amp;rsquo;essayer, et de tester par la même occasion l&amp;rsquo;accès via internet&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Il me faut donc dans un premier temps copier des fichiers de ma bibliothèque musicale. Le plus simple est alors d&amp;rsquo;utiliser l&amp;rsquo;explorateur de fichiers du PC, la Disk Station apparaissant dans le voisinage réseau. il suffit de les copier dans le répertoire &lt;strong&gt;Music&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=com.synology.DSaudio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;&lt;img alt=&#34;icône DS audio&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;240px&#34; data-flex-grow=&#34;100&#34; height=&#34;100&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsaudio.png&#34; width=&#34;100&#34;&gt;&lt;/a&gt; Maintenant je prends mon smartphone, et installe l&amp;rsquo;application &lt;strong&gt;DS Audio&lt;/strong&gt; de Synology. Je coupe le wifi pour être sûr de passer par le réseau téléphonique, histoire de vérifier que cela marchera de n&amp;rsquo;importe où.&lt;/p&gt;&#xA;&lt;p&gt;Puis je lance DS Audio et tente une connexion en utilisant le QuickConnect ID généré précédemment, le nom  d&amp;rsquo;utilisateur (j&amp;rsquo;ai créé un compte &amp;ldquo;pascal&amp;rdquo; entre-temps), et le mot de passe. C&amp;rsquo;est là que l&amp;rsquo;on voit tout l&amp;rsquo;intérêt du QuickConnect ID&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Je  vois d&amp;rsquo;ailleurs qu&amp;rsquo;il y a une option HTTPS, je vais regarder ça de plus près, apparemment Synology fournit des certificats pour votre Disk Station, c&amp;rsquo;est plutôt intéressant.  Et voilà, mes fichiers musicaux sont là, disponible en écoute, et à priori, le streaming marche plutôt bien.&lt;/p&gt;&#xA;&lt;p&gt;Les fichiers lus par DS Audio seront stockés localement sur le smartphone. Il peut donc être utile d&amp;rsquo;aller dans les paramètres et modifier le chemin de stockage afin que ces fichiers soient stockées sur la carte SD et pas dans la mémoire interne. Si on ne peut pas choisir le répertoire de son choix, on peut toutefois sélectionner la carte SD : /storage/sdcard1 dans mon cas, et le reste du chemin est forcé par l&amp;rsquo;application.&#xA;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsaudio11.jpg&#34; &gt;&lt;img alt=&#34;connexion avec ds audio&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;135px&#34; data-flex-grow=&#34;56&#34; height=&#34;622&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsaudio11.jpg&#34; width=&#34;350&#34;&gt;&lt;/a&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsaudio2.jpg&#34; &gt;&lt;img alt=&#34;ds audio connecté&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;135px&#34; data-flex-grow=&#34;56&#34; height=&#34;622&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsaudio2.jpg&#34; width=&#34;350&#34;&gt;&lt;/a&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsaudio3.jpg&#34; &gt;&lt;img alt=&#34;paramètres ds audio &#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;135px&#34; data-flex-grow=&#34;56&#34; height=&#34;1280&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsaudio3.jpg&#34; width=&#34;720&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une dernière chose avant de terminer cet article : à force de copier puis d&amp;rsquo;effacer des fichiers audio (car le tag ne me convenait pas), je me suis retrouvé dans la situation où des fichiers n&amp;rsquo;apparaissaient plus dans DS Audio, alors qu&amp;rsquo;ils étaient bien présents et visibles via le &lt;strong&gt;File Station&lt;/strong&gt; (le gestionnaire de fichiers) de DSM.&lt;/p&gt;&#xA;&lt;p&gt;Le problème a été réglé en allant dans &lt;strong&gt;Indexation Multimedia&lt;/strong&gt; du Panneau de Configuration de DSM, et en lançant une ré-indexation :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://pled.fr/wp-content/uploads/2016/01/dsm-indexation.jpg&#34; &gt;&lt;img alt=&#34;Indexation multimedia&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;419px&#34; data-flex-grow=&#34;174&#34; height=&#34;569&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm-indexation.jpg&#34; srcset=&#34;https://pled.fr/disk-station-ds214-synology-installation/dsm-indexation_hu_4e96d46850e155f1.jpg 800w, https://pled.fr/disk-station-ds214-synology-installation/dsm-indexation.jpg 995w&#34; width=&#34;995&#34;&gt;&lt;/a&gt; Voilà, ce sera tout pour cette première prise en main de la Disk Station Synology.&lt;/p&gt;&#xA;&lt;p&gt;Franchement, j&amp;rsquo;ai été très agréablement surpris par la simplicité d&amp;rsquo;installation (et notamment l&amp;rsquo;absence de configuration du routeur). Il y a encore beaucoup de choses à découvrir et à faire avec ce bel objet technologique, ce sera l&amp;rsquo;occasion d&amp;rsquo;autres articles.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
