<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nextcloud on slash-root.fr</title><link>https://beta.slash-root.fr/tags/nextcloud/</link><description>Recent content in Nextcloud on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Wed, 28 Sep 2022 21:52:37 +0200</lastBuildDate><atom:link href="https://beta.slash-root.fr/tags/nextcloud/index.xml" rel="self" type="application/rss+xml"/><item><title>Nextcloud : Add-in Outlook pour l’envoi de gros fichiers par mail sans effort</title><link>https://beta.slash-root.fr/nextcloud-add-in-outlook-pour-lenvoi-de-gros-fichiers-par-mail-sans-effort/</link><pubDate>Thu, 29 Sep 2022 08:00:31 +0200</pubDate><guid>https://beta.slash-root.fr/nextcloud-add-in-outlook-pour-lenvoi-de-gros-fichiers-par-mail-sans-effort/</guid><description>&lt;img src="https://beta.slash-root.fr/nextcloud-add-in-outlook-pour-lenvoi-de-gros-fichiers-par-mail-sans-effort/cover.png" alt="Featured image of post Nextcloud : Add-in Outlook pour l’envoi de gros fichiers par mail sans effort" /&gt;&lt;h2 id="presentation"&gt;&lt;a href="#presentation" class="header-anchor"&gt;&lt;/a&gt;Presentation
&lt;/h2&gt;&lt;p&gt;Il est possible d'installer un add-in au client lourd Microsoft Office 2019 pour y intégrer de nouvelles fonctionnalités avec Nextcloud.&lt;/p&gt;
&lt;p&gt;Cet add-in permet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D'upload automatiquement les fichiers vers Nextcloud et de générer un lien pour les destinataires dans le mail. Cela permet de pouvoir envoyer de très gros fichiers par mail sans les placer en pièce jointe.&lt;/li&gt;
&lt;li&gt;De créer et partager un espace publique avec les destinataires pour qu'ils puissent y uploader des fichiers au lieu de les envoyer par pièce jointe.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sur ces 2 fonctionnalités, il est possible de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Définir une date d'expiration du lien.&lt;/li&gt;
&lt;li&gt;Protéger les liens publiques par mot de passe.&lt;/li&gt;
&lt;li&gt;Regrouper un ensemble de fichiers pour un même lien.&lt;/li&gt;
&lt;li&gt;Personnaliser les messages qui seront inclus automatiquement dans le mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pre-requis"&gt;&lt;a href="#pre-requis" class="header-anchor"&gt;&lt;/a&gt;Pre-requis
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Un compte sur un serveur Nextcloud (Testé avec un Nextcloud 24.0.5).&lt;/li&gt;
&lt;li&gt;Un client lourd Outlook 2019 sous Windows.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="add-in"&gt;&lt;a href="#add-in" class="header-anchor"&gt;&lt;/a&gt;Add-in
&lt;/h2&gt;&lt;h3 id="information"&gt;&lt;a href="#information" class="header-anchor"&gt;&lt;/a&gt;Information
&lt;/h3&gt;&lt;p&gt;Il existe plusieurs versions de cet add-in :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Free&lt;/li&gt;
&lt;li&gt;Basic&lt;/li&gt;
&lt;li&gt;Professional&lt;/li&gt;
&lt;li&gt;Premium&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Détails des différentes versions : &lt;a href="https://nextcloud.com/outlook/"&gt;https://nextcloud.com/outlook/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ici, je vais utiliser la version Free. Cette version est limité à 50 utilisateurs.&lt;/p&gt;
&lt;h3 id="installation"&gt;&lt;a href="#installation" class="header-anchor"&gt;&lt;/a&gt;Installation
&lt;/h3&gt;&lt;p&gt;Côté Nextcloud, il n'y a rien à faire 🙂&lt;/p&gt;
&lt;p&gt;Sur le poste Windows, avec le client lourd Outlook 2019, télécharger l'add-in puis lancer son installation. Celle-ci est vraiment très brève.&lt;/p&gt;
&lt;p&gt;Lien vers les add-ins : &lt;a href="https://download.nextcloud.com/outlook/"&gt;https://download.nextcloud.com/outlook/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sur un Windows 10 64 bits, j'ai pris celui-ci : &lt;a href="https://download.nextcloud.com/outlook/20190410/Setup_23117_x64_free.msi"&gt;https://download.nextcloud.com/outlook/20190410/Setup_23117_x64_free.msi&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_01.png" alt="image-20220928170044894" /&gt;&lt;/p&gt;
&lt;h3 id="configuration"&gt;&lt;a href="#configuration" class="header-anchor"&gt;&lt;/a&gt;Configuration
&lt;/h3&gt;&lt;p&gt;Au 1er lancement d'Outlook, il est demandé de renseigner les paramètres du compte Nextcloud à lié au client de messagerie.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Renseigner l'URL du serveur Nextcloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Ne surtout pas cliquer sur &lt;strong&gt;Connect&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Cliquer sur &lt;code&gt;Manual login&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_02.png" alt="image-20220928195551493" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Renseigner les credentials du compte Nextcloud de l'utilisateur et &lt;code&gt;Connect&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_03.png" alt="image-20220928195924547" /&gt;&lt;/p&gt;
&lt;p&gt;Maintenant, lors de la création d'un nouveau mail, un onglet &lt;strong&gt;Nextcloud&lt;/strong&gt; est disponible. Celui-ci permet d'accéder aux fonctionnalités de l'add-in.&lt;/p&gt;
&lt;p&gt;Ici dans la version &lt;code&gt;Free&lt;/code&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L'envoi de fichier volumineux par mail avec génération d'un lien publique.&lt;/li&gt;
&lt;li&gt;La création d'un espace partagé avec génération d'un lien publique.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_04.png" alt="image-20220928201559434" /&gt;&lt;/p&gt;
&lt;p&gt;Dans le menu &lt;code&gt;Settings&lt;/code&gt;, il est possible de paramétrer l'add-in.&lt;/p&gt;
&lt;p&gt;Par exemple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L'activation ou non de la génération d'un mot de passe pour protéger l'URL.&lt;/li&gt;
&lt;li&gt;La personnalisation du message généré dans le corps du mail qui sera ajouté automatiquement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_05.png" alt="image-20220928202128014" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Appliquer pour valider les modifications.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="utilisation"&gt;&lt;a href="#utilisation" class="header-anchor"&gt;&lt;/a&gt;Utilisation
&lt;/h3&gt;&lt;h4 id="fichiers-volumineux"&gt;&lt;a href="#fichiers-volumineux" class="header-anchor"&gt;&lt;/a&gt;Fichiers volumineux
&lt;/h4&gt;&lt;p&gt;Pour la 1ère fonctionnalité qui permet de partager un ou des fichiers volumineux sans les mettre en pièces jointes (en générant automatiquement un lien publique par le biais de Nextcloud) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lors de la rédaction d'un nouveau mail, sélectionner &lt;code&gt;Upload files&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_06.png" alt="image-20220928203214120" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sélectionner le ou les fichiers à partager.&lt;/li&gt;
&lt;li&gt;(Recommandé) : Définir une date d'expiration du lien.&lt;/li&gt;
&lt;li&gt;Valider avec le bouton &lt;code&gt;Upload files&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un message, dans le corps du mail, s'ajoute automatiquement pour indiquer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le lien publique pour accéder aux données.&lt;/li&gt;
&lt;li&gt;Le mot de passe (si activé) pour accéder à la ressource.&lt;/li&gt;
&lt;li&gt;La date d'expiration du lien.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_06b.png" alt="image-20220928204524277" /&gt;&lt;/p&gt;
&lt;h4 id="espace-partagé"&gt;&lt;a href="#espace-partag%c3%a9" class="header-anchor"&gt;&lt;/a&gt;Espace partagé
&lt;/h4&gt;&lt;p&gt;Pour la 2nde fonctionnalité qui permet la création d'un espace partagé avec les destinataires et en leurs donnant la possibilité d'upload leurs fichiers sans les joindre en retour par mail (en générant automatiquement un lien publique par le biais de Nextcloud) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lors de la rédaction d'un nouveau mail, sélectionner &lt;code&gt;Share public folder&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_07.png" alt="image-20220928204241957" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(Recommandé) : Définir une date d'expiration du lien.&lt;/li&gt;
&lt;li&gt;Valider avec le bouton &lt;code&gt;Public share&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout comme pour l'envoi de fichiers volumineux, un message s'insère dans le corps du mail en indiquant les informations nécessaires pour les destinataires.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next_out_08.png" alt="image-20220928204434304" /&gt;&lt;/p&gt;
&lt;h2 id="recommandation"&gt;&lt;a href="#recommandation" class="header-anchor"&gt;&lt;/a&gt;Recommandation
&lt;/h2&gt;&lt;p&gt;Une utilisation abusive, avec de très gros fichiers, peut provoquer une surcharge au point de vue stockage sur le serveur Nextcloud.&lt;/p&gt;
&lt;p&gt;De ce fait, il est important de définir une purge régulière des fichiers envoyés.&lt;/p&gt;
&lt;p&gt;Du point de vue serveur, les données sont organisées ce cette façon :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;www-data@9938e68f8acd:/var/www/html/data/julien/files# tree -d -L &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|-- Documents
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|-- Outlook
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| |-- Public-Share
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| | &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-- &lt;span style="color:#ae81ff"&gt;20220928&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-- Upload-Files
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-- &lt;span style="color:#ae81ff"&gt;20220928&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;|-- Photos
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-- Templates
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt; directories
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Attention à préserver les répertoires suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Outlook&lt;/li&gt;
&lt;li&gt;Public-Share&lt;/li&gt;
&lt;li&gt;Upload-Files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On peut constater qu'un sous-répertoire est créé automatiquement avec la date du jour suivant la fonctionnalité employée. Ces dossiers datés peuvent être supprimés directement sur le serveur par le biais de script, crontab, etc...&lt;/p&gt;
&lt;p&gt;Si cette méthode est employé :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Réindexer les fichiers dans la BDD de Nextcloud :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;www-data@9938e68f8acd:/var/www/html# php occ files:scan --all
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Starting scan &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; user &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; out of &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;admin&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Starting scan &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; user &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; out of &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;julien&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+---------+-------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| Folders | Files | Elapsed time |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+---------+-------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;67&lt;/span&gt; | 00:00:00 |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+---------+-------+--------------+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Docker Swarm : Stack Nextcloud</title><link>https://beta.slash-root.fr/docker-swarm-stack-nextcloud/</link><pubDate>Thu, 18 Aug 2022 13:00:13 +0200</pubDate><guid>https://beta.slash-root.fr/docker-swarm-stack-nextcloud/</guid><description>&lt;img src="https://beta.slash-root.fr/docker-swarm-stack-nextcloud/cover.png" alt="Featured image of post Docker Swarm : Stack Nextcloud" /&gt;&lt;h2 id="changelog"&gt;&lt;a href="#changelog" class="header-anchor"&gt;&lt;/a&gt;Changelog
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;22/08/2022 : Fix traefik headers as same origin, trusted proxy, redirectregex&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="informations-importantes"&gt;&lt;a href="#informations-importantes" class="header-anchor"&gt;&lt;/a&gt;Informations importantes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Nécéssite le stack pour traefik voir ici : &lt;a href="https://beta.slash-root.fr/docker-swarm-stack-traefik/"&gt;/docker-swarm-stack-traefik/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bien modifier ce qu'il faut dans le stack (voir commentaires)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fichier-stackyml"&gt;&lt;a href="#fichier-stackyml" class="header-anchor"&gt;&lt;/a&gt;Fichier stack.yml
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;3.3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;mariadb&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;mariadb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;command&lt;/span&gt;: --&lt;span style="color:#ae81ff"&gt;transaction-isolation=READ-COMMITTED --binlog-format=ROW --skip-innodb-read-only-compressed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer les mots de passe souhaités&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;MotDePasseTresSecure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_PASSWORD&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;MotDePasseTresSecure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_DATABASE&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_USER&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/var/run/docker.sock:/var/run/docker.sock:ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer les volumes à monter. Si le volume est inexistant, il sera créé automatiquement. Attention si contexte de cluster (swarm), penser à placer une contrainte de label.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;mariadb:/var/lib/mysql&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;net&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;deploy&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#resources:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#limits:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#cpus: &amp;#39;0.50&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#memory: 1024M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#reservations:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#cpus: &amp;#39;0.25&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#memory: 512M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;placement&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;constraints&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#- node.role == worker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;node.labels.nextcloud_mariadb == true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;app&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer le mot de passe inscrit précédement&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_PASSWORD&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;MotDePasseTresSecure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_DATABASE&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_USER&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MYSQL_HOST&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;mariadb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;TRUSTED_PROXIES&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;traefik&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer le domaine souhaité de l&amp;#39;application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;OVERWRITEHOST&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud.example.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;OVERWRITEPROTOCOL&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;https&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/var/run/docker.sock:/var/run/docker.sock:ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer les volumes à monter. Si le volume est inexistant, il sera créé automatiquement. Attention si contexte de cluster (swarm), penser à placer une contrainte de label.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;nextcloud:/var/www/html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;net&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indispensable pour communiquer avec traefik&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik-public&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;deploy&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#resources:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#limits:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#cpus: &amp;#39;0.50&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#memory: 1024M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#reservations:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#cpus: &amp;#39;0.25&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#memory: 512M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;placement&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;constraints&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#- node.role == worker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;node.labels.nextcloud_nextcloud == true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;labels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Activation de traefik&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.enable=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.docker.network=traefik-public&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.constraint-label=traefik-public&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer le domaine souhaité pour l&amp;#39;application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-http.rule=Host(`nextcloud.example.com`)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-http.entrypoints=http&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-http.middlewares=https-redirect&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer le domaine souhaité pour l&amp;#39;application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-https.rule=Host(`nextcloud.example.com`)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-https.entrypoints=https&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-https.tls=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-https.tls.certresolver=le&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Middleware pour nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.nextcloud-redirectregex.redirectRegex.permanent=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.nextcloud-redirectregex.redirectRegex.regex=https://(.*)/.well-known/(card|cal)dav&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.nextcloud-redirectregex.redirectRegex.replacement=https://$${1}/remote.php/dav/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.hsts-headers.headers.stsSeconds=315360000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.hsts-headers.headers.stsPreload=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.hsts-headers.headers.stsIncludeSubdomains=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.hsts-headers.headers.customFrameOptionsValue=SAMEORIGIN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.hsts-headers.headers.sslRedirect=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.hsts-headers.headers.forceSTSHeader=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.middlewares.hsts-headers.headers.referrerPolicy=same-origin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.routers.nextcloud-https.middlewares=hsts-headers,nextcloud-redirectregex&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer le port utiliser de l&amp;#39;application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;traefik.http.services.nextcloud.loadbalancer.server.port=80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;networks&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;net&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;driver&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;overlay&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;attachable&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;traefik-public&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;external&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;mariadb&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;driver&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;nextcloud&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;driver&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="déploiement"&gt;&lt;a href="#d%c3%a9ploiement" class="header-anchor"&gt;&lt;/a&gt;Déploiement
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker stack deploy -c stack.yml nextcloud
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Nextcloud : Intégration d’une authentification SSO avec AD FS</title><link>https://beta.slash-root.fr/nextcloud-integration-dune-authentification-sso-avec-ad-fs/</link><pubDate>Fri, 08 Jul 2022 12:00:33 +0200</pubDate><guid>https://beta.slash-root.fr/nextcloud-integration-dune-authentification-sso-avec-ad-fs/</guid><description>&lt;img src="https://beta.slash-root.fr/nextcloud-integration-dune-authentification-sso-avec-ad-fs/cover.png" alt="Featured image of post Nextcloud : Intégration d’une authentification SSO avec AD FS" /&gt;&lt;p&gt;Cet article fait office de PoC (Proof of Concept) sur la mise en place d'une authentification SSO (Single-Sign-On) à travers le service ADFS (Active Directory Federation Services) de Microsoft et l'application Open Source Nextcloud.&lt;/p&gt;
&lt;p&gt;Cela va permettre aux utilisateurs de la plateforme Nextcloud de s'authentifier avec leur compte Active Directory en utilisant le protocole SAML dans des contextes réseaux totalement différents.&lt;/p&gt;
&lt;h2 id="environnement"&gt;&lt;a href="#environnement" class="header-anchor"&gt;&lt;/a&gt;Environnement
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Environnements déjà déployés :
&lt;ul&gt;
&lt;li&gt;Nextcloud v24.0.2&lt;/li&gt;
&lt;li&gt;Contrôleur de domaine Windows Serveur 2019&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Informations :
&lt;ul&gt;
&lt;li&gt;Domaine AD : aukfood.lan&lt;/li&gt;
&lt;li&gt;Nom serveur AD : adfs-dev&lt;/li&gt;
&lt;li&gt;Domaine publique utilisé : example.com (remplace les parties floutées dans les captures d'écrans)&lt;/li&gt;
&lt;li&gt;URL Nextcloud : &lt;a href="https://nc-dev.example.com"&gt;https://nc-dev.example.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enregistrement DNS pour l'ADFS : adfs2-dev.example.com&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="génération-du-certificat-lets-encrypt"&gt;&lt;a href="#g%c3%a9n%c3%a9ration-du-certificat-lets-encrypt" class="header-anchor"&gt;&lt;/a&gt;Génération du certificat Let&amp;rsquo;s Encrypt
&lt;/h2&gt;&lt;p&gt;A effectuer sur le serveur Windows (Tous les services seront déployés sur le contrôleur de domaine) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installation de IIS en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Install-WindowsFeature -name Web-Server -IncludeManagementTools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Faire un enregistrement de type A dans une zone DNS publique pour le serveur IIS :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;adfs2-dev IN A xxx.xxx.xxx.xxx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Dans ce PoC, le domaine publique utilisé sera &lt;em&gt;example.com&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer la racine du site web pour résoudre le challenge :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir c:&lt;span style="color:#ae81ff"&gt;\i&lt;/span&gt;netpub&lt;span style="color:#ae81ff"&gt;\a&lt;/span&gt;dfs2-dev.example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer un fichier &lt;code&gt;index.html&lt;/code&gt; dans la racine du site web :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;notepad c:&lt;span style="color:#ae81ff"&gt;\i&lt;/span&gt;netpub&lt;span style="color:#ae81ff"&gt;\a&lt;/span&gt;dfs2-dev.example.com&lt;span style="color:#ae81ff"&gt;\i&lt;/span&gt;ndex.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Insérer le contenu suivant puis enregistrer :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hello world
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ouvrir la console de &lt;code&gt;Gestionnaire des services Internet (IIS)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supprimer le site web par défaut.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ajouter un nouveau site web :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="website_iis.png" alt="image-20220629173936647" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Télécharger le client ACME pour Let's Encrypt ici : &lt;a href="https://www.win-acme.com/"&gt;https://www.win-acme.com/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A l'heure actuelle, la dernière version : &lt;a href="https://github.com/win-acme/win-acme/releases/download/v2.1.22.1267/win-acme.v2.1.22.1267.x64.pluggable.zip"&gt;https://github.com/win-acme/win-acme/releases/download/v2.1.22.1267/win-acme.v2.1.22.1267.x64.pluggable.zip&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Décompresser l'archive et déplacer le fichier &lt;code&gt;Web_Config.xml&lt;/code&gt; à la racine du site web.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redémarrer le site web.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lancer une ligne de commandes et se positionner dans le répertoire préalablement extrait.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exécuter &lt;code&gt;wacs.exe&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs.png" alt="image-20220629172217587" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer un nouveau certificat (Choix &lt;strong&gt;N&lt;/strong&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner le site ajouté au préalable dans IIS :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-N.png" alt="image-20220629174215379" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Peu importe si le certificat est de type wildcard ou non.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le certificat est généré avec une tâche planifiée qui va renouveller le certificat automatiquement :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-C.png" alt="image-20220629174528336" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Une liaison &lt;strong&gt;https&lt;/strong&gt; (vhost) a été automatiquement générée pour le site web :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-vhost.png" alt="image-20220629175250793" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ce certificat est celui qui sera exploité par le service &lt;code&gt;AD FS&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exportation-du-certificat-au-format-pfx"&gt;&lt;a href="#exportation-du-certificat-au-format-pfx" class="header-anchor"&gt;&lt;/a&gt;Exportation du certificat au format pfx
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Re-lancer l'outil &lt;code&gt;wacs.exe&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Faire le choix &lt;strong&gt;A&lt;/strong&gt; (Manage renewals) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-A.png" alt="image-20220629182842875" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Afficher les détails avec &lt;strong&gt;D&lt;/strong&gt;, puis noter le &lt;code&gt;.pfx password&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-D.png" alt="image-20220629183139844" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ouvrir le dossier des certificats Let's Encrypt :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;explorer C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner le certificat &lt;code&gt;.pfx&lt;/code&gt; correspondant puis démarrer l'assistant d'importation du certificat au niveau de l'ordinateur local (Pour rappel : c'est le DC) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="pfx-export.png" alt="image-20220629184339453" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir le mot de passe de la clé privée (&lt;code&gt;.pfx password&lt;/code&gt; noté au préalable) et cocher &lt;code&gt;Marquer cette clé comme exportable&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="pfx-password.png" alt="image-20220630082547704" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner automatiquement le magasin de certificats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Terminer l'assistant d'importation du certificat.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ouvrir la gestion des certificats de l'ordinateur local :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;certlm.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans &amp;quot;Personnel\Certificats&amp;quot; (1), sélectionner le certificat préalablement importé (2). Dans &amp;quot;Toutes les tâches&amp;quot; (3), sélectionner &amp;quot;Exporter&amp;quot; (4) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="cert-export.png" alt="image-20220630083328159" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Il est maintenant possible d'exporter la clé privée du certificat :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="privkey-export.png" alt="image-20220630083457141" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exporter toutes les propriétés étendues :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="export-all.png" alt="image-20220630083627092" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir un mot de passe pour protéger la clé privée :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="protect-privkey.png" alt="image-20220630083813883" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spécifier le nom du fichier à exporter au format &lt;code&gt;pfx&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Terminer l'assistant d'exportation du certificat.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation-ad-fs"&gt;&lt;a href="#installation-ad-fs" class="header-anchor"&gt;&lt;/a&gt;Installation AD FS
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installer le service &lt;code&gt;ADFS-Federation&lt;/code&gt; en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Install-WindowsFeature -name ADFS-Federation -IncludeManagementTools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer la clé racine du service de distribution de clés en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(&lt;span style="color:#ae81ff"&gt;-10&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La configuration du service se fera en mode graphique à travers le gestionnaire de serveur &lt;code&gt;servermanager.exe&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-config.png" alt="image-20220630114920640" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer le premier serveur de fédération dans une batterie de serveurs de fédération.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Importer le certificat préalablement exporté au format &lt;code&gt;.pfx&lt;/code&gt; (1). Puis, entrer un nom pour le service FS (2) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="cert-adfs.png" alt="image-20220630133612131" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spécifier un compte de service :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-service.png" alt="image-20220630134121333" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Une base de données SQL Server peut être exploitée. Dans ce PoC, une base de données interne Windows est utilisée.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Après examen des options, la configuration peut être lancée :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-install.png" alt="image-20220630134402869" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redémarrer le serveur Windows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Activer la page de login de l'ADFS en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Set-AdfsProperties -EnableIdpInitiatedSignonPage $true
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tester la connexion : &lt;a href="https://adfs2-dev.example.com/adfs/ls/IdpInitiatedSignon.aspx"&gt;https://adfs2-dev.example.com/adfs/ls/IdpInitiatedSignon.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="test-adfs.png" alt="image-20220630141116182" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="paramétrage-nextcloud"&gt;&lt;a href="#param%c3%a9trage-nextcloud" class="header-anchor"&gt;&lt;/a&gt;Paramétrage Nextcloud
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se connecter en SSH sur le serveur Nextcloud et se positionner à la racine du projet web :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /var/www/nc-dev.example.com/www/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Installer l'application &lt;code&gt;user_saml&lt;/code&gt; avec &lt;code&gt;occ&lt;/code&gt; (A adapter selon le propriétaire du projet web) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo -u nextcloud php8.0 occ app:install user_saml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# user_saml 5.0.2 installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# user_saml enabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se connecter à l'interface web du Nextcloud en &lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se rendre dans &amp;quot;Paramètres&amp;quot; (1) / &amp;quot;Authentification SSO &amp;amp; SAML&amp;quot; (2). Puis &amp;quot;Utiliser l'authentification SAML intégrée&amp;quot; (3) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-samlon.png" alt="image-20220630140157898" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans la partie &amp;quot;Général&amp;quot;, entrer l'&lt;strong&gt;Attribut pour relier l'UID&lt;/strong&gt; :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;C'est l'UPN du compte de l'utilisateur dans l'AD qui fera office de nom d'utilisateur au sein de l'instance Nextcloud.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-upn.png" alt="image-20220630140651305" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configurer les options IdP :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identifiant de l'entité IdP&lt;/strong&gt; : &lt;a href="http://adfs2-dev.example.com/adfs/services/trust"&gt;http://adfs2-dev.example.com/adfs/services/trust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;URL cible du fournisseur d'identités à qui le fournisseur de service enverra la requête d'authentification&lt;/strong&gt; : &lt;a href="https://adfs2-dev.example.com/adfs/ls"&gt;https://adfs2-dev.example.com/adfs/ls&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-optionsidp.png" alt="image-20220630141706164" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cliquer sur &amp;quot;Hide optional Identity Provider settings&amp;quot; pour accéder au champ &lt;strong&gt;Certificat public X.509 de l'IdP&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sur le serveur Windows, ouvrir la console de gestion de l'ADFS :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;windir%\ADFS\Microsoft.IdentityServer.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans &amp;quot;Service&amp;quot; / &amp;quot;Certificats&amp;quot; (1), Afficher le certificat (2) utilisé pour la signature de jetons :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-certpub.png" alt="image-20220630142847703" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans l'onglet &amp;quot;Détails&amp;quot;, copier dans un fichier :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="cert-copier.png" alt="image-20220630143034704" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exporter au format : *&lt;em&gt;X.509 encodé en base 64 (&lt;/em&gt;.cer)**&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spécifier un nom de fichier pour l'export.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copier le contenu de ce fichier exporté au format &lt;code&gt;.cer&lt;/code&gt; et le coller dans le champ &lt;strong&gt;Certificat public X.509 de l'IdP&lt;/strong&gt; dans Nextcloud :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-certpub.png" alt="image-20220630143523748" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mapper les attributs suivants au minimum :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Attribut pour relier le nom d'utilisateur&lt;/strong&gt; : &lt;a href="http://schemas.microsoft.com/identity/claims/displayname"&gt;http://schemas.microsoft.com/identity/claims/displayname&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Attribut pour relier l'adresse mail&lt;/strong&gt; : &lt;a href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"&gt;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-map.png" alt="image-20220630143833948" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Télécharger le fichier &lt;code&gt;metadata.xml&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-metadata.png" alt="image-20220630144006856" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pour avoir la possibilité de garder l'authentification avec la base utilisateur interne de Nextcloud, cocher &lt;strong&gt;Autoriser l'utilisation de plusieurs systèmes d'authentification&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-manyauth.png" alt="image-20220630144234576" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bien vérifier l'enregistrement du paramétrage en quittant le menu &amp;quot;Authentification SSO &amp;amp; SAML&amp;quot; et en y revenant (Surtout sur le paramétrage du point précédent).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="paramétrage-ad-fs"&gt;&lt;a href="#param%c3%a9trage-ad-fs" class="header-anchor"&gt;&lt;/a&gt;Paramétrage AD FS
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sur le serveur Windows, ouvrir la console de gestion de l'AD FS :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;windir%\ADFS\Microsoft.IdentityServer.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ajouter une approbation de partie de confiance :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-trusted.png" alt="image-20220630151040792" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prendre en charge les revendications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Importer les données concernant la partie de confiance à partir du fichier &lt;code&gt;metadata.xml&lt;/code&gt; téléchargé préalablement :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-metadata.png" alt="image-20220630151343201" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir un nom pour cette approbation et éventuellement des notes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner une stratégie de contrôle d'accès. Dans ce PoC, tout le monde sera autorisé :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-policy.png" alt="image-20220630151559318" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La partie de confiance a été configurée à l'aide du fichier &lt;code&gt;metadata.xml&lt;/code&gt; fourni.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Editer la stratégie d'émission de revendication :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-revendication.png" alt="image-20220630151802258" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2 règles de revendication de transformations sont à ajouter au minimum :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;userPrincipalName&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le modèle de régle de revendication à suivre est : &lt;strong&gt;Envoyer les attributs LDAP en tant que revendications&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Règle &lt;strong&gt;userPrincipalName&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-upn.png" alt="image-20220630152456345" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Règle &lt;strong&gt;Email&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-email.png" alt="image-20220630152543102" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Appliquer les 2 règles ajoutées.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vérification-de-lauthentification"&gt;&lt;a href="#v%c3%a9rification-de-lauthentification" class="header-anchor"&gt;&lt;/a&gt;Vérification de l&amp;rsquo;authentification
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se connecter à Nextcloud, et choisir de s'authentifier au travers une &lt;strong&gt;Connection SSO &amp;amp; SAML&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-adfs.png" alt="image-20220630152933665" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Utiliser un compte de l'Active Directory autoriser à se connecter à travers l'AD FS :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-test.png" alt="image-20220630153048587" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Congratulations !&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-next.png" alt="image-20220630153150780" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ressources-en-vrac"&gt;&lt;a href="#ressources-en-vrac" class="header-anchor"&gt;&lt;/a&gt;Ressources en vrac
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.kveer.fr/login-nextcloud-saml-adfs/"&gt;https://blog.kveer.fr/login-nextcloud-saml-adfs/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.virtualease.fr/nextcloud-authentication-active-directory-sso-via-adfs-saml/"&gt;https://www.virtualease.fr/nextcloud-authentication-active-directory-sso-via-adfs-saml/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://os-zenia.blogspot.com/2021/01/nextcloud-sso-adfs.html"&gt;http://os-zenia.blogspot.com/2021/01/nextcloud-sso-adfs.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rephlex.de/blog/2018/04/05/how-to-connect-nextcloud-to-active-directory-using-ad-fs-without-losing-your-mind/"&gt;https://rephlex.de/blog/2018/04/05/how-to-connect-nextcloud-to-active-directory-using-ad-fs-without-losing-your-mind/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.myworkdrive.com/fr/support/adfs-single-sign-sso-integration-guide/"&gt;https://www.myworkdrive.com/fr/support/adfs-single-sign-sso-integration-guide/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.infotechram.com/wp-content/uploads/2020/07/Installing-Active-Directory-Federation-Services.pdf"&gt;https://www.infotechram.com/wp-content/uploads/2020/07/Installing-Active-Directory-Federation-Services.pdf&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.alitajran.com/export-lets-encrypt-certificate-in-windows-server/"&gt;https://www.alitajran.com/export-lets-encrypt-certificate-in-windows-server/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.rcfed.com/SAMLWSFed/CommonClaimtypelist"&gt;https://www.rcfed.com/SAMLWSFed/CommonClaimtypelist&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/fr-fr/dotnet/api/system.security.claims.claimtypes?view=net-6.0"&gt;https://docs.microsoft.com/fr-fr/dotnet/api/system.security.claims.claimtypes?view=net-6.0&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/fr-fr/windows-server/identity/ad-fs/troubleshooting/ad-fs-tshoot-initiatedsignon"&gt;https://docs.microsoft.com/fr-fr/windows-server/identity/ad-fs/troubleshooting/ad-fs-tshoot-initiatedsignon&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://help.mulesoft.com/s/article/Configuring-ADFS-SLO-endpoint"&gt;https://help.mulesoft.com/s/article/Configuring-ADFS-SLO-endpoint&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://pitstop.manageengine.com/portal/en/kb/articles/saml-auto-login-with-adfs"&gt;https://pitstop.manageengine.com/portal/en/kb/articles/saml-auto-login-with-adfs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Nextcloud : Importer ses données de Google</title><link>https://beta.slash-root.fr/nextcloud-importer-ses-donnees-de-google/</link><pubDate>Thu, 16 Jun 2022 08:00:16 +0200</pubDate><guid>https://beta.slash-root.fr/nextcloud-importer-ses-donnees-de-google/</guid><description>&lt;img src="https://beta.slash-root.fr/nextcloud-importer-ses-donnees-de-google/cover.png" alt="Featured image of post Nextcloud : Importer ses données de Google" /&gt;&lt;h2 id="contexte"&gt;&lt;a href="#contexte" class="header-anchor"&gt;&lt;/a&gt;Contexte
&lt;/h2&gt;&lt;p&gt;Il est possible de donner aux utilisateurs, un moyen de pouvoir importer plusieurs données de leur compte Google au sein de leur compte Nextcloud comme :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les agendas&lt;/li&gt;
&lt;li&gt;Les contacts&lt;/li&gt;
&lt;li&gt;Les photos&lt;/li&gt;
&lt;li&gt;Les fichiers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour se faire, plusieurs APIs Google vont être exploitées.&lt;/p&gt;
&lt;h2 id="google-integration"&gt;&lt;a href="#google-integration" class="header-anchor"&gt;&lt;/a&gt;Google integration
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se connecter en &lt;code&gt;admin&lt;/code&gt; sur l'interface web du Nextcloud.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rechercher, télécharger, installer l'application &lt;strong&gt;Google integration&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="01_nextcloud_appli.png" alt="image-20220531121350423" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans les &lt;strong&gt;Paramètres&lt;/strong&gt; d'&lt;strong&gt;Administration&lt;/strong&gt;, se rendre dans &lt;strong&gt;Comptes connectés&lt;/strong&gt; (1). C'est à cet endroit qu'il va falloir renseigner l'&lt;code&gt;ID Client&lt;/code&gt; et le &lt;code&gt;Secret client&lt;/code&gt; (2) afin de pouvoir autoriser les utilisateurs à s'authentifier plus tard sur leur compte Google afin de procéder à l'importation de leur données dans leur espace Nextcloud.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="02_nextcloud_integration.png" alt="image-20220531122516097" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cliquer sur &lt;strong&gt;Paramètres de l'API Google&lt;/strong&gt; (3) afin de créer une application OAuth Google et de récupérer les informations à renseigner (2) pour finaliser l'intégration de Google.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;S'identifier avec un compte Google sur la Google Cloud Platform.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ce compte Google sera exploité uniquement pour l'API Google.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="google-cloud-platform"&gt;&lt;a href="#google-cloud-platform" class="header-anchor"&gt;&lt;/a&gt;Google Cloud Platform
&lt;/h2&gt;&lt;h3 id="projet"&gt;&lt;a href="#projet" class="header-anchor"&gt;&lt;/a&gt;Projet
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Créer un nouveau &lt;strong&gt;Projet&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="03_google_projet.png" alt="image-20220531123313059" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nommer le projet (1). Puis, valider (2).&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="04_google_create.png" alt="image-20220531123743578" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="consentement"&gt;&lt;a href="#consentement" class="header-anchor"&gt;&lt;/a&gt;Consentement
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Dans &lt;strong&gt;Ecran de consentement OAuth&lt;/strong&gt; (1), définir le type d'utilisateur (2). Puis, valider (3).&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="05_google_consent.png" alt="image-20220531124403709" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Entrer le nom de l'application demandant l'autorisation (1) ainsi que l'adresse mail d'assistance (2).&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="06_google_infosappli.png" alt="image-20220531140813609" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Il est possible de spécifier un logo qui apparaitra sur la page de consentement lorsque l'utilisateur saisira ces informations de compte Google.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tout en bas de la page, indiquer vos coordonnées de développeur. Puis &lt;strong&gt;Enregistrer et continuer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="07_google_coordonnees.png" alt="image-20220531141303868" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sur l'écran suivant, &lt;strong&gt;Enregistrer et continuer&lt;/strong&gt; tout en bas de la page.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="08_google_suite.png" alt="image-20220531141803639" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A ce stade le projet a un status de publication à l'état de &lt;strong&gt;Test&lt;/strong&gt;. Il est nécessaire d'ajouter (1) les comptes Google (2) que les utilisateurs utiliseront pour les autoriser à utiliser ce projet. Puis, &lt;strong&gt;Enregistrer et continuer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="09_google_users.png" alt="image-20220531142515869" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Un résumé de l'écran de consentement paramétré est afficher.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="identifiants"&gt;&lt;a href="#identifiants" class="header-anchor"&gt;&lt;/a&gt;Identifiants
&lt;/h3&gt;&lt;p&gt;Maintenant, il faut générer des identifiants de type OAuth dans le projet Google Cloud Platform créé. Ceux-ci seront à renseigner par la suite dans le paramétrage de Nextcloud.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Dans le menu &lt;strong&gt;API et services&lt;/strong&gt; à gauche, se rendre dans &lt;strong&gt;Identifiants&lt;/strong&gt; (1). &lt;strong&gt;Créer des identifiants&lt;/strong&gt; (2) de type &lt;strong&gt;ID client OAuth&lt;/strong&gt; (3).&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="10_google_idoauth.png" alt="image-20220531143328943" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Renseigner le &lt;strong&gt;Type d'application&lt;/strong&gt; (1). Indiquer un &lt;strong&gt;Nom&lt;/strong&gt; (2) pour identifier le client dans la console Google Cloup Platform. Indiquer l'&lt;strong&gt;URI de redirection&lt;/strong&gt; (3) autorisés. Cette URI est disponible dans l'interface Nextcloud vu précédemment, dans la parti Intégration de Google. Puis, &lt;strong&gt;Créer&lt;/strong&gt; (4).&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="11_google_idcreate.png" alt="image-20220531144518928" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;l'ID client et le code secret du client sont disponible.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="12_google_idclient.png" alt="image-20220531144957398" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Retourner sur l'interface web de Nextcloud dans la partie &lt;strong&gt;Intégration de Google&lt;/strong&gt;. Puis, indiquer l'&lt;strong&gt;ID client&lt;/strong&gt; (1) et le &lt;strong&gt;Secret client&lt;/strong&gt; (2).&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="13_nextcloud_idclient.png" alt="image-20220531145659731" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="api"&gt;&lt;a href="#api" class="header-anchor"&gt;&lt;/a&gt;API
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Toujours sur Google Cloud Platform, dans API et services, se rendre dans &lt;strong&gt;Bibliothèque&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Rechercher et activer les API suivantes :
&lt;ul&gt;
&lt;li&gt;Google Drive API&lt;/li&gt;
&lt;li&gt;Google Calendar API&lt;/li&gt;
&lt;li&gt;Google People API&lt;/li&gt;
&lt;li&gt;Photos Library API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="nextcloud"&gt;&lt;a href="#nextcloud" class="header-anchor"&gt;&lt;/a&gt;Nextcloud
&lt;/h2&gt;&lt;p&gt;Dorénavant, lorsqu'un utilisateur se connectera sur l'interface web de son Nextcloud, une section &lt;strong&gt;Migration de données&lt;/strong&gt; (1) est disponible dans ses paramètres. Cela va permettre à l'utilisateur de connecter son compte Google (2) afin de migrer les données voulues vers son compte Nextcloud.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="14_nextcloud_usermig.png" alt="image-20220531153823988" /&gt;&lt;/p&gt;
&lt;p&gt;Une fois que l'utilisateur a connecté son compte Google et autorisé l'accès aux données à migrer, il suffit de sélectionner les éléments à importer.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="15_nextcloud_import.png" alt="image-20220531155030647" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si aucune données n'est présente dans une des fonctionnalités Google, celle-ci ne sera pas proposée à l'import.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Nextcloud : Ajouter un calendrier Google privé (Sans credentials)</title><link>https://beta.slash-root.fr/nextcloud-ajouter-un-calendrier-google-prive-sans-credentials/</link><pubDate>Thu, 09 Jun 2022 08:00:00 +0200</pubDate><guid>https://beta.slash-root.fr/nextcloud-ajouter-un-calendrier-google-prive-sans-credentials/</guid><description>&lt;img src="https://beta.slash-root.fr/nextcloud-ajouter-un-calendrier-google-prive-sans-credentials/cover.png" alt="Featured image of post Nextcloud : Ajouter un calendrier Google privé (Sans credentials)" /&gt;&lt;h2 id="contexte"&gt;&lt;a href="#contexte" class="header-anchor"&gt;&lt;/a&gt;Contexte
&lt;/h2&gt;&lt;p&gt;Le but est d'ajouter un calendrier Google (Google Agenda) dans les calendriers d'un utilisateur Nextcloud.&lt;/p&gt;
&lt;p&gt;Le calendrier Google restera privé et ne passera donc pas en publique.&lt;/p&gt;
&lt;p&gt;De plus, il ne sera accessible qu'en lecture. C'est comme ça...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Attention : L'accès au calendrier ne se fera pas avec les credentials du compte mais à l'aide d'une URL secrète (A ne surtout pas diffuser).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="côté-google"&gt;&lt;a href="#c%c3%b4t%c3%a9-google" class="header-anchor"&gt;&lt;/a&gt;Côté Google
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Se connecter au compte Google à ajouter dans Nextcloud.&lt;/li&gt;
&lt;li&gt;Dans la partie gauche de l'interface web, cliquer sur les 3 petits points à droite du calendrier à intégrer dans Nextcloud (1). Puis sélectionner &lt;code&gt;Paramètres et partage&lt;/code&gt; (2).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="01_google_agenda.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faire défiler jusqu'à la partie &lt;code&gt;Intégrer l&amp;#039;agenda&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;L'adresse secrète au format iCal est disponible (1). Afin de mettre cette adresse dans le presse-papier, cliquer sur l'icône &amp;quot;Copier&amp;quot; en bout de ligne (2).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="02_google_integration.png" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En utilisant cette adresse secrète, il n'est pas obligatoire de rendre l'agenda publique. De ce fait, le calendrier Google restera privé. Attention toutefois, son accès se fait sans credentials mais uniquement en lecture seule.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="côté-nextcloud"&gt;&lt;a href="#c%c3%b4t%c3%a9-nextcloud" class="header-anchor"&gt;&lt;/a&gt;Côté Nextcloud
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Se connecter sur le compte Nextcloud qui doit bénificer de l'agenda Google et se rendre dans la section &lt;code&gt;Agenda&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ajouter un nouvel agenda (1). Puis, créer un nouvel abonnement par lien (2).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="03_nextcloud_agenda.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coller l'adresse secrète récupérée précédemment. Puis, valider.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="04_nextcloud_basics.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un nouveau calendrier &lt;code&gt;calendar.google.com&lt;/code&gt; a été ajouté en lecture seule. Il est possible de la renommer pour lui donner un nom plus explicite.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="05_nextcloud_rename.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="taux-de-rafraîchissement"&gt;&lt;a href="#taux-de-rafra%c3%aechissement" class="header-anchor"&gt;&lt;/a&gt;Taux de rafraîchissement
&lt;/h2&gt;&lt;p&gt;Le taux de rafraîchissement (refresh rate), d'une souscription à un calendrier dans Nextcloud, est d'une fois toutes les semaines par défaut.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nextcloud.com/server/19/user_manual/pim/calendar.html"&gt;https://docs.nextcloud.com/server/19/user_manual/pim/calendar.html&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Subscriptions are refreshed every week by default. Your admin may have changed this setting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Modifier le taux de rafraîchissement :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se connecter avec un terminal en &lt;code&gt;root&lt;/code&gt; à l'instance Nextcloud.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se positionner à la racine du site Nextcloud.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /var/www/nextcloud.example.com/www/ &lt;span style="color:#75715e"&gt;# Par exemple&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Obtenir le propriétaire du fichier &lt;code&gt;config.php&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls -l config/config.php
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.rw-r----- nextcloud nextcloud 1.5 KB Wed May &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt; 10:17:35 &lt;span style="color:#ae81ff"&gt;2022&lt;/span&gt; config/config.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modifier la valeur de l'option &lt;code&gt;calendarSubscriptionRefreshRate&lt;/code&gt; de l'application calendrier de Nextcloud à 5 minutes.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo -u nextcloud php8.0 occ config:app:set dav calendarSubscriptionRefreshRate --value &lt;span style="color:#e6db74"&gt;&amp;#34;PT5M&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Résultat :&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Config value calendarSubscriptionRefreshRate for app dav set to PT5M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Utiliser l'utilisateur étant propriétaire du fichier config .php avec la commande sudo.&lt;/li&gt;
&lt;li&gt;Utiliser le binaire php correspondant à la version du Nextcloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier la prise en compte.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo -u nextcloud php8.0 occ config:list | grep -i calendar
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Résultat :&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# &amp;#34;calendar&amp;#34;: {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# &amp;#34;calendarSubscriptionRefreshRate&amp;#34;: &amp;#34;PT5M&amp;#34;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="crontab"&gt;&lt;a href="#crontab" class="header-anchor"&gt;&lt;/a&gt;Crontab
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Editer la crontab de l'utilisateur étant propriétaire du fichier config.php vu précédemment.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo -u nextcloud crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ajouter une tâche toutes les 5 minutes exécutant le script php situé à la racine du site Nextcloud.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;*/5 * * * * php8.0 -f /var/www/nextcloud.example.com/www/cron.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Utiliser le binaire php correspondant à la version du Nextcloud.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se connecter en &lt;code&gt;admin&lt;/code&gt; sur l'interface web de Nextcloud. Puis se rendre dans &lt;strong&gt;Paramètres&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans la section &lt;strong&gt;Administration&lt;/strong&gt; en bas à gauche, se rendre dans &lt;strong&gt;Paramètres de base&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;S'assurer que les &lt;strong&gt;Tâches de fond&lt;/strong&gt; soient configurées avec &lt;code&gt;Cron&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="06_nextcloud_cron.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sources"&gt;&lt;a href="#sources" class="header-anchor"&gt;&lt;/a&gt;Sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.nextcloud.com/server/19/user_manual/pim/calendar.html"&gt;https://docs.nextcloud.com/server/19/user_manual/pim/calendar.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.nextcloud.com/server/latest/admin_manual/groupware/calendar.html#refresh-rate"&gt;https://docs.nextcloud.com/server/latest/admin_manual/groupware/calendar.html#refresh-rate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.php.net/manual/fr/dateinterval.construct.php"&gt;https://www.php.net/manual/fr/dateinterval.construct.php&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Nextcloud : Group Folders</title><link>https://beta.slash-root.fr/nextcloud-group-folders/</link><pubDate>Thu, 05 May 2022 08:00:20 +0200</pubDate><guid>https://beta.slash-root.fr/nextcloud-group-folders/</guid><description>&lt;img src="https://beta.slash-root.fr/nextcloud-group-folders/cover.png" alt="Featured image of post Nextcloud : Group Folders" /&gt;&lt;h2 id="contexte"&gt;&lt;a href="#contexte" class="header-anchor"&gt;&lt;/a&gt;Contexte
&lt;/h2&gt;&lt;p&gt;Nextcloud est orienté utilisateurs.&lt;/p&gt;
&lt;p&gt;C'est à dire que si l'on souhaite partager des données à d'autres utilisateurs et/ou groupes d'utilisateurs, ces partages se retrouveront à la racine (par défaut) de chaque espace de travail des utilisateurs sans conserver toute l'arborescence.&lt;/p&gt;
&lt;p&gt;Un exemple concret :&lt;/p&gt;
&lt;p&gt;Un utilisateur nommé &amp;quot;Jean-Jacques&amp;quot; possède une arborescence comme suit :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Ce dossier partagé se retrouvera à la racine (par défaut) du Nextcloud des destinataires concernés.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;L'arborescence complète ne sera pas visible.&lt;/p&gt;
&lt;p&gt;Cela n'est pas adapté si l'on souhaite partager toute une arborescence avec des droits spécifiques et diverses en son sein.&lt;/p&gt;
&lt;p&gt;C'est la que l'application &lt;code&gt;Group Folders&lt;/code&gt; intervient.&lt;/p&gt;
&lt;h2 id="group-folders"&gt;&lt;a href="#group-folders" class="header-anchor"&gt;&lt;/a&gt;Group Folders
&lt;/h2&gt;&lt;h3 id="présentation"&gt;&lt;a href="#pr%c3%a9sentation" class="header-anchor"&gt;&lt;/a&gt;Présentation
&lt;/h3&gt;&lt;p&gt;Group Folders est une application que l'on va pouvoir greffer à Nextcloud.&lt;/p&gt;
&lt;p&gt;Cette application va permettre de configurer des dossiers partagés à un / des groupe(s) d'utilisateurs.&lt;/p&gt;
&lt;p&gt;Ensuite, l'administrateur va pouvoir configurer finement des droits spécifiques (lecture / écriture / partage / quota) sur ces dossiers partagés.&lt;/p&gt;
&lt;p&gt;De plus l'intérêt est qu'avec cette application, les données ne seront plus dépendantes d'un utilisateur. Par exemple si Jean-Jacques est supprimé, toutes ces données seront supprimmées ainsi que les partages qu'il a pu faire.&lt;/p&gt;
&lt;p&gt;Lien vers le projet : &lt;a href="https://github.com/nextcloud/groupfolders"&gt;https://github.com/nextcloud/groupfolders&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="exemple"&gt;&lt;a href="#exemple" class="header-anchor"&gt;&lt;/a&gt;Exemple
&lt;/h3&gt;&lt;p&gt;Dans mon Nextcloud, je possède plusieurs utilisateurs repartis dans les groupes suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comptabilité&lt;/li&gt;
&lt;li&gt;Direction&lt;/li&gt;
&lt;li&gt;Technique&lt;/li&gt;
&lt;li&gt;Invité&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je souhaite déployer une arborescence de ce type au sein de mon Nextcloud :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── compta &lt;span style="color:#75715e"&gt;# Accessible en écriture au groupe comptabilité et en lecture au groupe direction&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── note_de_frais
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── salaires
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── direction &lt;span style="color:#75715e"&gt;# Accessible en écriture au groupe direction&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── courriers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── projets
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── public &lt;span style="color:#75715e"&gt;# Accessible en écriture à tous les groupes sauf au groupe invité qui sera en lecture seule&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── documents
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── entreprise
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── technique &lt;span style="color:#75715e"&gt;# Accessible en écriture au groupe technique et en lecture au groupe direction&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── manuels
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── procedures
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="installation"&gt;&lt;a href="#installation" class="header-anchor"&gt;&lt;/a&gt;Installation
&lt;/h3&gt;&lt;p&gt;Pour installer Group Folders, il faut se connecter en tant qu'&lt;code&gt;admin&lt;/code&gt; sur la plateforme Nextcloud puis se rendre dans les &lt;code&gt;Applications&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ensuite, rechercher &lt;code&gt;Group Folders&lt;/code&gt; puis &lt;code&gt;Télécharger et activer&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="3.png" alt="image-20220422122832933" /&gt;&lt;/p&gt;
&lt;h3 id="configuration"&gt;&lt;a href="#configuration" class="header-anchor"&gt;&lt;/a&gt;Configuration
&lt;/h3&gt;&lt;p&gt;Toujours en tant qu'&lt;code&gt;admin&lt;/code&gt;, se rendre dans les &lt;code&gt;Paramètres&lt;/code&gt; d'&lt;code&gt;Administration&lt;/code&gt; puis &lt;code&gt;Dossiers du groupe&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="4.png" alt="image-20220423111910824" /&gt;&lt;/p&gt;
&lt;p&gt;Créer dans un 1er temps les dossiers qui figureront à la racine des utilisateurs :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="5.png" alt="image-20220423112429345" /&gt;&lt;/p&gt;
&lt;p&gt;Ensuite, y associer les groupes d'utilisateurs désirés avec les permissions adéquates :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="6.png" alt="image-20220423112646312" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ici pour le dossier &lt;code&gt;compta&lt;/code&gt;, le groupe &lt;code&gt;Comptabilité&lt;/code&gt; pourra lire et écrire et le groupe &lt;code&gt;Direction&lt;/code&gt; aura simplement un droit de lecture. Naturellement, je refuse que ces données soient partageables par les utilisateurs qui y auront accès.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il est possible d'y définir un quota maximal :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="7.png" alt="image-20220423113054906" /&gt;&lt;/p&gt;
&lt;p&gt;Puis, définir qui pourra gérer les droits de ce dossier :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="8.png" alt="image-20220423113327341" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Il faut que ce soit un utlisateur / groupe qui ait accès au dossier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Configurer l'intégralité des autorisations souhaitées comme suit :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="9.png" alt="image-20220423113730955" /&gt;&lt;/p&gt;
&lt;p&gt;Bien entendu, il faut ensuite créer les sous-dossiers dans chaque &lt;code&gt;Group Folders&lt;/code&gt; dans l'espace &lt;code&gt;Fichiers&lt;/code&gt; de Nextcloud.&lt;/p&gt;
&lt;p&gt;Maintenant, les utilisateurs verront uniquement ce à quoi ils doivent avoir accès à la racine de leur Nextcloud.&lt;/p&gt;
&lt;p&gt;Par exemple, pour mon utilisateur Pierre qui fait partie du groupe Comptabilité :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="10.png" alt="image-20220423114901387" /&gt;&lt;/p&gt;
&lt;h3 id="autorisation-avancée"&gt;&lt;a href="#autorisation-avanc%c3%a9e" class="header-anchor"&gt;&lt;/a&gt;Autorisation avancée
&lt;/h3&gt;&lt;p&gt;Il est possible d'aller encore plus loin dans les autorisations.&lt;/p&gt;
&lt;p&gt;Je pourrais souhaiter qu'un utilisateur qui fait partie d'un groupe (ayant des autorisations d'écriture) ait finalement q'un droit de lecture (un stagiaire par exemple). Pour cela dans les détails d'un dossier, des règles d'autorisations avancées peuvent être appliquées :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="11.png" alt="image-20220423115612503" /&gt;&lt;/p&gt;
&lt;p&gt;Ici, je dis que Pierre du groupe Comptabilité peut finalement que lire et non modifier ce qui se trouve dans ce dossier :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="12.png" alt="image-20220423115750654" /&gt;&lt;/p&gt;
&lt;h2 id="ligne-de-commande"&gt;&lt;a href="#ligne-de-commande" class="header-anchor"&gt;&lt;/a&gt;Ligne de commande
&lt;/h2&gt;&lt;p&gt;L'intégralité de la configuration peut être réalisé en ligne de commande via &lt;code&gt;occ&lt;/code&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:create &amp;lt;name&amp;gt;&lt;/code&gt; → create a group folder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:delete &amp;lt;folder_id&amp;gt; [-f|--force]&lt;/code&gt; → delete a group folder and all its contents&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:expire&lt;/code&gt; → trigger file version and trashbin expiration (see &lt;a href="https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/file_versioning.html"&gt;Nextcloud docs for versionning&lt;/a&gt; and &lt;a href="https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/trashbin_configuration.html"&gt;Nextcloud docs for the trash bin&lt;/a&gt; for details)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:group &amp;lt;folder_id&amp;gt; &amp;lt;group_id&amp;gt; [-d|--delete] [write|share|delete]&lt;/code&gt; → assign groups and their rights to a group folder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:list&lt;/code&gt; → list configured group folders&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:permissions&lt;/code&gt; → configure advanced permissions (see below for details)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:quota &amp;lt;folder_id&amp;gt; [&amp;lt;quota&amp;gt;|unlimited]&lt;/code&gt; → set a quota for a group folder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:rename &amp;lt;folder_id&amp;gt; &amp;lt;name&amp;gt;&lt;/code&gt; → rename a group folder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:scan &amp;lt;folder_id&amp;gt;&lt;/code&gt; → trigger a filescan for a group folder&lt;/li&gt;
&lt;li&gt;&lt;code&gt;occ groupfolders:trashbin:cleanup &lt;/code&gt; → empty the trashbin of all group folders&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;&lt;a href="#conclusion" class="header-anchor"&gt;&lt;/a&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Group Folders permet d'aller beaucoup plus loin dans la gestion des droits que peut le faire naturellement Nextcloud.&lt;/p&gt;
&lt;p&gt;Et surtout, ces données ne sont pas dépendante d'un utilisateur.&lt;/p&gt;
&lt;p&gt;Bien entendu, cela est synchronisable avec les clients desktop Nextcloud Windows, Mac, Linux.&lt;/p&gt;</description></item><item><title>Docker-Compose : Nextcloud</title><link>https://beta.slash-root.fr/docker-compose-nextcloud/</link><pubDate>Mon, 13 Dec 2021 11:37:28 +0100</pubDate><guid>https://beta.slash-root.fr/docker-compose-nextcloud/</guid><description>&lt;img src="https://beta.slash-root.fr/docker-compose-nextcloud/cover.png" alt="Featured image of post Docker-Compose : Nextcloud" /&gt;&lt;h2 id="docker-composeyml"&gt;&lt;a href="#docker-composeyml" class="header-anchor"&gt;&lt;/a&gt;docker-compose.yml
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;db&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;mariadb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud_mariadb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;restart&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;unless-stopped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;command&lt;/span&gt;: --&lt;span style="color:#ae81ff"&gt;transaction-isolation=READ-COMMITTED --binlog-format=ROW --skip-innodb-read-only-compressed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./db:/var/lib/mysql&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_ROOT_PASSWORD=password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_PASSWORD=password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_DATABASE=nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_USER=nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;APACHE_DISABLE_REWRITE_IP=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;TRUSTED_PROXIES=172.16.0.10&lt;/span&gt; &lt;span style="color:#75715e"&gt;# Si reverse proxy, mettre son IP sinon commenter la ligne&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;app&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;restart&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;unless-stopped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;8084&lt;/span&gt;:&lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;links&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;db&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;./nextcloud:/var/www/html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_PASSWORD=password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_DATABASE=nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_USER=nextcloud&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;MYSQL_HOST=db&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;APACHE_DISABLE_REWRITE_IP=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;TRUSTED_PROXIES=172.16.0.10&lt;/span&gt; &lt;span style="color:#75715e"&gt;# Si reverse proxy, mettre son IP sinon commenter la ligne&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>