Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/byesga/tutos/plugins/plxHCaptcha/plxHCaptcha.php:1) in /usr/www/users/byesga/tutos/core/lib/class.plx.feed.php on line 273
Bye Gafam, les tutos ! https://tutos.bye-gafam.org/ fr while ( ! geek) code_again(); Sun, 22 Mar 2020 17:18:00 +0100 PluXml Duplicacy : Sauvegarder sur le Cloud avec chiffrement local https://tutos.bye-gafam.org/article22/duplicacy-sauvegardes-avec-chiffrement-local https://tutos.bye-gafam.org/article22/duplicacy-sauvegardes-avec-chiffrement-local <p>Comment sauvegarder sur le Cloud de façon rapide, fiable et chiffrée.</p> <p><br /> &nbsp;</p><h2># Duplicacy c'est quoi ?</h2> <p>C'est de la balle! C'est une solution de backup qui permet de faire de la sauvegarde complète ou incrémentale sur le support de votre choix.<br /> Celà peut être un autre disque local, ou un emplacement FTP, ou sur le Cloud S3(Amazon, Wasabi, DigitalOcean, Minio et), Google(GCP, Google Drive) ou chez Microsoft (Azure, Onedrive), ou sur du OpenSwift ou même OVH pour ceux qui ont conservé&nbsp; leur compte chez feu Hubic.</p> <p>Pour la liste complète des <a href="https://forum.duplicacy.com/t/supported-storage-backends/1107">stockages supportés c'est ici.</a></p> <p>Mais là où c'est intéressant, c'est qu'on peut chiffrer la sauvegarde en local, et pour encore plus de sécurité on peut effectuer le chiffrement en ajoutant sa propre clé privé RSA.</p> <p>Le code est opensource.</p> <p>L'utilisation du client en ligne de commande est gratuite pour les particuliers.<br /> Ceux qui le souhaitent peuvent bénéficier d'une interface Web mais elle est payante, ceci dit le prix n'est pas excessif à mon sens et la qualité du logiciel en vaut largement le prix.</p> <h2>&nbsp;</h2> <h2># Installation</h2> <p>Pour installer Duplicacy (sur Raspberry), il existe un playbook Ansible prêt à l'emploi :</p> <pre> git clone <a href="https://github.com/share-me/init_raspberry">https://github.com/share-me/init_raspberry</a> cd init_raspberry</pre> <p>Vérifiez que les variables par défaut soient bonnes dans le répertoire <strong>group_vars/all/</strong><br /> puis lancer le playbook uniquement sur la partie Duplicacy, comme indiqué dans le fichier README</p> <pre> ansible_playbook 4.duplicacy.yml</pre> <p>&nbsp;</p> <h2># Créer l'emplacement de la sauvegarde</h2> <p>Je ne vais pas expliquer ce point en détail car il existe beaucoup de stockage différents.</p> <p>Faites en sorte d'avoir créé le repertoire sur votre disque local/FTP ou le bucket/container s'il s'agit du cloud, et de pouvoir y accéder avec tout ce qu'il faut (password, token, etc)</p> <p><br /> Pour savoir ce qui est nécessaire, je vous renvoie encore à la <a href="https://forum.duplicacy.com/t/supported-storage-backends/1107">liste des stockages supportés par Duplicacy</a>.</p> <p>&nbsp;</p> <p>&nbsp;</p> <h2># Créer un script de sauvegarde</h2> <p>&nbsp;</p> <p>L'exemple suivant concerne un cas pratique, effectuer la sauvegarde de mes contacts et agendas que j'auto héberge grâce à la <a href="http://tutos.bye-gafam.org/article3/radicale-synchronisation-contacts-et-calendrier-installation">solution Radicale comme expliqué ici</a> pour ceux que ca intéresse.<br /> Et mon emplacement de sauvegarde est HUBIC.</p> <p>&nbsp;</p> <p>Notez que Duplicacy a une particularité, il utilise des noms de variables précis.<br /> Vous aurez juste à modifier les noms de variable du bloc #auth, pour celà <a href="https://forum.duplicacy.com/t/passwords-credentials-and-environment-variables/">je vous renvoie à la documentation</a> encore pour savoir comment vous devez nommer vos variables, c'est la 3eme colonne.</p> <p>&nbsp;</p> <p>&nbsp;</p> <pre> #!/bin/bash # ceci est mon script sauvegarder_radicale.ksh # remote storage export storage_url=hubic://Jarvis/Radicale/ export storage_name=radicale # local repository export snapshot_id=radicale_snapshots export repository=/home/radicale/.config/radicale/collections # auth export DUPLICACY_${storage_name^^}_HUBIC_TOKEN=/root/hubic-token.json export DUPLICACY_${storage_name^^}_PASSWORD='mon_super_mot_de_passe_de_chiffrage' # backup LOG=/var/log/$(basename $0).log date | tee -a $LOG cd ${repository} duplicacy backup -stats -storage ${storage_name} | tee -a $LOG</pre> <h2>Initialiser le repertoire à sauvegarder</h2> <p><br /> Pour celà on copie colle tous les exports de variables qu'on a dans notre script</p> <p>Et on lance l'initialisation ainsi</p> <pre> cd ${repository} duplicacy init -encrypt -repository ${repository} -storage-name ${storage_name} ${snapshot_id} ${storage_url}</pre> <p>&nbsp;</p> <p>Voilà tout est prêt, on rend le script executable.<br /> Reste plus qu'à l'executer régulièrement ou à l'ajouter&nbsp; dans la crontab par exemple.</p> Sun, 22 Mar 2020 17:18:00 +0100 Nerd Radicale : Importer ses contacts et agendas https://tutos.bye-gafam.org/article21/radicale-synchronisation-contacts-et-calendrier-utilisation https://tutos.bye-gafam.org/article21/radicale-synchronisation-contacts-et-calendrier-utilisation <p>Utilisation d'un serveur Radicale pour la synchronisation des contacts et calendriers ( CardDav / Caldav)</p><h2># Prelude</h2> <p>Vous avez suivi mon tuto sur <a href="https://tutos.bye-gafam.org/../article3/radicale-synchronisation-contacts-et-calendrier-installation">l'installation d'un serveur Radicale</a> sur le Raspberry?<br /> Vous êtes capables de vous connecter à l'interface Radicale, et vous vous souvenez bien de l'identifiant et du mot de passe ?<br /> Bien.</p> <p>Vous êtes prêts pour les étapes suivantes ?</p> <ol> <li>Exporter vos agendas</li> <li>Exporter vos contacts (carnet d'adresses)</li> <li>Créer dans Radicale un nouvel agenda et un nouveau carnet d'adresses</li> <li>Importer votre agenda</li> <li>Importer vos contacts</li> <li>Synchroniser le mobile (Agenda et contacts)</li> </ol> <p>&nbsp;</p> <h2># Exporter son agenda</h2> <p>&nbsp;</p> <div>Il faut d'abord récupérer ses données.<br /> Pour Google Agenda, il faut aller dans "Paramètres et Partage" en cliquant à droite de l'agenda, puis "Exporter".<br /> Répéter l'opération s'il y a plusieurs agendas à récupérer.</div> <div>Normalement vous avez récupéré un fichier dont l'extension est <strong>.ICS</strong></div> <div>&nbsp;</div> <h2># Exporter ses contacts</h2> <div>Concernant les contacts, il va falloir les exporter au format vCard<br /> Répéter l'opération s'il y a plusieurs carnets d'adresses à récupérer.</div> <div>Normalement vous avez récupéré un fichier dont l'extension est <strong>.VCS</strong></div> <div> <h2>&nbsp;</h2> <h2># Créer ses collections</h2> <div>Dans Radicale, ce qu'on appelle une collection n'est ni plus ni moins qu'un carnet d'adresses ou un agenda.</div> <div>Se connecter à l'interface Radicale : <a href="http://192.168.0.254:5232">http://192.168.0.254:5232</a> à l'aide de l'un des identifiants créés précédemment.</div> <div>&nbsp;</div> <div>On créé une collection&nbsp; 'AddressBook" que l'on peut appeler "mes contacts"</div> <div>Évidemment, rien ne vous empêche de créer plusieurs carnet d'adresses, mais je conseille plutot d'en avoir un seul, vous pourrez toujours séparer les contacts plus tard dans des groupes "perso", "pro", etc</div> <div>&nbsp;</div> <div>On créé une autre collection "Calendar, journal and tasks" que l'on peux appeler "mon agenda" par exemple.<br /> Pour les agendas par contre, je créé autant d'agenda que voulu.</div> <div>&nbsp;</div> <div><br /> &nbsp;</div> <div>Radicale est petit, rapide et efficace, mais il fait le strict minimum,Et oui, il n'est pas possible d'importer ses fichiers <strong>.ICS</strong> et <strong>.VCF</strong> directement.</div> <p>Pour importer les fichiers, on va utiliser un logiciel sur l'ordinateur.</p> <p>Perso j'ai installé le logiciel <a href="https://www.thunderbird.net/fr/">Thunderbird</a>, c'est un logiciel qui sert à gérer ses emails, mais j'ai ajouté 2 extensions / addons:</p> <ul> <li><a href="https://addons.thunderbird.net/fr/thunderbird/addon/lightning/">Lightning</a> - pour gérer mon agenda</li> <li><a href="https://addons.thunderbird.net/fr/thunderbird/addon/cardbook/?src=ss">Cardbook</a> - pour gérer mes contacts</li> </ul> <p>&nbsp;</p> </div> <div> <h2># Importer ses calendriers dans Radicale</h2> <p>J'ouvre Thunderbird, puis l'addon Lightning (menu &gt; évènements et tâches &gt; agenda) ou directement l'icone Agenda dans la barre en haut directement</p> <p>&nbsp;</p> <p>Dans le cadre à gauche, clic droit &gt; "nouvel agenda" &gt; "sur le réseau"</p> <ul> <li>format: Caldav</li> <li>nom d'utilisateur: &lt;on laisse vide&gt;</li> <li><u>Emplacement</u>: http://192.168.0.254:5232/ludo/181459e1-0f03-27ec-d7b8-b7844d2919d1/</li> </ul> <p>Dans <u>Emplacement</u>, on va coller la valeur de <u>URL</u> qu'on aura récupéré dans l'interface Radicale.</p> <p>A l'ecran suivant, on appelle son agenda "mon agenda" par exemple, et dans adresse electronique on met "aucun"</p> <p>Il devrait vous demander à l'écran suivant votre identifiant et mot de passe.<br /> On valide, si ca passe, tout va bien.</p> <p>&nbsp;</p> <p>Vient maintenant l'import en lui même.</p> <p>On clique le menu en haut à droite (les 3 petites barres horizontales) &gt; évènements et tâches &gt; importer et je fournis le .ICS<br /> On choisit bien "mon agenda"</p> <p>Thunderbird va se bloquer pendant 2-3 minutes le temps de faire l'import.</p> <p>Il n'est pas impossible que Thunderbird rafraichisse mal l'agenda, il faut décocher/recocher la case pour rafraichir l'affichage correctement.<br /> Puis je répète cette opération pour autant d'agenda que je souhaite avoir</p> <div>&nbsp;</div> &nbsp; <h2># Importer ses contacts dans Radicale</h2> <div>Toujours dans Thunderbird, j'ouvre l'addon Cardbook via la petite icone dans la barre en haut</div> <div>&nbsp;</div> <div>A gauche, clic droit &gt;&nbsp; "nouveau carnet d'adresse", je choisis le type "distant", à l'écran suivant je conserve donc bien Carddav et je renseigne l'URL fournie par Radicale ainsi que les identifiants que j'avais choisi.</div> <div>Je clique sur "Valider", s'il ne se passe rien c'est que c'est bon (oui c'est débile)</div> <div>&nbsp;</div> <div>Ne reste plus qu'à importer en faisant je clic droit sur mon nouveau carnet d'adresse et je fais "importer des contacts depuis un fichier" en fournissant donc mon fichier vCard <strong>.VCS</strong></div> <div>La barre en bas indique le status de la synchronisation, il faut bien faire attention.</div> <div>&nbsp;</div> <div><img alt="" src="https://tutos.bye-gafam.org/data/medias/utilisation-radicale/Carddav_Cardbook.png" style="width: 340px; height: 86px;" /></div> <div>Tant que vous voyez (modifiés localement: xx=) celà signifie que la synchronisation est toujours en cours.<br /> Si ca ne bouge plus pendant 1min recliquez sur "Synchroniser"</div> <div>&nbsp;</div> <div>&nbsp;</div> &nbsp; <h2># Synchroniser ses contacts et agendas avec son mobile</h2> <div>A partir de là, vous avez donc tout réimporter, libre à vous de faire des modifications de vos contacts et agendas depuis vos addons Thunderbird Cardbook et Lightning</div> <div>&nbsp;</div> <div>Concernant la synchronisation mobile (c'est ce qui intéresse le plus en général), je peux vous conseiller dans le choix des applications:</div> <ul> <li>Les applications de <a href="https://tutos.bye-gafam.org/article15/applis-android-gestion-contacts" target="_blank">gestion de contact</a></li> <li>Les applications de <a href="https://tutos.bye-gafam.org/article14/gestion-l-agenda" target="_blank">gestion de calendrier</a></li> </ul> <p>&nbsp;</p> </div> <p>&nbsp;</p> Sun, 22 Mar 2020 16:48:00 +0100 Nerd Pi-hole : Bloquer la publicité à la maison https://tutos.bye-gafam.org/article16/installer-pi-hole-pour-bloquer-publicite-maison https://tutos.bye-gafam.org/article16/installer-pi-hole-pour-bloquer-publicite-maison <blockquote> <p>Installation d'un serveur Pi-hole pour le blocage des publicités sur le réseau domestique</p> <p>&nbsp;</p> <p>Ci-dessous l'installation manuelle, mais il existe un playbook Ansible prêt à l'emploi :</p> <p><a href="https://github.com/share-me/init_raspberry">https://github.com/share-me/init_raspberry</a></p> </blockquote><h2># Pourquoi installer un serveur Pi-Hole ?</h2> <p>Lorsque l'on souhaite se débarrasser des publicités lorsqu'on surfe, il existe la méthode maintenant bien connue du <strong>Adblock</strong> / <strong>uBlock </strong>, on bloque donc au niveau du navigateur Web comme Firefox / Chrome / Brave / etc</p> <p><strong>Pi-hole</strong> bloque la publicité en amont, au niveau de la BOX.</p> <p>&nbsp;</p> <p>Vous savez que le <strong>DNS </strong>est ce qui fait le lien entre une adresse Internet et son adresse IP.<br /> Actuellement votre <strong>BOX </strong>fait office de <strong>relai DNS</strong>, elle ne filtre rien, et retransmets toutes les demandes de site web à votre fournisseur Internet (Orange, Free, Bouygues, etc)</p> <p>A la place, ce sera <strong>Pi-hole</strong> qui fera office de <strong>relai </strong><strong>DNS</strong>, mais avant de retransmettre la demande il va vérifier si le site web ne fait pas partie de sa <strong>blacklist</strong>, si oui alors la requête part dans le trou noir.</p> <p>&nbsp;</p> <p style="text-align: center;"><img alt="Le trou noir de pi-hole" src="https://tutos.bye-gafam.org/data/medias/pi-hole/pihole_llc.png" style="width: 384px; height: 249px;" /></p> <p><br /> <strong>Le gros avantage</strong> de filtrer au niveau de la BOX c'est que n'importe quel appareil connecté à la BOX bénéficiera du blocage de la publicité, PC fixe, PC Portable, la tablette, smartphones, etc.<br /> Mais là où c'est encore plus intéressant c'est qu'<strong>il</strong><strong> va bloquer également les publicités qui normalement s'affichent dans les applications du mobile ou de la tablette.</strong></p> <p>&nbsp;</p> <p>En fait celà bloque ce que vous voulez, la publicité mais également les traqueurs si vous souhaitez et vous pouvez même faire un simili de contrôle parental en bloquant des sites webs bien précis, à vous de gérer votre propre blacklist.</p> <p>&nbsp;</p> <h2># Comment l'installer</h2> <p>Comme vous l'avez bien compris, il faut avoir son propre serveur à la maison, ou un <a href="https://tutos.bye-gafam.org/article1/debuter-avec-raspberry">Raspberry</a> fait parfaitement l'affaire. Il existe des images Docker pour le Pi-Hole donc si vous avez un NAS Synology avec la fonctionnalité <a href="https://tutos.bye-gafam.org/article5/docker-conteneurisation-services">Docker</a> activée c'est aussi une solution.</p> <p>&nbsp;</p> <p>Pour l'installation, c'est pas bien compliqué, votre serveur doit avoir une adresse IP fixe et il suffit de lancer cette commande puis de suivre sagement la procédure :-)</p> <p class="header-subtitle2"><code><span style="font-family: &quot;andale mono&quot;, monospace;"><span>curl -sSL https://install.pi-hole.net | </span><span>bas</span>h</span><span data-mce-bogus="1" data-mce-type="format-caret" id="_mce_caret"><span style="font-family: &quot;andale mono&quot;, monospace;"></span></span></code></p> <p>(je conseille de configurer les DNS de CloudFlare, ce sont les plus rapides)</p> <p>Dans les lignes qui défilent, notez bien le mot de passe qui va apparaitre</p> <p>Reste plus qu'à se connecter sur l'interface <a href="http://pi.hole/admin/">http://pi.hole/admin/</a></p> <p>Par défaut, plusieurs listes anti-publicité sont déjà installées.</p> <h2>&nbsp;</h2> <h2># Modifier la configuration de sa BOX</h2> <p>Pi-hole est installé mais ce n'est pas pour autant que tous les appareils de la maison vont l'utiliser.</p> <p>Pour celà, se connecter à la BOX et modifier le DNS pour y mettre l'adresse IP qui correspond au Raspberry. (parfois il est nécessaire de redémarrer la BOX)</p> <p>La prochaine fois que vos appareils se connecteront au WIFI, ils recevront la configuration DHCP qui contient comme DNS l'adresse IP de votre <strong>pi-hole</strong>.</p> <p>&nbsp;</p> <p>Si la procédure a fonctionné, vous devriez voir dans l'interface <a href="http://pi.hole/admin/">http://pi.hole/admin/</a> toutes les requetes de vos appareils.</p> <h2>&nbsp;</h2> <h2># Pour les curieux</h2> <p>Le log d'installation se trouve dans <code>/etc/pihole</code><br /> changer le mot de passe de l'interface admin : <code>pihole -a -p</code><br /> mettre à jour pi-hole : <code>pihole -up</code></p> <p>Dans le dashboard pihole, ce sont les IPs qui s'affichent et non les hostnames, pour avoir les hostnames il faut activer le DHCP de Pi-Hole (et désactiver celui de la BOX du coup).<br /> Ou si vous voulez conserver le DHCP de la box, alors il y a une seconde option qui consiste à activer le "conditional forwarding" dans les options pi-hole.</p> <p>&nbsp;</p> Fri, 01 Mar 2019 23:42:00 +0100 Nerd Android : Gestion de l'agenda en Caldav https://tutos.bye-gafam.org/article14/gestion-l-agenda https://tutos.bye-gafam.org/article14/gestion-l-agenda <blockquote> <p>Les solutions pour gérer son agenda / calendrier avec le protocole Caldav</p> </blockquote><p>Il faut d'abord installer un connecteur Caldav (DavDroid pour le plus connu), ensuite les applications de calendrier ci-dessous pourront récupérer les informations CalDav depuis ce connecteur.</p> <p>A noter qu'il existe UNE application d'Agenda (OneCalendar) qui gère nativement CalDav il n'y a donc pas besoin d'ajouter un connecteur.</p> <hr /> <h2><img alt="" src="https://tutos.bye-gafam.org/data/medias/gestion-de-l-agenda/onecalendar.png" style="width: 50px; height: 50px;" />&nbsp; Onecalendar (Code Spark)</h2> <p>C'est la seule application d'Agenda qui possède un connecteur CalDav intégré. Hormis Caldav, elle gère aussi les protocoles webcal, exchange, iCloud<br /> A noter qu'elle ne fonctionne pas sur <u>Posteo</u> : "Caldav Server does not support sync-token"</p> <p><strong>Le plus</strong> : L'application est plutôt jolie et fonctionne bien, la seule avec CalDav intégré pas besoin d'un connecteur tiers<br /> <strong>Le moins</strong> : Le choix limité de la fréquence de synchro auto (directe, aucune, 8,12,24h), un RDV ajouté sur un autre appareil pourrait donc être redescendu au pire jusqu'à 8h.</p> <hr /> <p>&nbsp;</p> <div> <h3><img alt="" src="https://tutos.bye-gafam.org/data/medias/gestion-de-l-agenda/ical.tb.png" style="float: left;" /> &nbsp;iCal Import/Export CalDAV (Lukas Aichbauer)</h3> </div> <p>&nbsp;</p> <div>&nbsp;Compatible Baikal, Fruux, GMX, Owncloud, Nextcloud, iCloud, Posteo, Web.de, Fastmail.com, Synology Calendar</div> <div>&nbsp;</div> <div><b>la version gratuite :</b></div> <ul> <li>import (depuis local, FTP, web, Webdav, etc)</li> <li>export (vers Email/Bluetooth + les mêmes que pour l'import)</li> <li>transfert entre agendas</li> </ul> <div><b>la version payante (3.59€) :</b></div> <ul> <li>import/export/transfert comme la version gratuite, mais planification possible</li> <li>synchronisation CalDAV</li> <li>Purge/archive du calendrier</li> </ul> <p>&nbsp;<b>le plus</b> :</p> <ul> <li>Limiter les synchronisation CalDav au réseau Wifi, même à une liste de Wifi de confiance.</li> <li>sauvegarder les réglages de l'appli pour une réinstallation</li> <li>cryptage des identifiants/mot de passe des comptes configurés</li> <li>journalisation du CalDav agréable à lire</li> </ul> <div>&nbsp;</div> <div><b>le moins</b> :</div> <ul> <li>Interface fouilli, on pourrait fusionner certaines icones</li> <li>pas de CardDav</li> </ul> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <h2><img alt="" src="https://tutos.bye-gafam.org/data/medias/gestion-de-l-agenda/calendarsync.png" style="width: 50px; height: 50px; float: left;" />&nbsp; calendarSync</h2> <p>&nbsp;</p> <p>&nbsp;<b>le plus</b> :</p> <ul> <li>Fonctionne parfaitement bien</li> </ul> <div>&nbsp;</div> <div><b>le moins</b> :</div> <ul> <li>J'ai eu un truc bizarre, il m'a rajouté un calendrier Google sans que je le lui demande</li> </ul> <hr /> <h2><img alt="" src="https://tutos.bye-gafam.org/data/medias/gestion-de-l-agenda/opensync.png" style="float: left; width: 50px; height: 50px;" />&nbsp; OpenSync :</h2> <p>&nbsp;</p> <p><b>le plus</b> :</p> <ul> <li>Gère également les contacts (Carddav)</li> </ul> <div>&nbsp;</div> <div><b>le moins</b> :</div> <ul> <li>Rien à signaler</li> </ul> <p>&nbsp;</p> <p>&nbsp;</p> <hr /> <h2><img alt="" src="https://tutos.bye-gafam.org/data/medias/gestion-de-l-agenda/caldavsyncfree.png" style="float: left; width: 50px; height: 42px;" />&nbsp; Caldav Sync Free&nbsp; :</h2> <p>&nbsp;</p> <p>&nbsp;<b>le plus</b> :</p> <ul> <li>Très simple à l'utilisation</li> </ul> <div>&nbsp;</div> <div><b>le moins</b> :</div> <ul> <li>Il n'y a pas de fréquence de rafraichissement</li> </ul> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> Wed, 27 Feb 2019 14:44:00 +0100 Nerd Radicale : Installer un serveur Carddav/Caldav https://tutos.bye-gafam.org/article3/radicale-synchronisation-contacts-et-calendrier-installation https://tutos.bye-gafam.org/article3/radicale-synchronisation-contacts-et-calendrier-installation <blockquote> <p>Installation d'un serveur Radicale pour la synchronisation des contacts et calendriers ( CardDav / Caldav)</p> <p>&nbsp;</p> <p>Ci-dessous l'installation manuelle, mais il existe un playbook Ansible prêt à l'emploi :</p> <p><a href="https://github.com/share-me/init_raspberry">https://github.com/share-me/init_raspberry</a></p> </blockquote><h2>Pourquoi installer un serveur Radicale ?</h2> <div align="left" style="float: left;"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> <div align="center"><svg height="300" width="200" xmlns="http://www.w3.org/2000/svg"> <path d="M 186,188 C 184,98 34,105 47,192 C 59,279 130,296 130,296 C 130,296 189,277 186,188 z" fill="#a40000"></path> <path d="M 73,238 C 119,242 140,241 177,222 C 172,270 131,288 131,288 C 131,288 88,276 74,238 z" fill="#ffffff"></path> <g fill="none" stroke="#4e9a06" stroke-width="15"> <path d="M 103,137 C 77,69 13,62 13,62"></path> <path d="M 105,136 C 105,86 37,20 37,20"></path> <path d="M 105,135 C 112,73 83,17 83,17"></path> </g> </svg></div> <div align="center">&nbsp;</div> <div align="center">&nbsp;</div> <div align="center">&nbsp;</div> <div align="center">&nbsp;</div> <div align="center">&nbsp;</div> </div> <div align="left">Radicale est un serveur CalDAV (calendriers, todo-lists) et CardDAV (contacts, groupes de contacts)</div> <div align="left">Il est libre, open-source et sous GPLv3.</div> <div align="center">&nbsp;</div> <div align="left">Il permet de synchroniser ses contacts, groupes de contacts, et calendriers.</div> <div align="left">&nbsp;</div> <div align="left">Plusieurs autres <a href="https://en.wikipedia.org/wiki/Comparison_of_CalDAV_and_CardDAV_implementations#Server_implementations" title="alternatives">alternatives</a> sont possibles, parmi lesquelles Baïkal</div> <div> <p><strong>ATTENTION:</strong> Avant de vous lancer dans l'installation d'un serveur Radicale pour auto-héberger vos propres données de contacts et calendrier, j'espère que vous avez bien conscience qu'il est de votre responsabilité de faire des sauvegardes régulières de ces données.</p> <h2>&nbsp;</h2> <h2>&nbsp;</h2> <h2>&nbsp;</h2> <h2>&nbsp;</h2> <h2>&nbsp;</h2> <h2># Installer python et son module pip</h2> </div> <div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"># avec le user <strong>pi</strong></div> <pre> <code>sudo apt -y install python3 python3-pip apache2-utils</code></pre> <h2>&nbsp;<br /> # Installation de Radicale et ses librairies</h2> <div> <p><code>sudo useradd radicale -m -s /bin/bash</code></p> <p><code>sudo mkdir -p /var/log/radicale/</code></p> <p><code>sudo chown -R radicale:radicale /var/log/radicale</code></p> <p><code>sudo passwd radicale</code></p> <p><code>sudo su - radicale</code></p> <p>&nbsp;</p> </div> <div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"># avec user radicale</div> <p><code>mkdir -p ~/.config/radicale/</code></p> <p><code>mkdir -p&nbsp; ~/.config/systemd/user/</code></p> <p><code>pip3 install --upgrade radicale radicale[bcrypt] passlib[bcrypt]</code></p> <div>&nbsp;</div> <div> <h2># Création du fichier de mot de passe&nbsp; (chiffrage bcrypt)</h2> <p><code>htpasswd -B -c&nbsp; ~/.config/radicale/users nom_du_compte1</code></p> <p><code>htpasswd -B&nbsp;&nbsp;&nbsp;&nbsp; ~/.config/radicale/users nom_du_compte(x)</code></p> </div> <div> <p>En mettant bien évidemment ce que vous voulez comme user à la place de <strong>nom_du_compte1</strong></p> <h3>&nbsp;</h3> <p>&nbsp;</p> <h2># Créer un fichier de configuration</h2> </div> <div>&nbsp;</div> <div><strong>nano ~/.config/radicale/config</strong></div> <pre> [auth] type = htpasswd htpasswd_filename = ~/.config/radicale/users # encryption method used in the htpasswd file htpasswd_encryption = bcrypt # Average delay after failed login attempts in seconds delay = 10 [storage] filesystem_folder = ~/.config/radicale/collections [server] # ouvert à toute IP hosts = 0.0.0.0:5232 max_connections = 2 # 1 Megabyte max_content_length = 10000000 # 10 seconds timeout = 10 </pre> <blockquote> <p><u>/!</u>&nbsp; Pour plus d'option, voir le site officiel<br /> <a href="https://radicale.org/3.0.html#documentation/configuration" title="https://radicale.org/configuration/">https://radicale.org/3.0.html#documentation/configuration</a></p> </blockquote> <div> <h3>&nbsp;</h3> <h3>&nbsp;</h3> <h2># Créer un fichier de logging (format python)</h2> </div> <div>&nbsp;</div> <div><code><strong>nano ~/.config/radicale/logs.conf </strong></code></div> <pre> [loggers] keys = root [handlers] keys = file [formatters] keys = full [logger_root] # Change this to DEBUG or INFO for higher verbosity. level = INFO handlers = file [handler_file] class = handlers.RotatingFileHandler # Specify the output file and parameter for rotation here. # See https://docs.python.org/3/library/logging.handlers.html#logging.handlers.RotatingFileHandler # Example: rollover at 100000 kB and keep 10 files (means 1 MB) args = ('/var/log/radicale/log', 'a', 100000, 10) formatter = full [formatter_full] format = %(asctime)s - [%(thread)x] %(levelname)s: %(message)s</pre> <blockquote> <p><u>/!</u>&nbsp; Pour plus d'option, voir le site officiel<br /> <a href="https://docs.python.org/3/library/logging.config.html#configuration-file-format" title="https://docs.python.org/3/library/logging.config.html#configuration-file-format">https://docs.python.org/3/library/logging.config.html#configuration-file-format</a></p> </blockquote> <div>&nbsp;</div> <div>&nbsp;</div> <div>&nbsp; <h2># Créer un fichier de service systemd</h2> </div> <div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;"># revenir au user pi</div> <div>&nbsp;</div> <div><code>sudo nano /lib/systemd/system/radicale.service</code></div> <pre> [Unit] Description=A simple CalDAV (calendar) and CardDAV (contact) server [Service] ExecStart=/usr/bin/env python3 -m radicale Restart=on-failure User=radicale Group=radicale [Install] WantedBy=multi-user.target</pre> <p>&nbsp;</p> <h2># Activer le service Radicale</h2> <p><code>sudo systemctl enable radicale.service</code></p> <p><code>sudo systemctl start radicale</code></p> <p><code>systemctl status radicale</code></p> <h2>&nbsp;</h2> <h2># Vérifier les logs</h2> <p><code>journalctl --unit radicale.service</code></p> <p>Ou bien on jette un oeil dans le log</p> <p><code>cat&nbsp; /var/log/radicale/log</code></p> <pre> 2019-02-18 22:07:15,414 - [76f75640] INFO: Starting Radicale 2019-02-18 22:07:15,415 - [76f75640] INFO: Authentication type is 'htpasswd' 2019-02-18 22:07:16,612 - [76f75640] INFO: Storage type is 'multifilesystem' 2019-02-18 22:07:16,623 - [76f75640] INFO: Rights type is 'owner_only' 2019-02-18 22:07:16,623 - [76f75640] INFO: Web type is 'internal' 2019-02-18 22:07:16,633 - [76f75640] INFO: Listening to 'jarvis' on port 5232 2019-02-18 22:07:16,634 - [76f75640] INFO: Radicale server ready</pre> <h2># Utilisation</h2> <p>Je vous invite à lire l'article concerné sur <a href="https://tutos.bye-gafam.org/../article21/radicale-synchronisation-contacts-et-calendrier-utilisation">l'utilisation de Radicale</a></p> Tue, 26 Feb 2019 13:17:00 +0100 Nerd Android : Gestion des contacts https://tutos.bye-gafam.org/article15/applis-android-gestion-contacts https://tutos.bye-gafam.org/article15/applis-android-gestion-contacts <blockquote> <p>Les solutions pour son carnet d'adresse avec le protocole CardDav</p> </blockquote><p>Il faut d'abord installer un connecteur CardDav (DavDroid pour le plus connu), ensuite les applications ci-dessous pourront récupérer les informations CardDav depuis ce connecteur.</p> <p>A noter qu'il existe UNE application d'Agenda (OneCalendar) qui gère nativement CalDav il n'y a donc pas besoin d'ajouter un connecteur.</p> <p>2 méthodes de gérer les groupes : par Catergorie ou par Vcard diférente</p> <p>&nbsp;</p> <div> <h2><strong>Carddav sync free</strong></h2> <p><strong>Le plus:</strong></p> <ul> <li>synchro unidirectionnelle possible (que du serveur vers telephone)</li> <li>gestion des conflits (serveur ou tel a "raison")</li> <li>fréquence de synchro</li> <li>choix du type de réseau (4G, Wifi, etc)</li> </ul> <p><strong>le moins:</strong></p> <ul> <li>a ignoré mes groupes lors de la synchro, à retester avec Radicale</li> </ul> <h2><strong>opensync</strong></h2> <p><strong>Le plus:</strong></p> <ul> <li>Gère les 2 protocoles: caldav et carddav</li> </ul> <p><strong>Le moins:</strong></p> <ul> <li>je n'ai pas réussi à le faire fonctionner avec tous les serveurs Carddav</li> </ul> <p>&nbsp;</p> <h2><strong>peoplesync</strong></h2> <p><strong>Le plus:</strong></p> <ul> <li>Très simple</li> </ul> <p><strong>Le moins:</strong></p> <ul> <li>Ne gère pas les groupes</li> </ul> <p>&nbsp;</p> <h2><strong>contactsync</strong></h2> <p><strong>Le plus:</strong></p> <ul> <li>fonctionne bien</li> </ul> <p><strong>Le moins:</strong></p> <ul> <li>Pas très intuitif</li> <li>le connecteur est nommé "contacts", et on ne peut le modifier, donc risque de le confondre avec d'autres</li> </ul> <p>&nbsp;</p> </div> <p>&nbsp;</p> Fri, 22 Feb 2019 12:57:00 +0100 Nerd Pense-bête Docker https://tutos.bye-gafam.org/article9/pense-bete-docker https://tutos.bye-gafam.org/article9/pense-bete-docker <blockquote> <p>Les commandes de base pour Docker</p> </blockquote><h1>Les commandes de base</h1> <div>Si vous ne savez vraiment&nbsp; ce qu'est Docker, je vous invite à lire cet article : <a href="https://tutos.bye-gafam.org/article5/docker-conteneurisation-des-services" title="Docker - Contenairisation des services">Docker - Conteneurisation des services</a></div> <h2>Pour les conteneurs</h2> <h4>Récupérer une image Debian sur le Docker Hub</h4> <pre> <code>root@docker:~# docker pull debian </code></pre> <p>Cette commande est facultative dans la mesure où la commande "docker run" va de toutes façons faire un "<code>docker pull</code>" si elle ne trouve pas l'image dans la bibliothèque d'images locales.</p> <p>&nbsp;</p> <h4>création d'un conteneur à partir de l'image nginx</h4> <pre> <code>root@docker:~# docker run nginx -i : conserve le STDIN ouvert même si le conteneur n'est plus rattaché -t : attribue un terminal TTY -d : Lancer le conteneur en background (retourne l'ID du conteneur) -p 8080:80 : mappe le port 8080 de l'hôte sur le port 80 du conteneur -e MYSQL_ROOT_PASSWORD=password : créer la variable d'environnement </code><code><code>MYSQL_ROOT_PASSWORD</code> -v /path/local:/path/conteneur : si on souhaite une persistance des données hors conteneur --name : nom du conteneur (un nom aléatoire est généré sinon) --rm : Supprime automatiquement le conteneur après l’avoir quitté </code></pre> <p>Il existe beaucoup d'autres arguments évidemment.</p> <p>A noter qu'on peut sortir d'un conteneur dans le détruire avec <code>Ctrl + P + Q </code></p> <h4>Lister les conteneurs lancés</h4> <pre> <code>root@docker:~# docker ps -a : afficher tous les conteneurs (lancés ou non) </code></pre> <h4>Exécuter une commande</h4> <pre> <code>root@docker:~# docker exec &lt;conteneurid&gt; /bin/bash -c 'ls /var/www/html' -ti &lt;conteneurid&gt; /bin/bash : ouvre un terminal de commande </code></pre> <h4>Se rattacher à un conteneur qui tourne</h4> <pre> <code>root@docker:~# docker attach &lt;conteneurid&gt; </code></pre> <h4>Stop / start / pause / unpause</h4> <pre> <code>root@docker:~# docker stop &lt;conteneurid&gt; root@docker:~# docker start &lt;conteneurid&gt; root@docker:~# docker pause &lt;conteneurid&gt; root@docker:~# docker unpause &lt;conteneurid&gt; </code></pre> <h4>Supprimer un conteneur</h4> <pre> <code>root@docker:~# docker rm &lt;conteneurid&gt; </code></pre> <p>Le conteneur doit avoir été arrêté avant d'être supprimé</p> <h2>&nbsp;</h2> <h2>Les images</h2> <h4>créer une image</h4> <pre> <code> docker build -f DockerFile </code></pre> <p>Le Dockerfile est un fichier au format YAML qui décrit la façon dont il faut créer l'image</p> <p>&nbsp;</p> <h4>Rechercher une image sur le Docker hub</h4> <pre> <code>root@docker:~# docker search debian --filter "is-official=true" : Rechercher que les images officielles </code></pre> <h4>Lister les images disponibles en local</h4> <pre> <code>root@docker:~# docker images </code></pre> <h4>Supprimer une image</h4> <pre> <code>root@docker:~# docker rmi &lt;imageid&gt; --force : forcer la suppression </code></pre> <p>Pour être supprimée, une image ne doit être utilisée par aucun conteneur</p> <h4>Sauvegarde une image dans un fichier tar</h4> <pre> <code>root@docker:~# docker save &lt;imageid&gt; -o /tmp/debian.tar </code></pre> <h4>Charger une image depuis un tar</h4> <pre> <code>root@docker:~# docker load -i /tmp/debian.tar </code></pre> <h4>Commiter un conteneur vers une image</h4> <pre> <code>root@docker:~# docker commit &lt;conteneurid&gt; &lt;imagename&gt; </code></pre> <p>Il est possible de mettre à jour une image à partir d'un de ses conteneurs, mais la bonne pratique veut qu'on créé une image from scratch depuis un DockerFile plutôt</p> <h2>&nbsp;</h2> <h2>Debug</h2> <h4>Obtenir des informations sur une image / un conteneur</h4> <pre> <code>root@docker:~# docker inspect &lt;conteneurid|imageid&gt; </code></pre> <h4>Afficher les ressources du conteneur</h4> <pre> <code>root@docker:~# docker stats &lt;conteneurid&gt; </code></pre> <h4>Voir le STDOUT d'un conteneur</h4> <pre> <code>root@docker:~# docker logs &lt;conteneurid&gt; -f : suivre en permanence les logs de conteneurs (correspond à tail -f) -t : affiche date et l'heure de reception &nbsp;</code></pre> <p>&nbsp;</p> <div>&nbsp;</div> <p>&nbsp;</p> <div>&nbsp;</div> <div>&nbsp;</div> <div>&nbsp;</div> Tue, 29 Jan 2019 14:11:00 +0100 Nerd Ansible : Gestion et Configuration d'un parc Linux https://tutos.bye-gafam.org/article7/ansible-gestion-et-configuration-parc-linux https://tutos.bye-gafam.org/article7/ansible-gestion-et-configuration-parc-linux <blockquote> <p>Comprendre à quoi sert Ansible, comment l'installer et effectuer un test simple comme exemple.</p> </blockquote><h2>C'est quoi Ansible</h2> <p>Ansible est un logiciel pour la gestion de la configuration d'un parc de serveurs.</p> <p>Il offre des commandes permettant d'automatiser un deploiement d'infrastructure, par exemple sur un serveur d'enchainer la création d'un user avec mots de passe, installer un serveur Apache, envoyer un fichier de confguration, redémarrer le service Apache, etc</p> <p>Le résultat de ces commandes est retourné au format JSON sur la sortie standard.</p> <div>Là où ca devient encore plus intéressant, c'est qu'on peut regrouper toutes les commandes en un scenario (playbook) et que tout ca peut être rejoué autant de fois que voulu car<b> ansible est idempotent</b> c'est à dire qu'il va vérifier l'état de la machine cible et ne réappliquer que le strict nécessaire pour obtenir l'état final voulu.</div> <div>&nbsp;</div> <div>Ansible est une alternative aux solutions telles que Puppet ou Chef, à la différence qu'Ansible ne requiert aucun client côté machine cible, il ne requiert qu'un accès SSH et ca c'est de la balle!</div> <h2>Dans la vraie vie ca donne quoi ?</h2> <p>On peut donc executer des commandes de base, ou appeler des scenarios complets (fichier playbook) écrits en language YAML.<br /> Dans les 2 cas on peut appliquer celà sur une machine ou un groupe de machines.<br /> A noter qu'il est possible lors du lancement d'un playbook de spécifier un tag, seuls les blocs du Playbook ayant ce tag seront alors joués.</p> <p>En lancant un scenario, vous allez par exemple faire tout ca en 2min</p> <ul> <li>Créer un utilisateur “web_admin”</li> <li>Ajouter cet utilisateur aux sudoers</li> <li>Installer quelques outils systèmes</li> <li>Installer/configurer Nginx</li> <li>etc</li> </ul> <p>Imaginez que votre serveur crashe, avant vous alliez suivre le document Word pour tout réinstaller en 3h, imaginez que vous deviez le faire sur 4 serveurs web, vous allez y passer la journée.<br /> Là, celà prendra 5 minutes, que vous ayez 1 ou 10 serveurs d'ailleurs.<br /> &nbsp;</p> <p>C'est la même si vous voulez changer le password d'un utilisateur, vérifier le /tmp ou bien vous assurer que Apache tourne sur toutes les machines.<br /> En gros ca remplace tout vos petits scripts maison, sauf que c'est certainement plus fiable et surtout que c'est idempotent (chose que peu d'admins gèrent dans leur scripts à mon avis!)</p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <div> <h2>Installer Ansible</h2> <p>Je pars du principe que la machine Ansible maitre est sous Redhat / Centos (gestionnaire de package yum.)</p> <p><code>sudo yum install -y ansible</code></p> <p>&nbsp;</p> <p>Pour pouvoir se connecter en SSH sur les machines cibles, le user utilisé de la machine maitre (toto par exemple) doit envoyer sa clé publique sur toutes les machines cibles.<br /> Il le fait sur un compte distant (ansible par exemple) ayant des droits sudo.<br /> &nbsp;</p> <pre> # On ajoute la clé root sur le serveur cible</pre> </div> <pre> ssh-copy-id -i ~/.ssh/id_rsa.pub ansible@centos01</pre> <p>Evidemment on peut aussi le faire sur le compte root distant mais ce n'est pas conseillé.</p> <p>&nbsp;</p> <p>On teste la connexion root en installant à distance le package python.<br /> Ce paquet est normalement déjà présent par défaut (c'est un prérequis à Ansible côté client, le seul d'ailleurs)</p> <p>&nbsp;</p> <div> <pre> ssh ansible@centos01 "yum install -y python "</pre> <p>&nbsp;</p> <p>&nbsp;</p> <h2>Configuration de base</h2> <p>Voilà, Ansible est installé. Faisons un tour rapide sur les fichiers de base</p> <ul> <li> <p>/etc/ansible/ansible.cfg :Fichier de configuration par défaut, inutile d'y toucher pour le moment.</p> </li> <li> <p>/etc/ansible/roles/* :Ce dossier contient les rôles installés, nous verrons plus tard l'intérêt d'un rôle, inutile d'y toucher pour le moment.</p> </li> <li> <p>/etc/ansible/hosts : C'est l'inventaire contenant toutes les machines qu'on veut gérer. Il suit le format INI en gros avec des [sections]</p> </li> </ul> <pre> # /etc/ansible/hosts # Machines sans groupe 192.168.0.10 # IP directe mon_serveur # si on donne un hostname, ce dernier doit etre resolvable (par DNS, /etc/hosts, etc) 192.168.0.[220:230] # l'intervalle permet d'économiser l'écriture, n'hésitez pas! db[2:8].domain.com # C'est un groupe [DB_group] 192.168.0.200 192.168.0.205:52 # Si le port SSH n'est pas standard, on peut le préciser centos09 # Ces variables s'appliqueront à tout mon groupe DB_group [DB_group:vars] ansible_user=root # indique le user distant utilisé # Un autre groupe [Webserver_group] 192.168.0.200 # une machine peut faire partie de plusieurs groupes centos50 ansible_host=192.168.0.50 ansible_user=toto # on peut appliquer des variables à un host en particulier # Ceci est pour l'exemple mais il existe deja implicitement un groupe "all" contenant tous les hosts de l'inventaire (excepté localhost) [all] DB_group Webserver_group</pre> <p>L'inventaire est le coeur d'Ansible, donc je vous conseille de l'écrire avec beaucoup d'intelligence, ca rendra votre travail 100X plus facile ensuite.</p> <p>&nbsp;</p> <h1>&nbsp;</h1> <hr /></div> <div> <h2>Un exemple simple</h2> </div> <div> <p>Ansible fonctionne à partir de modules : file, user, stats, systemd,&nbsp; etc<br /> Chaque module prend différents paramètres et permet d'effectuer une action précise.</p> <p>Pour tester la bonne installation, nous allons utiliser le module ping mais attention ce n'est pas un ping au sens littéral mais un ping au sens Ansible, c'est à dire qu'il teste le bon fonctionnement de la liaison SSH puis de la présence de Python côté client.</p> <pre class="bash" style="font-family:monospace;"> <code>ansible -m ping centos01</code></pre> </div> <div> <blockquote>centos01 | SUCCESS =&gt; {<br /> "changed": false,<br /> "ping": "pong"<br /> }<br /> &nbsp;</blockquote> </div> <hr /> <p>N'hésitez pas à consulter le <a href="https://tutos.bye-gafam.org/article10/pense-bete-ansible" title="Pense-bête Ansible">Pense-bête Ansible</a> .</p> Sat, 19 Jan 2019 10:27:00 +0100 Nerd