Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierDomoPi

Bilan 2022

Bilan 2022

Bonjour à tous, l'heure est venue, déjà, (et même si c'est un peu en avance puisque l'année n'est pas encore terminée) de procéder au bilan de cette année 2022 ! Cette dernière est passée beaucoup trop rapidement, je ne l'ai pas vu passer, et cette sensation s'accroît encore plus chaque année.

Peu d'articles ont été publiés sur les 12 derniers mois, mais ils ont eu un certain succès, et certains d'entre vous ont d'ailleurs demandés plus de détails. Nous avons également quelques demandes d'articles spécifiques, et allons essayer d'y répondre du mieux possible.

La fréquentation du blog a légèrement diminuée, et j'imagine que c'est principalement dû à la baisse de régime des publications. On peut néanmoins se rendre compte que les anciens articles continuent d'attirer un trafic constant et c'est une bonne nouvelle.

La chose positive que je retiens de cette année passée est la communauté Telegram, qui a continué à s'agrandir (nous sommes aujourd'hui plus de 170 membres), et sur laquelle règne une bonne ambiance. Tous les sujets peuvent être abordés, aussi bien techniques que d'actualité, et les échanges de points de vue ou les demandes d'aide trouvent toujours des réponses éclairées.

Le point que je souhaite améliorer pour l'année à venir est la régularité, peu importe que ce soir toujours des articles longs ou non, cela dépend surtout des sujets abordés, mais maintenir un rythme plus régulier ne pourra qu'aider à garder cette motivation, cette passion (qui sont toujours présentes je vous rassure).

Je termine ce court bilan en vous souhaitant à tous ainsi qu'à vos proches, de passer de bonnes fêtes de fin d'année ! Profitez de chaque instant avec votre famille, amusez-vous, et revenez en forme l'année prochaine !

Un clavier Zigbee sous MQTT

Un clavier Zigbee sous MQTT

Depuis le temps que je suis dans le monde de la domotique, j'ai souvent entendu la difficulté de trouver un matériel bien spécifique : un clavier pour contrôler les entrées / sorties du domicile ou encore lancer des scènes.
Après quelques recherches, j'ai donc trouvé un pack d'alarme fonctionnant sous le protocole Zigbee. Vous l'aurez donc compris, nous allons dans cet article voir l'intégration du clavier dans Zigbee2MQTT, qui communique avec Jeedom dans mon cas. Les autres équipements du pack seront détaillés dans un prochain article.


Présentation du clavier

C'est le premier test de produit que j'écris, donc je vais essayer de faire au mieux pour vous le présenter. Pour commencer, voici quelques photos de l'emballage, où vous trouverez un descriptif en anglais et en allemand. Dans le kit est fourni une fixation par adhésif 3M ou par vis pour chaque équipement.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Nous allons voir plus en détails le clavier en lui-même, avec ci-dessous le dos de celui-ci. On y trouve un petit orifice pour permettre l'inclusion (entouré en rouge), ainsi qu'un contact anti sabotage (entouré en bleu). Le clavier est alimenté par 2 piles CR123A fournies. Je n'est pas encore assez de recul sur son autonomie pour le moment, qui variera d'un utilisateur à l'autre selon le nombre d'utilisation par jour, mais le fabricant annonce une autonomie de 6 mois.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Nous passons maintenant sur la partie avant, où se situe les touches du clavier, qui sont rétro-éclairées (un point positif) :

  • Sur le haut se trouvent 3 voyants qui indiquent l'état de la batterie (cercle rouge), un point d'exclamation (Not ready, que nous expliquerons plus loin (cercle vert)), et un voyant réseau (cercle bleu).
  • Au centre, nous avons le pavé numérique (cadre orange).
  • En bas se trouvent les boutons pour valider ou annuler la saisie d'un code (cercle noir).
  • Sur la droite, les 4 boutons de mode (cadre violet) prennent place et permettent les actions suivantes de haut en bas : Désarmement, Armement partiel, Armement total et SOS, qui peuvent être allumés en vert afin de remonter l'état de l'alarme.
  • Tout en bas, au niveau des 2 petit trous (cadre rose), se trouve le capteur de proximité, qui permet l'allumage du rétro-éclairage sur détetion de l'approche d'une main.
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

On retrouve sur le côté gauche du clavier les références, et sur le côté droit une zone avec des trous, qui correspond à l'emplacement du buzzer.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Pour utiliser le clavier, le principe est de choisir un des modes (hors SOS), puis de taper votre code et enfin de valider.
Pour déclencher le mode SOS, il faut rester le doigt appuyé durant 3 secondes sur le bouton adéquat.


Configuration

Pour intégrer ce clavier dans votre instance Zigbee2mqtt, vous devrez simplement vous munir d'un trombone et appuyer pendant quelques secondes dans le petit trou à l'arrière du clavier,  jusqu'à ce que le voyant réseau clignote rapidement en vert. Vous trouverez le trou dans la zone où le clip de fixation mural sera placé.

Un clavier Zigbee sous MQTT

Vérifiez que l'inclusion est bien complète. Bravo, vous avez réussi !
Nous allons maintenant rentrer dans le vif du sujet, et cela ne fonctionne pas comme un périphérique plus classique.
Dans un premier temps, il faut initialiser la connexion pour lui permettre de communiquer avec le broker. Car si vous essayez une combinaison du type "Mode" + "code" + "Valider", le voyant réseau commencera par clignoter en vert (en attente de connexion) puis après quelques secondes deviendra rouge et émettra un bip sonore, et surtout vous ne constaterez aucune remontée d'information dans Zigbee2mqtt.

Initialisation de la connexion

Afin d'initialiser correctement cette dernière, vous devez envoyer l'information d'état de l'alarme. Pour cela, vous devez utiliser MQTT explorer dont nous vous avons déjà parlé dans cet article. Il faudra envoyer la commande suivante au topic MQTT que vous avez créé pour le clavier, en lui ajoutantla commande /set :

{
    "arm_mode": {
        "mode": "disarm"
    }
}
Un clavier Zigbee sous MQTT

Cela forcera le clavier en mode désarmé, prêt à être utilisé comme il se doit.
Vous pouvez maintenant appuyer sur l'un des boutons "mode" sur la droite, entrer un code et appuyer sur le symbole validé. Vous devriez voir une information remonter dans Zigbee2Mqtt contenant le mode d'action sélectionné et le code. Mais là encore, le clavier bip et le voyant réseau clignotera en rouge. Ceci est normal, car le clavier attend la confirmation de la bonne réception par le système domotique.

Un clavier Zigbee sous MQTT

Confirmer la réception

Sous Jeedom, j'utilise le plugin ZigbeeLinker pour communiquer avec Zigbee2Mqtt, mais pour le clavier j'ai dû utiliser le plugin JMQTT car sous ZigbeeLinker il n'est pas possible d'utiliser des variable comme #[aaa]# #[bbb] #.
Pour résumer, ZigbeeLinker me sert à recevoir des informations du clavier.

Un clavier Zigbee sous MQTT

Tandis que JMQTT me sert à envoyer des informations au clavier.

Un clavier Zigbee sous MQTT

Pour confirmer la bonne réception d'une information, il va falloir créer une commande avec des variables. Il faut donc créer un équipement avec le bon topic sous JMQTT :

Un clavier Zigbee sous MQTT

On va créer une commande de retour contenant un playload adapté à votre configuration. Voici la mienne : {"arm_mode": {"transaction": #[Préparation][Keypad][Dernière action]#,"mode":"#[Préparation][Keypad][Action]#"}}

Un clavier Zigbee sous MQTT

Maintenant, nous allons dans le plugin ZigbeeLinker pour créer un envoi d'ordre, qui pour toute réception de transaction, nous permettra de confirmer la bonne réception de celle-ci.

Un clavier Zigbee sous MQTT

Un nouveau test et le clavier devrait faire un joli bip long avec le voyant vert réseau.

Retour d'état

Les voyants d'action permettent d'avoir un retour d'état de l'installation.
Pour les commander, il va falloir créer des commandes séparées pour chaque état, toujours dans JMQTT, même si celles-ci passent correctement avec ZigbeeLinker. Il est possible de créer des commandes pour l'ensemble des modes suivants : disarm, arm_day_zones, arm_night_zones, arm_all_zones, exit_delay, entry_delay, not_ready, in_alarm, arming_stay, arming_night, arming_away. Dans mon cas,  je vais créer uniquement les commandes qui me seront utiles, et une commande avec une variable qui reprend l'état de mon système d'alarme, pour lequel j'ai utilisé les mêmes termes que ceux du clavier pour plus de facilité.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Automatiser l'initialisation

Il nous reste à automatiser l'initialisation en cas de perte de communication. J'ai dû chercher un moment mais je ne trouvais rien de fiable, j'ai donc finalement opté pour utiliser la présence, car oui je vous le rappelle, il y a un capteur de proximité qui détecte quand la main s'approche du clavier. A chaque détection de présence de la main, je renvoi l'état de l'alarme, ce qui a pour effet également d'initialiser la connexion.
On sait maintenant comment procéder, et on va le réaliser à l'aide d'une action sur valeur.

Nous prenons la direction du plugin ZigbeeLinker, pour nous rendre dans la configuration de la commande Présence. Il faudra définir que si la valeur d'état est 1, alors nous envoyons l'état actuel de l'alarme.

Un clavier Zigbee sous MQTT

Conclusion

Nous avons vu comment intégrer le clavier dans Zigbee2Mqtt et l'utiliser avec Jeedom, pour l'ensemble des fonctions proposées. Je vais continuer à travailler sur l'intégration du reste du matériel inclus dans le kit et vous en proposerais également des articles.
Je pense au final utiliser le plugin Alarme pour gérer le tout, sur lequel je ferais également un article pour vous montrer l'ensemble de l'automatisation.

Un clavier Zigbee sous MQTT

Kit alarme avec clavier

Linkind Kit de démarrage de système de sécurité Intelligent pour la Maison - 5 pièces - avec sirène de 110 DB - Détecteur de Mouvement PIR - Capteur de Porte/fenêtre

Acheter
Info ! Je n'ai pas encore essayé d'intégrer la sirène, mais d'après mes lectures, il ne faut pas l'intégrer avec l'application sur le téléphone au préalable, donc un peu de patience, un article spécifique viendra vous donner les étapes à suivre.

Si vous avez des questions sur la sirène ou son intégrtion dans Jeedom suite à cet article, ou souhaitez simplement  échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

La gestion des sauvegardes dans Proxmox

La gestion des sauvegardes dans  Proxmox

Aujourd'hui, nous allons nous concentrer sur un point important, les sauvegardes sous Proxmox, et dans notre cas, vers un partage NFS.

Prérequis

Pour réaliser ce type de sauvegarde, il vous faudra bien entendu utiliser l'hyperviseur Proxmox et avoir un stockage qui possède un partage NFS, par exemple un NAS Synology. Pour rappel, vous trouverez dans l'article suivant la migration que j'ai fait il y a quelques temps d'ESXi vers Proxmox.

Migration de ESXI à Proxmox
Aujourd’hui nous allons parler hyperviseur et virtualisation. Les deux solutions d’hyperviseur populaires sont VMware ESXi et Proxmox VE . Ces 2 plateformes de virtualisation permettent d’exécuter des machines virtuelles ou des conteneurs. Dans le monde professionnel, VMware est le roi de la virtua…
La gestion des sauvegardes dans  ProxmoxDomoPiHexamus
La gestion des sauvegardes dans  Proxmox

Configurer le partage NFS

Pour faire cette sauvegarde, nous allons ajouter un partage NFS si cela n'est pas déjà fait. Pour cela, dans l'interface de Proxmox, il faut choisir, dans le menu de gauche, Datacenter puis l'onglet Stockage. Ajoutez un montage NFS, à configurer de la sorte :

  • ID = le nom du montage (Evitez les espaces et caractères spéciaux)
  • Serveur = l'adresse IP du NAS Synology
  • Export = le chemin du montage sur le NAS
  • Contenu = le type de contenu que vous voudrez utiliser (Dans notre cas il faudra au minimum Fichier sauvgarde VZDump)

Je vous est également mis une capture de ma configuration coté Synology.

La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox

Configuration des sauvegardes.

Passons maintenant aux choses sérieuses, et pour ça, direction le Datacenter puis l'onglet Sauvegarde ou nous allons cliquer sur Ajouter.
Dans la fenêtre qui s'ouvre, nous allons commencer par choisir notre Stockage, la programmation de la tâche, sélectionner ce qui est concerné et pour le reste je vous laisse regarder. Ne cliquez pas tout de suite sur "Créer", il faut d'abord indiquer quelle politique de Rétention vous voulez définir avant.
Ici, vous allez pouvoir choisir combien de temps les sauvegardes seront gardées. Dans mon cas, je souhaite conserver chaque sauvegarde pendant 2 mois.

La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox

Restaurer une sauvegarde.

Sauvegarder c'est bien, s'assurer que les sauvegardes fonctionnent et qu'on est en mesure de les restaurer, c'est encore mieux !

  1. Dans le menu Sauvegardes, sélectionnez la sauvegarde que vous souhaitez restaurer.
  2. Il est possible d'afficher la configuration de cette dernière, pour contrôler le nom de machine par exemple.
  3. Enfin, cliquez sur Restaurer.
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox

Vous pouvez choisir votre Stockage, ID , et vous pouvez cocher la case pour permettre un démarrage du conteneur / de la machine virtuelle à la suite de la restauration, chose que je ne fais pas car je veux vérifier mes montages USB avant le démarrage de celle-ci.

La gestion des sauvegardes dans  Proxmox

La restauration est lancée et vous pourrez suivre la log d'avancement.

La gestion des sauvegardes dans  Proxmox

Conclusion

Maintenant, vous connaissez une solution pour réaliser une sauvegarde de vos machines virtuelles ou conteneurs LXC hébergés sur votre hyperviseur Proxmox vers un stockage NFS. Et il est également bon de savoir restaurer, il sera trop tard de vérifier ça au moment où vous en aurez besoin.

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Suite à plusieurs mises à jour de l'application MyCanal sur notre téléviseur tournant sous Android TV, foireuse pour la première, changeant le mode de connexion et étant incomplète pour la seconde, je me suis mis en tête de trouver une alternative pour regarder les chaines de la TNT en direct.

Molotov me plaisait moyennement, je trouve son interface austère et n'ai jamais été convaincu.
Il y a bien les applications de chaque chaîne, MyTF1, 6Play, ArteTV, Pluto, ... mais ce n'est pas pratique du tout, devoir changer d'application en fonction de ce qu'on regarde, en plus de devoir créer un compte pour chacune d'entre elles.

Etant chez Free en tant que fournisseur d'accès à Internet, j'ai regardé si je ne pourrais pas configurer le flux m3u qu'ils mettent à disposition des abonnés, mais la qualité est moindre et l'intégration dans une application sur la tv n'était pas optimale. Finalement, en naviguant sur le site de Free, un nom m'a attiré, l'oeil, OQEE. Après vérification de ce qui était proposé, et notamment que c'était bien disponible pour mon abonnement (Freebox Révolution), je l'ai installée et ai tenté de regarder la TV par ce biais.

Et là, c'est le drame !

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Et oui, vu que je n'utilise pas le player tv de Free, et qu'en plus j'ai un routeur UniFi Dream Machine pour gérer mon réseau domestique, je n'avais pas configuré l'IPv6, n'en ayant pas le besoin. Nous allons voir ensemble comment configurer la Freebox et l'UDM pour disposer d'une connectivité IPv6 sur votre réseau.


Dans mon cas, le routeur UniFi est un UDM (UniFi Dream Machine) mais la configuration que je vais décrire s'applique également à l'UDM Pro ou à l'USG / USG Pro.

Nous allons en premier lieu récupérer l'adresse IPv6 de l'interface WAN de l'UDM. Pour cela, connectez-vous en SSH à votre routeur et utilisez la commande ip addr | grep "global dynamic" -B2 -A3.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Nous allons renseigner cette adresse dans la page de configuration de la Freebox. Connectez-vous sur http://mafreebox.freebox.fr, lancez les "Paramètres de la Freebox" et choisissez "Configuration IPV6". Il faut coller l'adresse IPv6 de l'UDM dans le second Next Hop uniquement pour déléguer un préfixe. Notez également le préfixe associé, nous allons en avoir besoin pour la suite de la configuration sur l'UDM.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Attention ! Il est important de ne pas modifier le Next Hop du premier subnet.

Sur votre contrôleur UniFi, rendez-vous dans "Settings", "Internet" et choisissez de configurer l'accès WAN.
Basculez les réglages avancés en manuel, activez le DHCPv6 pour la connection IPv6, et configurez une taille de délégation de préfixe de 64. Appliquez les changements.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Passons maintenant à la configuration de l'IPv6 pour le réseau local. Toujours dans l'interface du contrôleur UniFi, rendez-vous cette fois dans la partie "Networks" et choisissez de configurer le réseau local.
Si les réglages avancés ne sont pas déjà activées en manuel, c'est le moment de le faire ! Descendez en bas pour configurer l'IPv6, et choisissez de configurer le type d'interface sur "Static". Renseignez en tant que "IPv6 Gateway" le préfixe IPv6 du second  "Next Hop" de la Freebox.
Activez le RA (Router Advertisement), qui permet aux périphériques sur le réseau de configurer leur route par défaut automatiquement.
Activez également le DHCPv6, la plage d'adresses se renseignera en se basant sur le préfixe du sous-réseau.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

A partir de ce moment, votre réseau est configuré pour fonctionner en IPv6 aussi bien qu'en IPv4, dépendant si les périphériques en sont capables ou non.

Pour vérifier que c'est bien le cas, vous pouvez exécuter un ping en IPv6 ou un nslookup pour résoudre un nom de domaine en IPv6.

guillaume ~ % ping6 google.fr
PING6(56=40+8+8 bytes) 2a01:e0a:99e:ec1:e01e:2d:d5ef:60a1 --> 2a00:1450:4007:809::2003
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=0 hlim=116 time=4.214 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=1 hlim=116 time=4.979 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=2 hlim=116 time=5.454 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=3 hlim=116 time=5.165 ms
--- google.fr ping6 statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 4.214/4.953/5.454/0.459 ms
guillaume ~ % nslookup -query=AAAA google.fr
Server:		2a01:e0a:99e:ec1::
Address:	2a01:e0a:99e:ec1::#53

Non-authoritative answer:
google.fr	has AAAA address 2a00:1450:4007:81a::2003

Bon très bien, la connectivité IPv6 fonctionne bien depuis un ordinateur, il reste à tester à nouveau l'application OQEE depuis la TV sous Android TV.

Mince, ça ne fonctionne toujours pas !! Après quelques recherches, et en discutant de ce problème avec un ami, il me dit qu'il a déjà eu le même besoin et avait rencontré le même problème, et qu'il y a un bug dans le firmware UniFi qui fait que le RA n'est pas bien activé, et qu'il faut le forcer à l'aide d'un script.

Attention ! Les étapes suivantes sont nécessaires au moment de l'écriture de cet article.
Un correctif devrait être déployé par Ubiquiti dans le futur pour corriger ce bug. (Le changelog de la mise à jour 1.12.22 de l'UDM pouvait le laisser penser, mais il n'en est rien.)

Le prérequis pour  mettre en place ce script est d'avoir installé les scripts udm-utilities de bootschiken, et configuré les "On-Boot-Script".
Si ce n'est pas déjà fait, il vous faudra suivre le tutoriel suivant :

Libérez votre Ubiquiti Unifi Dream Machine
L’Unifi Dream Machine est un équipement réseau tout-en-un (routeur, switch, point d’accès wifi) puissant et sur lequel on peut ajouter d’autres services.
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6DomoPiHexamus
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Pour configurer ce nouveau script dans le but d'activer le RA correctement sur votre réseau local, accédez en SSH à l'UDM et rendez-vous à l'emplacement habituel des scripts personnalisés avec la commande cd /mnt/data/on_boot.d.

Créez un premier fichier de configuration avec la commande vi ipv6-ra.conf et éditez-le afin d'y coller le contenu suivant :

#
# Generated automatically by ubios-udapi-server
#

# Configuration of DHCP Server 'net_LAN_br0_192-168-1-0-24_IPV6'
no-dhcp-interface=lo
interface=br0
enable-ra
ra-param=br0,high,0
domain=local
dhcp-range=set:net_LAN_br0_192-168-1-0-24_IPV6,IPV6:IPV6::IP,IPV6:IPV6::IP,ra-only,64,86400
dhcp-option=tag:net_LAN_br0_192-168-1-0-24_IPV6,option6:dns-server,[::]
Attention ! Il faut bien entendu adapter le nom de l'interface, le domaine, ainsi que la plage d'adresse IPv6 en fonction des valeurs de votre réseau.

Vous pouvez vérifier le contenu du fichier créé par UniFi avec la commande cat /run/dnsmasq.conf.d/dhcp*IPV6.conf. Nous avons seulement rajoutés l'option ra-only dans la configuration DHCPv6.

Le deuxième fichier à créer est le script qui sera exécuté au démarrage de l'UDM. Créez-le avec la commande vi ipv6-ra.sh et collez-y le contenu suivant :

#!/bin/sh
cp /mnt/data/on_boot.d/ipv6-ra.conf /run/dnsmasq.conf.d/dhcp.dhcpServers-net_LAN_br0_192-168-1-0-24_IPV6.conf
start-stop-daemon -K -q -x /usr/sbin/dnsmasq

Rendez le script exécutable avec la commande chmod +x ipv6-ra.sh et exécutez-le tout de suite avec la commande ./ipv6-ra.sh pour appliquer la configuration.

On redémarre la TV pour forcer une reconnexion au réseau, et on se rend dans les paramètres réseaux pour vérifier qu'elle a bien récupérée une adresse IPv6.

Oui ! C'est bon cette fois !

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Lançons OQEE et surtout tentons de visionner une chaîne en direct pour valider le bon fonctionnement :

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

C'est bon, on peut confirmer que ça fonctionne correctement !


Conclusion

Merci d'avoir lu cet article jusqu'au bout, j'espère qu'il vous aura servi pour configurer votre réseau local en IPv6, et potentiellement pour ceux qui pourraient être concernés, à vous permettre de regarder les chaînes de télévision avec l'application OQEE de Free.

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

Montage NFS sous docker

Montage NFS sous docker

Dans l'usage de nos stacks Docker, nous sommes un certain nombre à utiliser un NUC ou autres types de serveurs pour les exécuter, mais nous disposons aussi d'un NAS pour le stockage. Voulant réunir l'ensemble de mes conteneurs sur mon NUC, mais désirant utiliser mon stockage NAS, j'ai effectué des montages NFS pour cela.


Prérequis

Pour effectuer le montage NFS sur notre instance Docker il vous faudra configurer le partage NFS sur votre stockage, voici un exemple de configuration sur mon NAS Synology.

Info ! Les conteneurs Docker se présentent sous l'adresse IP de l'hôte.
Montage NFS sous docker

Configuration

Il y a différentes possibilités de montages NFS dans un conteneur Docker : soit monter ce dernier sur l'hôte Docker et utiliser le répertoire associé en tant que volume dans le conteneur, soit monter directement l'export NFS dans le docker-compose. je vais vous décrire dans cet article la deuxième solution.

Voici un exemple de fichier docker-compose.yml que j'ai réduit pour vous montrer tout particulièrement la partie volume :

version: "3.8"
services:
  embyserver:   
    image: emby/embyserver
    container_name: embyserver
   ...
    volumes:
      - emby-config:/config
      - nfs-video:/mnt/nfs-video
    ...
    restart: unless-stopped
    
volumes:  ## Définition des volumes déclarés ci-dessus
  nfs-video: ## Le nom de mon volume en montage NFS
    driver: local
    driver_opts: ## Définition des options du montage
      type: nfs ## Choix du type de montage
      o: addr=192.168.0.xx,nolock,soft,rw ## Indication de l'adresse IP du stockage et des options d'accès
      device: :/volume1/Video/   ## Indication du chemin du montage sur le stockage
  emby-config: ## Le nom de mon volume local
        driver: local

Il vous reste simplement à lancer votre stack et cela devrait fonctionner.

Pour vérifie, je vais explorer mon arborescence à l'aide de File Browser, il est possible de constater le bon montage en toute transparence de celui-ci.

Montage NFS sous docker

Et que cela correspond bien au contenu du dossier sur le NAS.

Montage NFS sous docker

Conclusion

Cet article est court, mais permet de vous présenter une fonctionnalité bien pratique, qui est plus simple que l'on ne pourrait croire.

Si vous avez des questions sur cet article, n'hésitez pas à laisser des commentaires ou à venir échanger avec la communauté sur le groupe Telegram.

Edito juin 2022

Edito juin 2022

Comme vous avez pu le remarquer, cela fait quelques semaines qu'il n'y a pas eu d'article, et le constat est même qu'il n'y en a eu très peu depuis le début d'année. Pas d'inquiétude, nous sommes toujours présents, et discutons régulièrement avec les membres de la communauté présent sur le groupe Telegram. C'est toujours un plaisir d'échanger avec vous, que ce soit simplement pour discuter ou pour essayer de répondre à vos questions sur des sujets techniques (ou autres parfois).

La charge de travail ne faiblit pas (tant mieux, il est préférable d'en avoir plutôt que pas du tout...) et laisse peu de temps pour les loisirs, les tests de produits ou de logiciels et surtout l'écriture de nouveaux articles. Toutefois, les évolutions actuelles dans mon entreprise vont me permettre d'aborder de nouveaux sujets, autour des hébergeurs cloud notamment.

Les brouillons se sont accumulés et il y a plusieurs articles qui nécessitent juste un peu de correction ou de précisions, sur lesquels nous allons apporter notre attention et pourraient être publiés dans les semaines à venir. Et nous ne manquons pas d'idées, il y a encore beaucoup de logiciels à vous faire découvrir ! N'hésitez pas à nous proposer des idées ou des articles si vous vous en sentez l'âme et souhaitez partager vos découvertes avec notre communauté.

A bientôt pour de nouveaux articles, et au plaisir de lire messages et répondre à vos commentaires ou sur le groupe Telegram.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Guacamole a déjà fait l'objet d'une présentation, mais on revient dessus pour essayer d'aller plus loin dans son utilisation et vous montrer comment mettre en place l'authentification à deux facteurs avec un code TOTP, ainsi que la configuration d'accès en SSH ou RDP.

Guacamole, ou comment prendre le contrôle sur vos équipements SSH, RDP ou VNC via une interface Web
Vous vous êtes déjà retrouvés dans la situation où vous deviez lancer un programme, faire un dépannage, récupérer un document, ... tout en étant à distance de votre domicile ? Avec Guacamole, cela devient possible !
Guacamole, contrôler vos équipements en SSH ou RDP via une interface WebDomoPiGuillaume
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

On va en profiter pour changer d'image Docker, celle utilisée jusqu'alors n'étant plus maintenue par son développeur, oznu. Attention, celle-ci reste fonctionnelle, mais ne bénéficie pas des améliorations ou correctifs de sécurité ou de bugs qu'il pourrait y avoir ! Cela nous permet également de basculer sur les images officielles, fournies par la fondation Apache.

Nous allons donc utiliser guacd en tant que passerelle serveur et guacamole pour l'interface web, ainsi que postgres en tant que base de données.

Info ! Cet article a été écrit pour être déployé avec un fichier docker-compose et l'utilisation de dossiers en tant que volumes persistents. Pour ceux qui souhaitent déployer la stack via Portainer, il faudra penser à remplacer les dossiers (par exemple ./data) par un nom de volume (par exemple volume-guac-data), et déclarer les volumes à la fin de la stack.

Commençons par créer les répertoires nécessaires au bon fonctionnement de la stack :

mkdir -p /docker/guacamole/{data,drive,init,record}

Il faut ensuite générer le script d'initialisation de la base de données avec la commande suivante :

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > /docker/guacamole/init/initdb.sql

Dans le cas de l'utilisation de Portainer, vous pouvez créer le fichier initdb.sql dans /tmp.

Créez le fichier docker-compose.yml et collez-y le contenu suivant :

version: '2'

services:
  guacd:
    image: guacamole/guacd
    container_name: guacd
    volumes:
      - /docker/guacamole/drive:/drive:rw
      - /docker/guacamole/record:/record:rw
    restart: unless-stopped
    
  guacamole_db:
    image: postgres:13.4
    container_name: guacamole_db
    environment:
      PGDATA: /var/lib/postgresql/data/guacamole
      POSTGRES_DB: guacamole_db
      POSTGRES_PASSWORD: GUAC_DB_PASSWORD
      POSTGRES_USER: guacdb_user
      TZ: Europe/Paris
    volumes:
      - /docker/guacamole/init:/docker-entrypoint-initdb.d:ro
      - /docker/guacamole/data:/var/lib/postgresql/data:rw
    restart: unless-stopped

  guacamole_app:
    image: guacamole/guacamole
    container_name: guacamole_app
    environment:
      GUACD_HOSTNAME: guacd
      POSTGRES_DATABASE: guacamole_db
      POSTGRES_HOSTNAME: guacamole_db
      POSTGRES_PASSWORD: GUAC_DB_PASSWORD
      POSTGRES_USER: guacdb_user
#      TOTP_ENABLED: 'true'
    depends_on:
      - guacd
      - guacamole_db
    ports:
      - 8080:8080
    restart: unless-stopped

Lançons la stack avec la commande docker-compose up -d.

Attention ! Guacamole est accessible depuis l'adresse http://IP.HOTE.DOCKER:8080/guacamole
Après ce premier lancement, vous pouvez commenter la ligne du volume init dans le conteneur guac_db en ajoutant un # en début de ligne. Ce volume n'est utile que pour initialiser la base de données et ne sera plus utilisé.
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Les identifiants par défaut sont guacadmin / guacadmin.

L'interface que vous obtenez est très sobre.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Commencez par vous rendre dans les paramètres, avec le menu disponible en haut à droite en cliquant sur le nom d'utilisateur. Dans l'onglet Utilisateurs, créez un nouvel utilisateur et donnez lui les droits Administrateurs.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Une fois le nouvel utilisateur créé, déconnectez vous et reconnectez-vous avec ce dernier. Retournez dans les réglages et bloquez ou supprimez l'utilisateur par défaut guacadmin.


Sécurité

Pour activer l'authentification à double facteur avec code TOTP et renforcer la sécurité de Guacamole, c'est très simple ! Décommentez la ligne TOTP_ENABLED: 'true' dans la stack et mettez là à jour en la relançant avec la commande docker-compose up -d.

Quand vous accéderez de nouveau à Guacamole et vous identifierez avec votre identifiant, il vous sera demandé de configurer l'authentification à double facteur. Scannez le QR Code avec votre application de gestion TOTP et renseignez le code donné pour valider.

A chaque connexion, vous devrez maintenant saisir le code fourni par l'application en plus de vos identifiant et mot de passe.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Passons maintenant à la configuration des connexions, le but de Guacamole ! Dans les paramètres, rendez-vous dans l'onglet Connexions, et cliquez sur le bouton "Nouvelle Connexion".

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Donnez un nom à la connexion, et choisissez le protocole à utiliser (au choix parmi VNC, RDP, SSH, Telnet ou Kubernetes).


SSH

Le protocole SSH permet à un client (un utilisateur ou bien même une machine) d'ouvrir une session interactive sur une machine distante fin d'envoyer des commandes ou des fichiers de manière sécurisée.

Pour le configurer, choisissez SSH en tant que protocole et renseignez dans la partie Paramètres, Réseau, l'adresse IP ou nom d'hôte ainsi que le port pour le serveur que vous êtes en train de configurer (22 étant le port standard du protocole SSH), puis dans la partie Authentification, l'identifiant et son mot de passe (si vous n'enregistrez pas de mot de passe, il vous sera demandé systématiquement, pareil pour l'identifiant). Vous pouvez également personnaliser l'affichage (utile pour différencier vos différents environnements) ou encore exécuter une commande spécifique. Enfin, enregistrez cette connexion.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

En complément, si vous cochez la case "Activer SFTP" dans la configuration de la connexion, vous aurez la possibilité de charger ou télécharger des fichiers avec votre hôte depuis votre navigateur.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

RDP

Le protocole RDP est aussi appelé communément Bureau à Distance et permet de prendre le contrôle d'un système d'exploitation comme si on était installé devant. Développé par Microsoft, il est disponible sur toutes les versions de Windows mais peut également être installé sur macOS.

Sur Windows 10 ou 11, le Bureau à Distance est disponible uniquement sur les éditions "Professionnel". Pour l'activer, rendez-vous dans le Panneau de configuration et utilisez le champ de recherche pour trouver le paramètre.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Dans Guacamole, ajoutez une nouvelle connexion et choisissez cette fois le protocole RDP. Dans la partie Paramètres, Réseau, saisissez l'adresse IP ou le nom d'hôte de la machine à connecter, ainsi que le port (le port standard du protocole RDP est le 3389). Enfin, dans la partie Authentification, indiquez le nom d'utilisateur et le mot de passe. Plusieurs options matérielles sont disponibles pour transmettre le son, le microphone, les imprimantes, ou monter un partage. D'autres options sont disponibles pour améliorer les performances de la connexion.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Connexion

En revenant sur l'accueil (accessible en cliquant sur votre nom d'utilisateur), vous retrouverez les connexions que vous aurez créé. Cliquez sur une d'entre elles pour vous retrouver connecté à l'hôte distant à travers votre navigateur web.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Astuces

Vous pouvez quitter le terminal avec la commande exit ou avec la combinaison de touches Ctrl + D. Vous pourrez alors choisir de revenir à l'accueil, de vous reconnecter, ou de vous déconnecter de Guacamole.

Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Lorsque vous êtes connectés, un menu contextuel est disponible en utilisant la combinaison de touches Alt + Ctrl + Shift.
Dans ce menu, vous trouverez :

  • En haut à gauche la session en cours, avec la possibilité d'en ouvrir une nouvelle, ce qui permet de naviguer entre plusieurs connexions simultanément, qui apparaîtront en bas à droite.
  • Toujours en haut, vous trouverez votre session Guacamole ou vous pouvez vous déconnecter, aller à l'accueil ou dans les paramètres.
  • Juste en-dessous, vous aurez le presse-papier Guacamole et pourrez en modifier le contenu avant de le coller dans la fenêtre.
  • Appareil correspond à la partie SFTP et vous permettra d'échanger des fichiers entre votre poste et le poste accédé à distance.
  • Vous pourrez également choisir d'afficher un clavier virtuel ou régler le zoom de l'affichage.
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web

Conclusion

On espère que ce tutoriel mis à jour vous sera utile et vous permettra d'accéder avec Guacamole à votre infrastructure, de manière centralisée, et surtout à travers une simple interface web. On vous conseille fortement de passer par un proxy inversé (NPM par exemple) pour y accéder de l'extérieur, tout en sécurisant la connexion en https et avec un certificat Let's Encrypt. L'utilisation de la double authentification permet également de renforcer le contrôle d'accès à votre infrastructure.

Si vous avez des questions sur cet article, n'hésitez pas à laisser des commentaires ou à venir échanger avec la communauté sur le groupe Telegram.

Duplicati, un logiciel de sauvegarde universel

Duplicati, un logiciel de sauvegarde universel

J'ai déjà évoqué le sujet des sauvegardes, et je pense que vous devez tous comprendre l'importance d'en réaliser régulièrement pour les données que vous jugez utiles. Aujourd'hui, je vais vous parler de Duplicati, un logiciel open-source, gratuit, permettant de réaliser des sauvegardes incrémentielles ou complètes, encryptées pour les garder en sécurité, en utilisant de nombreux protocoles tels que ftp, ssh, WebDAV ou encore des services cloud comme OneDrive, Google Drive, Amazon S3, BackBlaze et plein d'autres.

Duplicati
Free backup software to store backups online with strong encryption. Works with FTP, SSH, WebDAV, OneDrive, Amazon S3, Google Drive and many others.
Duplicati, un logiciel de sauvegarde universelDuplicati
Duplicati, un logiciel de sauvegarde universel

Duplicati est disponible aussi bien pour des postes Windows, MacOS ou Linux, ainsi qu'en paquet pour les NAS Synology. Il peut se contrôler à l'aide d'une interface graphique web ou bien en lignes de commande.


Nous allons mettre en place Duplicati en tant que conteneur Docker, dans le but de sauvegarder les données des autres conteneurs. Voici le contenu du fichier docker-compose.yml que j'ai utilisé :

version: "3"
services:
  duplicati:
    image: lscr.io/linuxserver/duplicati
    container_name: duplicati
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      #- CLI_ARGS= #optional
    volumes:
      - /docker/duplicati/config:/config
      - /docker/duplicati/backups:/backups
      - /docker:/source
    ports:
      - 8200:8200
    restart: unless-stopped

Une petite explication à propos des répertoires utilisés :

  • config : répertoire contenant la configuration de Duplicati et les définitions des sauvegardes
  • backups : répertoire permettant de stocker les sauvegardes en local
  • source : chemin des fichiers sources à sauvegarder

Pour lancer la stack, la commande à utiliser est toujours la même : docker-compose up -d.

Rendez-vous ensuite depuis votre navigateur préféré sur http://<IP.DE.LHOTE.DOCKER>:8200.

Duplicati, un logiciel de sauvegarde universel

L'interface peut être configurée dans la langue de votre choix, en vous rendant dans les paramètres. Je vous conseille également de protéger l'accès à Duplicati par un mot de passe.


Nous allons voir ensemble comment sauvegarder un répertoire, et comment le restaurer. En effet, sauvegarder ses données, c'est bien, mais il faut aussi vous assurer que le jour où vous en aurez besoin, la restauration fonctionnera.

La configuration d'une sauvegarde se fait en 5 étapes. Commencez par cliquer sur "Ajouter une sauvegarde" et choisissez de configurer une nouvelle sauvegarde.

  1. Donnez un nom à la tâche de sauvegarde, une description si vous le souhaitez, et renseignez une phrase secrète que vous garderez bien au chaud (dans votre gestionnaire de mots de passe Vaultwarden par exemple) avant de passer à l'étape suivante.
  2. Choisissez ici la destination de la sauvegarde. Nous allons choisir un répertoire local, mais vous pouvez sélectionner un serveur FTP, un espace Dropbox, Google Drive ou bien d'autres encore. Testez la connexion puis continuez pour vous rendre à la prochaine étape.
  3. L'étape 3 vous permet de choisir quelles sont les données que vous voulez sauvegarder. Naviguez jusqu'à trouver le répertoire souhaité et cochez la case qui se situe devant. Vous pouvez facilement ajouter des filtres pour ne sauvegarder que certains fichiers, ou au contraire en exclure. C'est pratique pour notamment exclure les fichiers de log, qui peuvent être volumineux et ne sont pas indispensables lors de la restauration.
  4. A cette étape se configure la planification de l'exécution de la sauvegarde, que vous pouvez désactiver pour lancer celle-ci manuellement, ou bien planifier de manière automatique et périodique selon un calendrier que vous définissez (toutes les X minutes / heures / jours / semaines / mois / années, avec la possibilité d'exclure certains jours).
  5. Cette dernière étape vous permet de définir la taille des fichiers composant les archives ainsi que la stratégie de rétention. Les choix possibles sont :
  • Conserver toutes les sauvegardes
  • Supprimer les sauvegardes plus anciennes que X heures/jours/semaines/mois/années
  • Conserver un nombre spécifique de sauvegardes
  • Rétention de sauvegarde intelligente : il restera une sauvegarde pour chacun des sept derniers jours, chacune des quatre dernières semaines et chacun des douze derniers mois. Il y aura toujours au moins une sauvegarde.
  • Rétention de sauvegarde personnalisée : là c'est à vous de définir combien de sauvegardes vous souhaitez garder pour les derniers jours / semaines / mois / années
Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel

Enregistrez la configuration de la sauvegarde, et une fois revenu sur la page d'accueil, vous pourrez l'exécuter manuellement. Une fois la sauvegarde complétée, vous verrez apparaître des statistiques sur la taille du répertoire source à sauvegarder ainsi que le nom de versions de la sauvegarde et la taille totale occupée par celle-ci. Selon le type de fichiers sauvegardés, vous observerez une compression plus ou moins importante.

Duplicati, un logiciel de sauvegarde universel

Concernant la restauration d'une sauvegarde, en vous rendant dans le menu "Restaurer" vous aurez 2 choix possibles : restaurer directement depuis les fichiers sauvegardés dans le cas où il s'agit de la même machine sur laquelle la sauvegarde est faite ou depuis une configuration dans le cas où vous souhaitez restaurer des fichiers sur une autre machine.

Dans l'exemple, j'ai choisi de restaurer les fichiers depuis la sauvegarde "Sauvegarde Guacamole". On choisit dans la liste quelle version de sauvegarde et les fichiers qu'on souhaite restaurer, puis on clique sur "Continuer".

Enfin, on choisit la destination des fichiers restaurés, soit l'emplacement d'origine,  soit un emplacement de votre choix, avec la possibilité d'écraser les fichiers ou de garder chaque version, en ajoutant dans leurs noms l'horodatage. Il est également possible de restaurer les permissions des fichiers pendant l'opération.

Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel
Duplicati, un logiciel de sauvegarde universel
Attention ! Dans le cas où vous choisissez de restaurer des fichiers depuis une configuration, vous aurez besoin de la clé de chiffrement indiquée lors de la mise en place de la tâche de sauvegarde correspondante.

Conclusion

Mettre en place des sauvegardes est indispensable pour vous permettre de retrouver vos données ou la configuration de vos services après un crash ou simplement pour migrer vers une autre machine. On s'aperçoit souvent de l'importance de réaliser des sauvegardes, et de tester si celles-ci sont fonctionnelles, quand il est trop tard, et je ne vous souhaite pas d'être dans cette situation. Prenez les devants, faites des sauvegardes et tester les !

Si vous avez des questions sur la configuration ou l'utilisation de Duplicati, vous pourrez trouver de l'aide dans la doc officielle, laisser un commentaire ou venir nous poser vos questions sur le groupe Telegram de la communauté.

Mise à jour de Proxmox V6 vers Proxmox V7

Mise à jour de Proxmox V6 vers Proxmox V7

Voilà quelque mois maintenant que je suis passé de VMware ESXi à Proxmox V6. Depuis le mois de Juillet 2021, la version 7 est sortie, et c'est donc l'occasion de faire ma première grosse mise à jour et de vous en faire profiter.

Commençons par parcourir les principales nouveautés :

  • Debian passe de la version 10 "Buster" à la 11 "Bullseye", incluant Ceph Pacific en version 16.2 par défaut (au lieu de la 15.2),
  • Les moniteurs Ceph avec plusieurs réseaux publics peuvent être créés à l'aide de la CLI (ligne de commande), si les utilisateurs ont plusieurs liens configurés.
  • Support du Btrfs en tant que technologie de stockage, incluant un contrôle de l'intégrité du système de fichiers, une amélioration des performances, des fonctionnalités d'instantanés.
  • Le protocole OpenID Connect est intégré pour amener la possibilité d'utiliser une authentification unique (SSO).
  • Améliorations de l'interface utilisateur Web, avec notamment l'ajout du support du Markdown dans « Notes », ainsi qu'un nouveau panneau de gestion des référentiels APT.
  • Prise en charge des clés de sécurité (comme YubiKey) en tant que clés SSH, lors de la création de conteneurs ou de la préparation d'images cloud-init.
  • Conteneur : LXC 4.0 prend entièrement en charge les cgroups2, un mécanisme d'organisation hiérarchique des processus et d'allocation des ressources système.
  • Gestion des certificats : le plug-in autonome ACME prend désormais mieux en charge les environnements à double pile (IPv4 et IPv6) et ne dépend plus des adresses configurées pour déterminer son interface d'écoute.
  • Réseau : l'ifupdown2 moderne est l'outil de gestion de réseau par défaut pour les nouvelles installations utilisant l'ISO officiel Proxmox VE.

Vous trouverez ci-dessous le lien vers la documentation officielle de Proxmox pour mettre à jour Proxmox VE depuis la version 6 vers la 7, mais nous allons essayer de vous retranscrire et expliquer dans cet article les étapes indispensables.

Upgrade from 6.x to 7.0 - Proxmox VE
Mise à jour de Proxmox V6 vers Proxmox V7Proxmox VE
Mise à jour de Proxmox V6 vers Proxmox V7
Attention ! Avant de procéder à la mise à jour, la chose la plus importante est de réaliser une sauvegarde complète de votre système, incluant les machines virtuelles et conteneurs LXC.

Deux méthodes sont possibles pour faire cette mise à jour :

  • Réinstaller Proxmox VE en version 7, et restaurer la sauvegarde de la configuration ainsi que les machines virtuelles et conteneurs LXC.
  • Procéder à une mise à jour étapes par étapes, ce que nous allons faire ici ensemble.
Pré-requis ! Vérifiez que Proxmox est en version 6.4
avant de tenter la mise à jour vers la version 7.

Avant de commencer la mise à jour en elle-même, il faut s'assurer que certains modules sont dans leur dernière version. Commençons avec ceph à l'aide de la commande ceph --version.

Mise à jour de Proxmox V6 vers Proxmox V7

Dans mon cas, la version est 12.2.11, une ancienne version.
Vérifions maintenant avec les commandes suivantes si ce module est utilisé :

ceph osd dump | grep ^flags
cat /etc/pve/ceph.conf
Mise à jour de Proxmox V6 vers Proxmox V7

Aucun fichier n'est trouvé, ce qui montre que ceph n'est pas configuré ni utilisé. Si jamais vous obtenez un résultat et devez mettre à jour ce module, voici le lien de la procédure à appliquer.

Maintenant, pour ceux qui l'utilisent, il faut vérifier le paquet "Proxmox Backup Server" avec la commande proxmox-backup-manager versions.

Mise à jour de Proxmox V6 vers Proxmox V7

Comme vous pouvez le voir, ce module n'est pas installé non plus chez moi, donc je suis tranquille sur ce point, mais je vous donne également le lien de la documentation officielle.

Nous allons pourvoir attaquer la mise à jour maintenant que nous nous sommes assuré des prérequis. Pour cela, nous allons rajouter les dernières sources dans le fichier sources.list.

nano /etc/apt/sources.list

On va y ajouter ce qui suit à la fin du fichier :

# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve buster pve-no-subscription

Le fichier sources.listdoit donc ressembler à ceci :

Mise à jour de Proxmox V6 vers Proxmox V7

Nous pouvons mettre à jour les paquets système, y compris la distribution :

apt update && apt dist-upgrade
Mise à jour de Proxmox V6 vers Proxmox V7
Mise à jour de Proxmox V6 vers Proxmox V7

A la suite de ces commandes, vous pouvez arrêter l'ensemble de vos machines virtuelles et conteneurs et redémarrer la machine. Une fois le redémarrage effectué nous allons retourner en SSH sur l'hôte Proxmox et taper la commande pve6topve7 --full, qui est un utilitaire permettant de vérifier la compatibilité du système.

Mise à jour de Proxmox V6 vers Proxmox V7

Dans mon cas, on peut voir qu'il n'y a aucune erreur, mais 2 warnings apparaissent :

  • Arrêter les machines virtuelles, ce qui est très simple à résoudre (et que j'ai ajouté avant l'exécution de l'utilitaire de vérification).
  • Mon LXC qui porte l'ID 100, dans son fichier de configuration, possède des labels lxc.cgroup qu'il faut modifier en lxc.cgroup2. Pour éditer le fichier de configuration d'un LXC il faut utiliser la commande nano /etc/pve/lxc/100.conf.

Nous allons ensuite modifier les sources pour passer à Proxmox V7 :

sed -i 's/buster\/updates/bullseye-security/g;s/buster/bullseye/g' /etc/apt/sources.list

Il reste à vérifier s'il y a encore des traces de la V6 dans les sources. Pour cela, retournons voir le fichier sources.listavec la commande nano /etc/apt/sources.list et si une ligne comporte un pve6.X, vous devez insérer un # au début de celle-ci.

Mise à jour de Proxmox V6 vers Proxmox V7

Si vous possédez une licence, il faut mettre à jour également la source "entreprise".

echo "deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

Nous allons mettre à jour la distribution et Proxmox pour de bon cette fois, en Debian 11 et Proxmox V7.

apt update && apt dist-upgrade

Il suffira de continuer l'ensemble des étapes, lire le changelogs et autre étapes classique de grosse mise à jour. Vous verrez que de nombreux paquets sont mis à jour, celle-ci peut donc durer plusieurs minutes et plusieurs dizaines de minutes selon votre débit Internet et la puissance de votre machine.

Mise à jour de Proxmox V6 vers Proxmox V7
Mise à jour de Proxmox V6 vers Proxmox V7
Mise à jour de Proxmox V6 vers Proxmox V7
Mise à jour de Proxmox V6 vers Proxmox V7
Mise à jour de Proxmox V6 vers Proxmox V7
Mise à jour de Proxmox V6 vers Proxmox V7

Une fois que cette mise à jour du système sera réalisée, il faudra procéder à un redémarrage du système, à la suite duquel nous allons relancer une mise à jour des paquets qui avaient en prérequis la version du système, avec la commande apt-update && apt upgrade.

Lors des mise à jour de paquets, j'ai eu celle de openssh-server qui m'a demandé une petite réponse. J'ai d'abord comparé les fichiers puis choisi la première option install the package maintainer's version.

Mise à jour de Proxmox V6 vers Proxmox V7
Mise à jour de Proxmox V6 vers Proxmox V7

En vous connectant à l'interface web de Proxmox, vous devriez maintenant voir en haut la version affichée.

Mise à jour de Proxmox V6 vers Proxmox V7

Conclusion

Vous voici sur la dernière version majeure de Proxmox ! Je trouve cela bien plus simple que mettre à jour VMware ESXi, surtout vu que les mises à jour intermédiaires peuvent se faire facilement depuis l'interface graphique.

Si vous avez des questions sur la mise à jour ou même la configuration et l'utilisation de Proxmox, n'hésitez pas à laisser un commentaire ou à venir nous retrouver sur le groupe Telegram de la communauté.

Suivre des flux RSS avec FreshRSS

Suivre des flux RSS avec FreshRSS

Se tenir informé de l'actualité - que ça soit les informations de société, des sujets spécifiques ou bien les mises à jour de vos logiciels favoris hébergés sur Github - n'est pas toujours aisé. Il faut aller de site en site pour chercher les informations, se rappeler de ce qu'on a déjà lu ou pas, gérer des favoris...

FreshRSS répond à tous ces besoins et va vous simplifier la vie !

FreshRSS est un agrégateur de flux RSS et Atom à auto-héberger sur un serveur. Il permet de s'abonner à des sites pour recevoir les articles aussi tôt qu'ils sont publiés. Il permet de regrouper l’actualité de plusieurs sites différents dans un endroit unique pour que vous puissiez la lire sans devoir aller de site en site, tout en stockant les articles pour les lire plus tard et conserver une liste de favoris.

Dans FreshRSS, vous pouvez gérer autant de flux RSS que vous souhaitez et avez la possibilité d'utiliser des catégories, des étiquettes, de configurer la durée de rétention. Il est possible de créer plusieurs utilisateurs, pour que chacun puisse suivre ses propres flux en fonction de ses intérêts.


Nous allons mettre en place cet outil en tant que service Docker avec une stack dont voici le contenu :

version: "3"
services:
  freshrss:
    image: lscr.io/linuxserver/freshrss:latest
    container_name: freshrss
    ports:
      - 8080:80  # Port pour accéder à l'interface web de FreshRSS
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - /docker/freshrss/config:/config
    restart: unless-stopped

On crée le dossier pour stocker la configuration de FreshRSS ainsi que le fichier docker-compose.yml avec la commande mkdir -p /docker/freshrss/config, et on obtiendra donc l'arborescence suivante :

/docker/freshrss/
    ├── config/
    └── docker-compose.yml

On peut maintenant lancer la stack depuis le dossier /docker/freshrss avec la commande docker-compose up -d.

FreshRSS sera accessible sur votre navigateur depuis l'URL http://<IP.HOTE.DOCKER>:8080.

Suivre des flux RSS avec FreshRSS
Suivre des flux RSS avec FreshRSS
Suivre des flux RSS avec FreshRSS
Suivre des flux RSS avec FreshRSS

Conclusion

Ce rapide article vous a présenté un outil pour suivre des flux RSS, permettant de gagner du temps dans votre lecture d'actualité ainsi que la veille que vous pouvez observez sur certains sujets.

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

Bilan de l'année 2021

Bilan de l'année 2021

Bonjour à tous,

En cette fin d'année est venu le temps de faire un bilan, notamment du blog et de son activité. Cette année a encore été particulière en terme d'organisation personnelle et professionnelle, mais cela ne nous a pas empêché de tester des produits, de mettre en place de nouveaux outils ni d'écrire de nouveaux articles, bien au contraire !

Quelques chiffres à partager avec vous :

  • 42 articles publiés (incluant celui-ci)
  • +40% de pages vues par rapport à 2020, avec une augmentation franche sur le dernier trimestre

Le top 3 des articles les plus consultés est le suivant :

1- TIG, le trio Telegraf + InfluxDB + Grafana pour surveiller vos équipements

TIG, le trio Telegraf + InfluxDB + Grafana pour surveiller vos équipements
Comment vérifier l’utilisation des ressources système de vos serveurs / conteneurs ? Que se passe-t-il si un conteneur consomme trop de CPU ou de RAM ? Nous allons essayer de répondre à ces questions avec cet article.
Bilan de l'année 2021DomoPiGuillaume
Bilan de l'année 2021

2- Homebridge, ou comment intégrer tous vos équipements dans l'écosystème Apple (et en bonus dans Google Home)

Homebridge, ou comment intégrer tous vos équipements dans l’écosystème Apple (et en bonus dans Google Home)
Grâce à l’application Maison, vous pouvez contrôler vos accessoires HomeKit simplement et en toute sécurité depuis tous vos appareils Apple. Éteignez les lumières, voyez qui est à la porte, réglez la température du salon, montez le volume de la musique, et bien plus.
Bilan de l'année 2021DomoPiGuillaume
Bilan de l'année 2021

3- Abandon de Pi-Hole au profit d'AdGuard Home

Abandon de Pi-Hole au profit d’AdGuard Home
L’essor de l’Internet des objets et l’affluence d’appareils connectés rend nécessaire le contrôle de votre réseau dans son intégralité. AdGuard Home est un logiciel anti-pub et anti-traçage qui répond à cette problématique.
Bilan de l'année 2021DomoPiGuillaume
Bilan de l'année 2021

Ces 3 articles ont été publiés en début d'année et ont donc eu plus de temps pour acquérir leurs visites, mais ils continuent encore aujourd'hui d'être parmi les articles les plus populaires.

Les quelques points marquants de cette année :

  • Le groupe de la communauté sur Telegram a dépassé il y a quelques semaines les 100 membres (115 au moment de la publication de l'article), avec des échanges réguliers sur divers sujets, que ce soit lié aux articles ou aux envies d'apprendre et de partager de chacun. La bonne humeur est de rigueur, et il est toujours agréable de discuter avec les personnes présentes.
  • La stack technique du blog a été revue, non pour changer d'outils mais plutôt pour en faciliter le maintien dans le temps et améliorer la portabilité, la sécurité et les performances. Et le blog est maintenant hébergé chez moi, avec sauvegarde externe quotidienne.
  • Un nouveau rédacteur a rejoint l'équipe, Sshafi, ses premiers articles vous permettent d'améliorer NPM en y ajoutant GeoIP.

Histoire de vous faire patienter un peu, voici quelques idées d'articles qui en sont à différents stades de réflexion, voire même d'écriture pour certains :

  • La gestion des sauvegardes
  • Des approfondissements autour de Proxmox
  • Plusieurs articles pour expliquer certains fonctionnements de Docker et vous faire part de bonnes pratiques
  • Plus de tests de produits, ça a l'air d'avoir plu !

Mes camarades se joignent à moi pour vous souhaiter de passer de bonnes fêtes de fin d'année.
Passez de bons moments en famille ou avec vos amis, profitez de la vie et prenez soin de vous !

Ajouter la GeoIP à Nginx Proxy Manager 2/2

Ajouter la GeoIP à Nginx Proxy Manager 2/2

Lors du premier article, nous avons compilé et chargé les modules GeoIP dans Nginx Proxy Manager et nous avons téléchargé les bases de données GeoLite2 de Maxmind.

Ajouter la GeoIP à Nginx Proxy Manager 1/2
En complément de la mise en place de Nginx Proxy Manager pour gérer vos redirections de sous-domaines vers les services que vous hébergez, nous allons voir comment ajouter les informations GeoIP à NPM, nous permettant de bloquer les visiteurs venant de certains pays et/ou de loguer la provenance de
Ajouter la GeoIP à Nginx Proxy Manager 2/2DomoPiSshafi
Ajouter la GeoIP à Nginx Proxy Manager 2/2

Nous pouvons maintenant configurer NPM pour utiliser tout ça, afin de bloquer et/ou loguer en se servant des informations GeoIP. Pour cela, nous allons ajouter des fichiers de configuration "custom".

Utilisation de la base de données

Pour charger la base de donnée voulue et définir des variables contenant les informations qui nous intéressent, nous allons créer un fichier http_top.conf dans le dossier prévu par NPM pour les configurations avancées, à savoir /dockers/nginx-proxym/data/nginx/custom.

charset utf-8;
geoip2 /data/geoip2/GeoLite2-City.mmdb {
	auto_reload 3h;
	$geoip2_metadata_country_build metadata build_epoch;
	$geoip2_data_country_code default=XX source=$remote_addr country iso_code;
	$geoip2_data_country_name default=- country names fr;
	$geoip2_data_city_name default=- city names fr;
	$geoip2_data_region_name default=- subdivisions 0 names fr;
}
http_top.conf

Cette configuration va permettre de charger le fichier GeoLite2-City.mmdb précédemment téléchargé et d'extraire dans des variables le code pays, le nom du pays, le nom de la ville et le nom de la région en français.
Pour ne pas avoir de problèmes avec les noms accentués, on définit le charset en UTF8.

Définition des IPs à bloquer suivant la provenance

Pour bloquer les IPs en provenance de certains pays, vous pouvez opter pour deux approches :

  • Bloquer tous les pays et n'en autoriser que certains, en ajoutant les lignes suivantes au fichier http_top.conf :
geo $allowed_ip {
	default no;             # On interdit par défaut
	192.168.1.0/24 yes;     # On autorise le réseau local
}

map $geoip2_data_country_code $allowed_country {
	default $allowed_ip;
	FR yes;                 # On autorise les IP Française
	BE yes;                 # On autorise les IP Belges
}
  • Autoriser tous les pays et ne bloquer que certains, en ajoutant les lignes suivantes au fichier http_top.conf :
geo $allowed_ip {
		default yes;             # On autorise par défaut
		192.168.1.0/24 yes;      # On autorise le réseau local
}

map $geoip2_data_country_code $allowed_country {
		default $allowed_ip;
		CN no;                 # On interdit les IP Chinoises
		RU no;                 # On interdit les IP Russes
}
Info ! Pour trouver le code pays sur deux lettres (ISO-3166-1), vous pouvez utiliser cette liste : https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements

Mise en place du blocage

Une fois que nous avons défini ce qu'on veut bloquer/autoriser, il ne reste plus qu'à le rendre effectif.
Il faut pour cela ajouter ces lignes dans un fichier de configuration :

if ($allowed_country = no) {
	return 444;
}

Le fichier dans lequel ajouter ces lignes dépend du niveau où l'on veut effectuer le blocage :

  • Blocage Général : Il faut créer un fichier server_proxy.conf avec ce contenu dans le dossier /dockers/nginx-proxym/data/nginx/custom
  • Blocage au niveau de chaque Proxy Host : Il faut ajouter ce contenu dans la configuration avancée (Custom Nginx Configuration) de chaque hôte (Interface web de NPM).
Info ! En définissant plusieurs listes $allowed_ip et $allowed_country, il est possible d'avoir des blocages différents suivant les Proxy Hosts.

Création de logs avec les infos GeoIP

Pour l'instant, il n'est pas possible dans NPM de modifier le format de log par défaut, nous allons donc devoir créer un autre fichier de log contenant les infos GeoIP en plus.
Pour cela, ajoutons un nouveau format de log dans le fichier http_top.conf :

log_format proxy_geo escape=json '[$time_local] [Client $remote_addr] [$allowed_country $geoip2_data_country_code $geoip2_data_country_name $geoip2_data_region_name $geoip2_data_city_name] "$http_user_agent" '
                                 '$upstream_cache_status $upstream_status $status - $request_method $scheme $host "$request_uri" [Length $body_bytes_sent] [Gzip $gzip_ratio] [Sent-to $server] "$http_referer"';

Les informations loguées par NPM sont les même que celles par défaut, on y a juste ajouté les infos GeoIP : [$allowed_country $geoip2_data_country_code $geoip2_data_country_name $geoip2_data_region_name $geoip2_data_city_name], à savoir, si la requête est autorisée ou non, le code pays sur deux lettres, le nom du pays, le nom de la région et le nom de la ville.

Puis ajoutons dans la configuration avancée (Custom Nginx Configuration) de chaque hôte (Interface web de NPM), le code suivant qui génèrera le fichier de log au bon format à chaque requête sur cet hôte :

access_log /data/logs/proxy-host-%HOSTID%_access-geo.log proxy_geo;

En remplaçant %HOSTID% par l'id du proxy host que vous êtes en train de modifier.

On recharge la configuration de nginx avec la commande docker exec -it nginx-proxym nginx -s reload.

Et voilà, il n'y a plus qu'à tester la connexion aux hôtes avec un vpn, pour venir de différents pays/villes et voir si le blocage éventuel est bien effectif.

Vous pouvez voir le nouveau fichier de log en direct en utilisant la commande tail -f /dockers/nginx-proxym/data/logs/proxy-host-%HOSTID%_access-geo.log.

Exemples :

/dockers/nginx-proxym/data/logs# tail -f proxy-host-1_access-geo.log
[15/Dec/2021:14:24:58 +0000] [Client 192.168.1.51] [yes XX - - -] "Uptime-Kuma/1.11.1"  200 200 - GET https mon-hote.tld "/login" [Length 9708] [Gzip ] [Sent-to 192.168.1.69] ""
[15/Dec/2021:14:27:01 +0000] [Client 185.189.113.45] [yes FR France Île-de-France Paris] "Mozilla/5.0 (Linux; Android 10; CLT-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36"  302 302 - GET https mon-hote.tld "/" [Length 0] [Gzip ] [Sent-to 192.168.1.69] ""
[15/Dec/2021:14:27:47 +0000] [Client 89.40.182.9] [no IT Italie Lombardie Milan] "Mozilla/5.0 (Linux; Android 10; CLT-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36"   444 - GET https mon-hote.tld "/login" [Length 0] [Gzip ] [Sent-to 192.168.1.69] ""

La première ligne est une connexion provenant du réseau local, la deuxième provenant d'un serveur vpn à Paris, la troisième provenant d'un serveur vpn à Milan. On voit bien que les deux premières ont été acceptées et la troisième rejetée.


Conclusion

Le log de ces informations peut servir à faire des stats sur la provenance de vos visiteurs. Nous verrons dans un autre article comment exploiter ces informations. Quand au blocage par pays, il peut aider à sécuriser vos services web en bloquant les connexions venant de pays reconnus comme origine d'un gros pourcentage des attaques mondiales.

Bien qu'un peu technique, j'espère que cet article vous permettra de mettre en place de manière effective la GeoIP sur votre Nginx Proxy Manager en attendant que les modules soient intégrés dans l'image officielle.

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

Ajouter la GeoIP à Nginx Proxy Manager 1/2

Ajouter la GeoIP à Nginx Proxy Manager 1/2

En complément de la mise en place de Nginx Proxy Manager pour gérer vos redirections de sous-domaines vers les services que vous hébergez, nous allons voir comment ajouter les informations GeoIP à NPM, nous permettant de bloquer les visiteurs venant de certains pays et/ou de loguer la provenance de ces visiteurs.

Ouvrir vos services vers Internet avec Nginx Proxy Manager ou Synology DSM
On vous montre sur ce blog tout un tas de services à héberger chez vous ou sur un serveur dans le cloud, et vous pouvez y accéder quand vous êtes sur votre réseau local. Mais comment faire pour les rendre disponibles quand vous êtes en déplacement ou n’y êtes simplement
Ajouter la GeoIP à Nginx Proxy Manager 1/2DomoPiGuillaume
Ajouter la GeoIP à Nginx Proxy Manager 1/2

La GeoIP est une technique permettant de localiser un utilisateur en se basant sur son adresse IP. Pour cela, nous nous appuierons sur des bases de données que Maxmind met à disposition gratuitement : GeoLite2. Ces bases gratuites sont moins précises que leurs versions payantes, mais seront largement suffisantes pour notre utilisation.

NPM n'intégrant pas les modules nécessaires dans l'image officielle, il va nous falloir mettre les mains dans le cambouis pour compiler et intégrer ces modules.

Prérequis

Pour cet article, nous allons partir d'un fichier docker-compose.yml standard pour NPM :

version: '3.9'
services:
  nginx-proxym:
    container_name: nginx-proxym
    image: jc21/nginx-proxy-manager:latest
    restart: always
    volumes:
      - /dockers/nginx-proxym/data:/data
      - /dockers/nginx-proxym/letsencrypt:/etc/letsencrypt
    ports:
      - 80:80
      - 443:443
      - 81:81
    environment:
      TZ: "Europe/PARIS"
      DB_SQLITE_FILE: "/data/database.sqlite"

Pour les volumes, j'ai opté pour un chemin absolu afin d'être plus clair dans les chemins utilisés, à vous d'adapter en fonction de votre configuration.

Vous noterez que le fichier utilise une base SQLite au lieu de MariaDB, c'est juste pour simplifier, tout ce que nous allons faire est indépendant de la base de donnée utilisée.

Préparations pour la compilation des modules

Afin de stocker les modules que nous allons compiler et le fichier de configuration nginx qui nous permettra de les charger, nous allons créer un dossier "modules" que l'on va monter comme volume dans le conteneur.
Voici la partie volumes modifiée de notre fichier docker-compose.yml :

...
    volumes:
      - /dockers/nginx-proxym/data:/data
      - /dockers/nginx-proxym/letsencrypt:/etc/letsencrypt
      - /dockers/nginx-proxym/modules:/etc/nginx/modules
...

Nous allons créer un script compile-geoip2.sh que nous allons placer dans le dossier data de NPM. Il va nous permettre d'installer les packages et fichiers nécessaires puis de compiler les modules pour notre version de Nginx.

#!/bin/bash
apt-get install -y wget libpcre3 libpcre3-dev libssl-dev zlib1g-dev

ngxversion=openresty-$(/etc/nginx/bin/openresty -v 2>&1|cut -d "/" -f2)

mkdir /tmp/compile && cd /tmp/compile
wget https://openresty.org/download/$ngxversion.tar.gz
tar xvf $ngxversion.tar.gz

mkdir /tmp/compile/$ngxversion/modules
cd /tmp/compile/$ngxversion/modules
git clone https://github.com/leev/ngx_http_geoip2_module.git

cd ../bundle/nginx-$(/etc/nginx/bin/openresty -v 2>&1|cut -d "/" -f2|grep -oP '^\d*\.\d*\.\d*')
export LUAJIT_LIB="/etc/nginx/luajit/lib/"
export LUAJIT_INC="../LuaJIT-*/src/"
COMPILEOPTIONS=$(/etc/nginx/bin/openresty -V 2>&1|grep -i "arguments"|cut -d ":" -f2-)
eval ./configure $COMPILEOPTIONS --add-dynamic-module=../../modules/ngx_http_geoip2_module
make

cp -f objs/ngx_stream_geoip2_module.so /etc/nginx/modules/
cp -f objs/ngx_http_geoip2_module.so /etc/nginx/modules/
rm -f /etc/nginx/modules/ngx_geoip2_*
touch /etc/nginx/modules/ngx_geoip2_$ngxversion

rm -rf /tmp/compile	
compile-geoip2.sh

On rend le script exécutable :chmod +x /dockers/nginx-proxym/data/compile-geoip2.sh.

Modification de l'image NPM avec docker-compose

Afin de pouvoir compiler et exécuter les modules Geoip2 pour la version de Nginx présente dans l'image officielle de NPM, nous avons besoin d'installer quelques paquets systèmes supplémentaires : libmaxminddb0 et libmaxminddb-dev.

Pour intégrer des paquets à un conteneur, deux possibilités existent :

  • Faire notre propre image à partir de l'officielle (build) et y intégrer tout ce qu'il nous faut.
  • Ou modifier le script de lancement du conteneur afin qu'il fasse l'installation des paquets avant le lancement de NPM.

J'ai opté pour la 2ème option, certes cela rallonge un petit peu le démarrage du conteneur, mais on a l'avantage de rester sur l'image officielle, ce qui est plus pratique pour les mises à jour (via watchtower notamment ...).

Nous allons donc créer un autre script entrypoint.sh que nous allons placer dans le dossier data de NPM. Il va nous permettre, à chaque lancement de NPM, d'installer ces paquets et de lancer la compilation des modules s'ils ne sont pas présents où si la version de Nginx a changée lors d'une mise à jour de l'image officielle.

#!/bin/bash
apt-get update
apt-get install -y libmaxminddb0 libmaxminddb-dev

echo "=>Check for GeoIP modules files and version flag..."
set -- /etc/nginx/modules/ngx_geoip2_*
if [[ -f /etc/nginx/modules/ngx_http_geoip2_module.so && -f /etc/nginx/modules/ngx_stream_geoip2_module.so && -f "$1" ]]; then
        moduleversion=$(echo $1|cut -d "-" -f2|grep -oP '^\d*\.\d*\.\d*')
        ngxversion=$(/etc/nginx/bin/openresty -v 2>&1|cut -d "/" -f2|grep -oP '^\d*\.\d*\.\d*')
        if [ "$moduleversion" != "$ngxversion" ]; then
                echo "!=>GeoIP modules ($moduleversion) and nginx ($ngxversion) version mismatch !"
                echo "!=>Starting compilation !"
                /data/compile-geoip2.sh
        else
                echo "=>GeoIP modules found and version match nginx !"
        fi
else
        echo "!=>No GeoIP module found !"
        echo "!=>Starting compilation !"
        /data/compile-geoip2.sh
fi

apt-get clean
rm -rf /var/lib/apt/lists/*

set -- /etc/nginx/modules/ngx_geoip2_*
moduleversion=$(echo $1|cut -d "-" -f2|grep -oP '^\d*\.\d*\.\d*')
ngxversion=$(/etc/nginx/bin/openresty -v 2>&1|cut -d "/" -f2|grep -oP '^\d*\.\d*\.\d*')
echo "### GeoIP Modules $moduleversion - Nginx $ngxversion ###"
echo "### Starting NPM orignal entrypoint ###"
/init
entrypoint.sh

On rend le script exécutable : chmod +x /dockers/nginx-proxym/data/entrypoint.sh.

On modifie notre fichier docker-compose.yml pour écraser la configuration de l'entrypoint de l'image NPM. Pour cela, on ajoute une instruction :

...
  nginx-proxym:
    container_name: nginx-proxym
    image: jc21/nginx-proxy-manager:latest
    entrypoint: "/data/entrypoint.sh"
    restart: always
...
Note : Si vous avez configuré un healthcheck pour ce conteneur et utilisez un conteneur de redémarrage automatique comme deunhealth ou autoheal, il est conseillé d'augmenter la start_period du healthcheck (Par exemple 120s) pour les fois où la compilation se lancera.

On relance le conteneur pour prendre en compte les modifications du compose et lancer la première compilation des modules : docker-compose restart

Il est possible de suivre les actions effectuées au lancement en regardant le log du conteneur : docker logs nginx-proxym

Chargement des modules

Une fois le conteneur lancé et la compilation finie, on retrouve nos modules dans le dossier /dockers/nginx-proxym/modules.

/dockers/nginx-proxym/modules#  ls -l
total 208
-rw-r--r-- 1 root   root       0 déc.  13 23:59 ngx_geoip2_openresty-1.19.3.1
-rwxr-xr-x 1 root   root  116032 déc.  13 23:59 ngx_http_geoip2_module.so
-rwxr-xr-x 1 root   root   89632 déc.  13 23:59 ngx_stream_geoip2_module.so

Pour charger les modules compilés dans NPM, il suffit de créer un fichier geoip2.conf dans le dossier modules :

load_module /etc/nginx/modules/ngx_http_geoip2_module.so;
load_module /etc/nginx/modules/ngx_stream_geoip2_module.so;
geoip2.conf

Puis on recharge la configuration de nginx : docker exec -it nginx-proxym nginx -s reload

Note : Pour voir la version de nginx dans le conteneur : docker exec -it nginx-proxym nginx -v
Pour voir la version de nginx utilisée lors de la compilation des modules, il suffit de regarder le nom du 3ème fichier présent dans le dossier modules.

Téléchargement et mise à jour des bases GeoLite

Pour obtenir les bases Geoip2 gratuites de Maxmind, il faut d'abord s'inscrire sur leur site. Ça se passe là : https://www.maxmind.com/en/geolite2/signup.
Créez votre compte et une fois celui-ci validé, vous pouvez vous connecter afin de générer une clé de licence qui servira par la suite : https://www.maxmind.com/en/accounts/current/license-key.

Ajouter la GeoIP à Nginx Proxy Manager 1/2
Attention ! Notez bien l'Account ID et la Licence Key (celle-ci ne sera plus visible par la suite).

Afin de mettre à jour régulièrement les bases geoip, Maxmind propose une image docker très simple à utiliser. Il suffit de lui monter comme volume le dossier où l'on veut nos bases et de renseigner avec des variables d'environnement les informations de notre clé de licence.

On créé un nouveau répertoire geoip2 pour stocker nos bases dans le dossier data de NPM : /dockers/nginx-proxym/data/geoip2.
Et voici la partie service que l'on peut rajouter au fichier docker-compose de NPM :

  geoip-upd:
    container_name: geoip-upd
    image: maxmindinc/geoipupdate:latest
    restart: unless-stopped
    volumes:
      - /dockers/nginx-proxym/data/geoip2:/usr/share/GeoIP
    environment:
      TZ: "Europe/PARIS"
      GEOIPUPDATE_ACCOUNT_ID: XXXXXX
      GEOIPUPDATE_LICENSE_KEY: "XXXXXXXXXXXXXXXXX"
      GEOIPUPDATE_EDITION_IDS: "GeoLite2-City GeoLite2-Country GeoLite2-ASN"    # Bases à télécharger
      GEOIPUPDATE_FREQUENCY: 12                # Màj toutes les 12h
      GEOIPUPDATE_PRESERVE_FILE_TIMES: 1       # Conserver la date originale de création des fichiers.
docker-compose.yml

Il est possible de ne télécharger qu'une base suivant ce que l'on compte en faire :

  • GeoLite2-ASN : Informations sur l'ISP à qui appartient l'IP.
  • GeoLite2-Country : Geolocalisation de l'IP au niveau pays.
  • GeoLite2-City : Geolocalisation de l'IP au niveau ville. (Inclue le niveau pays)

Une fois le conteneur lancé, on retrouve nos fichiers de base de données dans le répertoire /dockers/nginx-proxym/data/geoip2.

/dockers/nginx-proxym/data/geoip2#  ls -l
total 86220
-rw-r--r-- 1 root root  7541424 déc.  10 00:57 GeoLite2-ASN.mmdb
-rw-r--r-- 1 root root 74871506 déc.  10 00:57 GeoLite2-City.mmdb
-rw-r--r-- 1 root root  5862627 déc.  10 00:57 GeoLite2-Country.mmdb

Voici notre fichier docker-compose.yml final pour la stack NPM GeoIP :

version: '3.9'
services:
  nginx-proxym:
    container_name: nginx-proxym
    image: jc21/nginx-proxy-manager:latest
    entrypoint: "/data/entrypoint.sh"
    restart: always
    volumes:
      - /dockers/nginx-proxym/data:/data
      - /dockers/nginx-proxym/letsencrypt:/etc/letsencrypt
      - /dockers/nginx-proxym/modules:/etc/nginx/modules
    ports:
      - 80:80
      - 443:443
      - 81:81
    environment:
      TZ: "Europe/PARIS"
      DB_SQLITE_FILE: "/data/database.sqlite"
              
  geoip-upd:
    container_name: geoip-upd
    image: maxmindinc/geoipupdate:latest
    restart: unless-stopped
    volumes:
      - /dockers/nginx-proxym/data/geoip2:/usr/share/GeoIP
    environment:
      TZ: "Europe/PARIS"
      GEOIPUPDATE_ACCOUNT_ID: XXXXXX
      GEOIPUPDATE_LICENSE_KEY: "XXXXXXXXXXXXXXXXX"
      GEOIPUPDATE_EDITION_IDS: "GeoLite2-City GeoLite2-Country GeoLite2-ASN"
      GEOIPUPDATE_FREQUENCY: 12
      GEOIPUPDATE_PRESERVE_FILE_TIMES: 1

Conclusion

Dans ce premier article, nous avons vu comment compiler les modules geoip2 pour la version nginx présente dans Nginx Proxy Manager et les charger afin de pouvoir les utiliser par la suite. Nous avons aussi vu comment télécharger et mettre à jour les bases de données GeoIP_Lite de Maxmind.

Tout est prêt pour utiliser les informations de GeoIP dans Ngnix Proxy Manager à des fins de blocage et/ou log. La configuration de tout ceci est abordée dans l'article suivant :

Ajouter la GeoIP à Nginx Proxy Manager 2/2
Lors du premier article, nous avons compilé et chargé les modules GeoIP dans Nginx Proxy Manager et nous avons téléchargé les bases de données GeoLite2 de Maxmind. Nous pouvons maintenant configurer NPM pour utiliser tout ça, afin de bloquer et/ou loguer en se servant des informations GeoIP. Pour ce…
Ajouter la GeoIP à Nginx Proxy Manager 1/2DomoPiSshafi
Ajouter la GeoIP à Nginx Proxy Manager 1/2

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

Installation de Frigate dans un LXC Proxmox

Installation de Frigate dans un LXC Proxmox

Aujourd'hui, on va parler d'une des raison qui m'a fait passer de ESXi à Proxmox, que vous avez pu découvrir dans l'article suivant :

Migration de ESXI à Proxmox
Aujourd’hui nous allons parler hyperviseur et virtualisation. Les deux solutions d’hyperviseur populaires sont VMware ESXi et Proxmox VE . Ces 2 plateformes de virtualisation permettent d’exécuter des machines virtuelles ou des conteneurs. Dans le monde professionnel, VMware est le roi de la virtua…
Installation de Frigate dans un LXC ProxmoxDomoPiHexamus
Installation de Frigate dans un LXC Proxmox

Il s'agit d'un conteneur, Frigate, un NVR (Network Video Recorder) qui possède une IA (Intelligence Artificielle) capable d'identifier les personnes et objets sur des flux vidéos. Cela permet d'améliorer son système de vidéosurveillance et d'éviter de recevoir des alertes intempestives lorsqu'une feuille a bougé ou qu'un nuage passe.

Installation de Frigate dans un LXC Proxmox

Pour cette analyse, Frigate a besoin de disposer de ressources, ce qu'il est possible de faire avec le CPU, mais ceci est très gourmand. Le développement a donc été réalisé autour du Google Coral, qui a été spécifiquement étudié pour procéder à de l'analyse vidéo. Celui-ci est donné pour être aussi performant que des CPU à 2000€, mais pour seulement 60€ ! Pour ma part, j'ai acheté la version USB d'occasion, celui-ci étant très compliqué à trouver actuellement.

Installation de Frigate dans un LXC Proxmox

Pour déployer Frigate, nous n'allons pas utiliser Docker directement (je vous entends "quoi un conteneur mais pas de Docker ?") mais un LXC dans Proxmox.
Une petite définition de LXC pour essayer de mieux comprendre ce que c'est :

LXC est l'acronyme de l'anglicisme LinuX Containers, il s'agit d'un système de virtualisation, utilisant l'isolation comme méthode de cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau. Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de « machine virtuelle ».

Mais alors Docker, machine virtuelle et LXC sont tous trois de la virtualisation, mais quelles sont leurs différences ?

  • Docker permet de virtualiser des service. Chaque conteneur Docker correspond à un service.
  • Un conteneur LXC est un environnement virtuel qui ne possède pas de partie physique émulée.
  • Une machine virtuelle est une émulation d'une machine physique à laquelle des ressource physique sont attribuées.

Je sens que beaucoup viennent de bondir de leur chaise ! Alors oui, j'ai extrêmement vulgarisé cela. Pour moi, je place les LXC entre un conteneur Docker et une machine virtuelle.

Bon nous avons une explication sur les LXC et nous savons que nous voulons utiliser le conteneur Frigate. On va pouvoir se lancer dans le vif du sujet.
Alors on se connecte à son interface Proxmox pour prendre la direction du stockage et télécharger le Template de notre conteneur, pour lequel nous allons choisir Debian 11 Standard.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Maintenant on va pouvoir créer notre LXC, à l'aide d'un clic droit sur notre serveur, on peut choisir Create CT. Il vous suffit de donner un nom au conteneur et de choisir le mot de passe pour votre utilisateur root du LXC. Pour le reste, rien de spécial, à vous d'ajuster les valeurs en fonction de vos besoins, envies et surtout du hardware.

Attention ! Ne pas cocher "Démarrer après création" à la fin.
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Avant le lancement du LXC, nous allons apporter quelques modifications, on commence par ajouter une particularité pour ne pas avoir de souci de SSH sous Debian 11.

Installation de Frigate dans un LXC Proxmox

Nous allons ensuite modifier le fichier de configuration pour permettre au LXC d'avoir accès au bus USB (adapter le numéro de bus au besoin) et au IGPU (voici un article pour mieux comprendre le IGPU). Pour cela, utilisez la commande suivante en SSH nano /etc/pve/lxc/ID.conf (en indiquant l'ID du conteneur que vous avez choisi).

Voici le contenu de mon fichier de configuration après ajout des dernières lignes.

arch: amd64
cores: 2
features: nesting=1
hostname: frigate
memory: 4096
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=AA:73:AE:CB:75:D9,ip=dhcp,ip6=dhcp,type=veth
ostype: debian
rootfs: local-lvm:vm-100-disk-0,size=16G
swap: 512
onboot: 1
unprivileged: 0
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.entry: /dev/bus/usb/002 dev/bus/usb/002 none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

Nous allons en profiter pour ajouter un montage de disque, pour permettre d'avoir la configuration stockée sur le NUC et la sauvegarde des médias sur le NAS Synology où j'ai plus d'espace de stockage.
Sur le NAS, il faut ajouter configurer le dossier partagé en NFS, je vous ai mis une capture d'écran de ma configuration juste en dessous.
Retournons sur Proxmox pour ajouter le stockage NFS dans le datacenter, où il vous faudra renseigner un nom pour le montage, l'adresse IP du serveur, le chemin d'accès au dossier (il est possible de rajouter des sous dossiers) et en contenu choisir Conteneur.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Maintenant, direction le LXC pour rajouter le Point de montage comme Ressources. Il vous faudra sélectionner le Stockage monté précédemment, dans mon cas NVR, et choisir la taille du disque ainsi que le chemin de montage sur le LXC. Vous pourrez vérifier le bon montage une fois le conteneur LXC démarré.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Le moment de démarrer le conteneur LXC est enfin arrivé ! Cela peut être long au premier démarrage, il faut avoir un peu de patience.

Comme sur chaque nouvelle installation, je vous recommande de commencer par mettre à jour le système avec les commandes apt-get update && apt-get upgrade.

Frigate est disponible en tant que conteneur Docker, nous allons donc installer Docker et pour cela je vous renvoie vers l'article qui en parle.

Installation de Frigate dans un LXC Proxmox

Suite à cela, nous allons installer Docker compose ou Portainer, dans mon cas j'utilise Portainer.

On va pouvoir vraiment attaquer Frigate avec la création de sa stack. Voici le contenu, à adapter selon vos besoins.

version: "3.6"
services:
  frigate:
      container_name: frigate
      restart: unless-stopped
      privileged: true
      image: blakeblackshear/frigate:stable-amd64
      volumes:
        - /dev/bus/usb:/dev/bus/usb
        - /etc/localtime:/etc/localtime:ro
        - volume-frigate-config:/config
        - /frigate/media:/media/frigate
#        - /ruser/0:/tmp/cache
#        - <path_to_directory_for_recordings>:/media/frigate/recordings
        - type: tmpfs # 1GB of memory, reduces SSD/SD Card wear
          target: /tmp/cache
          tmpfs:
            size: 1000000000
      ports:
        - 5000:5000
        - 1935:1935 # RTMP feeds
      healthcheck:
        test: ["CMD", "wget" , "-q", "-O-", "http://localhost:5000"]
        interval: 30s
        timeout: 10s
        retries: 5
        start_period: 3mfr

volumes:
  volume-frigate-config:
      driver: local

Le conteneur ne devrait pas réussir à démarrer car il manque le fichier de configuration. Dans le volume config, créer un fichier config.yml.

Voici la page de la documentation officielle pour vous aider à remplir ce fichier de configuration, et vous trouverez ci-dessous l'exemple de base :

mqtt:
  host: mqtt.server.com
cameras:
  back:
    ffmpeg:
      inputs:
        - path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
          roles:
            - detect
            - rtmp
    detect:
      width: 1280
      height: 720

Une fois le fichier renseigné, vous pouvez relancer le conteneur Docker et accéder à l'interface depuis votre navigateur sur l'adresse http://<IP.DU.LXC>:5000. Vous arriverez directement sur le Dashboard (sur lequel il n'y a pas de mot de passe).
Voilà à quoi il ressemble chez moi après avoir ajouté quelques caméras :

Installation de Frigate dans un LXC Proxmox

Conclusion

J'espère que cette découverte de la mise en place l'outil Frigate vous a plu, et je pense rédiger un second article pour vous le présenter en détails et voir ensemble comme le configurer et l'utiliser.

Si vous avez des questions sur l'installation de Frigate, ou même sur sa configuration ou son utilisation, n'hésitez pas à laisser un commentaire ou à venir nous retrouver sur le groupe Telegram de la communauté.

Comment administrer une base de données avec Adminer ?

Comment administrer une base de données avec Adminer ?

Que ce soit pour un site web ou des services auto-hébergés, vous disposez certainement d'une ou plusieurs bases de données, que vous devez administrer plus ou moins régulièrement. Vous connaissez probablement phpMyAdmin, l'un des outils les plus utilisés pour ça. Cette interface a été créée initialement pour gérer les bases de données MySQL depuis un serveur php. De nombreux hébergeurs, gratuits comme payants, le proposent, ce qui évite à l'utilisateur d'avoir à l'installer.

Comment administrer une base de données avec Adminer ?

Cette interface pratique permet d'exécuter, très facilement et sans grandes connaissances en bases de données, des requêtes comme les créations de table de données, insertions, mises à jour, suppressions et modifications de structure de la base de données, ainsi que l'attribution et la révocation de droits et l'import/export. Ce système permet de sauvegarder facilement une base de données sous forme de fichier .sql et d'y transférer ses données, même sans connaître SQL. L'utilisation de requêtes SQL reste toutefois possible.

Pour l'installation et l'utilisation de phpMyAdmin, je ne peux que vous rediriger vers la documentation officielle.

L'alternative : Adminer

Aujourd’hui je vous propose de découvrir un outil beaucoup moins connu que phpMyadmin, mais tout aussi efficace: Adminer.

Comment administrer une base de données avec Adminer ?

Adminer est outil léger et pratique qui remplit exactement le même rôle que phpMyadmin : vous permettre de gérer vos bases et tables MySQL en passant par une interface web.

Là où Adminer se démarque de phpMyAdmin, c’est par sa légèreté et sa simplicité d’installation. A l’inverse de phpMyadmin, qui nécessite un peu d’effort à l’installation et un minimum de configuration, Adminer se compose d’un seul et unique fichier php, qu’il vous suffit de déposer dans n’importe quel répertoire accessible sur le web. Adminer est disponible pour MySQL, PostgreSQL, SQLite, MS SQL et Oracle.

Pour l'installation, c'est très simple ! Il suffit de télécharger le fichier php (depuis la page github du développeur) sur votre hébergement, dans un dossier accessible et de vous rendre ensuite à l'adresse www.votresite.com/adminer.php .

Comment administrer une base de données avec Adminer ?

Il vous suffit alors de renseigner votre identifiant et mot de passe MySQL (et accessoirement un nom de base de données, mais ce n’est pas obligatoire) et de vous authentifier.

Comme vous pouvez le voir, l’interface est disponible en plusieurs langues, dont le Français. Toutes les fonctions qu’on peut attendre sont là : gestion (création, édition et suppression) de base de données, gestion des tables, des champs, importation de fichier SQL, exécution de requête SQL directe, gestion des utilisateurs MySQL, privilèges…

Comment administrer une base de données avec Adminer ?
Comment administrer une base de données avec Adminer ?
Comment administrer une base de données avec Adminer ?
Comment administrer une base de données avec Adminer ?

Il est possible d'étendre les fonctionnalités d'Adminer en lui ajoutant des plugins, pour ajouter le support d'extensions xml ou json dans les exports, ou encore changer le thème de l'interface, en ajoutant le fichier adminer.css aux côtés du fichier adminer.php.


Mise en place d'Adminer dans un environnement Docker

Avec les conteneurs que nous mettons en place au travers des articles rédigés, nous pouvons avoir besoin d'accéder à une base de données, pour corriger des entrées, exporter ou importer des données, ... Il est également possible d'ajouter Adminer en tant que conteneur Docker, dans une stack existante (ou dans sa propre stack).

Prenons l'exemple de la stack Nextcloud, qui contient une base de données mariaDB. Nous rajoutons un service adminer comme suivant :

version: '3.8'

services:
  nextcloud_db:
.....

  nextcloud_app:
.....

  adminer:
    image: adminer
    container_name: adminer
    ports:
      - 8080:8080  # Port sur lequel vous accéderez à l'interface web d'Adminer
    depends_on:
      - nextcloud_db  # Permet de s'assurer que le conteneur de la base de données est opérationnel avant de lancer le conteneur Adminer
    restart: unless-stopped

En relançant la stack avec la commande docker-compose up -d ou depuis Portainer, vous devriez pouvoir accéder à Adminer depuis votre navigateur à l'adresse http://<IP.HOTE.DOCKER>:8080. Le serveur est le nom du conteneur, et les identifiants sont ceux que vous avez défini dans le fichier .env.

Comment administrer une base de données avec Adminer ?

Conclusion

Au final, quel est l'intérêt d'Adminer par rapport à phpMyAdmin ? Comme je l'ai dit, la simplicité d'installation ! Un simple fichier php à déposer où bon vous semble, ou bien quelques lignes pour lancer un conteneur et c'est terminé ! L'autre point intéressant, c'est l'absence de configuration à faire. Adminer est immédiatement fonctionnel. Enfin, dernier point non négligeable, et vous l'aurez peut-être remarqué, mais étant bien plus léger, Adminer est également plus réactif à l'utilisation.

Si vous avez des questions sur cet article, n'hésitez pas à laisser un commentaire ou à venir nous retrouver sur le groupe Telegram de la communauté pour échanger.

Bilan 2022

Bilan 2022

Bonjour à tous, l'heure est venue, déjà, (et même si c'est un peu en avance puisque l'année n'est pas encore terminée) de procéder au bilan de cette année 2022 ! Cette dernière est passée beaucoup trop rapidement, je ne l'ai pas vu passer, et cette sensation s'accroît encore plus chaque année.

Peu d'articles ont été publiés sur les 12 derniers mois, mais ils ont eu un certain succès, et certains d'entre vous ont d'ailleurs demandés plus de détails. Nous avons également quelques demandes d'articles spécifiques, et allons essayer d'y répondre du mieux possible.

La fréquentation du blog a légèrement diminuée, et j'imagine que c'est principalement dû à la baisse de régime des publications. On peut néanmoins se rendre compte que les anciens articles continuent d'attirer un trafic constant et c'est une bonne nouvelle.

La chose positive que je retiens de cette année passée est la communauté Telegram, qui a continué à s'agrandir (nous sommes aujourd'hui plus de 170 membres), et sur laquelle règne une bonne ambiance. Tous les sujets peuvent être abordés, aussi bien techniques que d'actualité, et les échanges de points de vue ou les demandes d'aide trouvent toujours des réponses éclairées.

Le point que je souhaite améliorer pour l'année à venir est la régularité, peu importe que ce soir toujours des articles longs ou non, cela dépend surtout des sujets abordés, mais maintenir un rythme plus régulier ne pourra qu'aider à garder cette motivation, cette passion (qui sont toujours présentes je vous rassure).

Je termine ce court bilan en vous souhaitant à tous ainsi qu'à vos proches, de passer de bonnes fêtes de fin d'année ! Profitez de chaque instant avec votre famille, amusez-vous, et revenez en forme l'année prochaine !

Un clavier Zigbee sous MQTT

Un clavier Zigbee sous MQTT

Depuis le temps que je suis dans le monde de la domotique, j'ai souvent entendu la difficulté de trouver un matériel bien spécifique : un clavier pour contrôler les entrées / sorties du domicile ou encore lancer des scènes.
Après quelques recherches, j'ai donc trouvé un pack d'alarme fonctionnant sous le protocole Zigbee. Vous l'aurez donc compris, nous allons dans cet article voir l'intégration du clavier dans Zigbee2MQTT, qui communique avec Jeedom dans mon cas. Les autres équipements du pack seront détaillés dans un prochain article.


Présentation du clavier

C'est le premier test de produit que j'écris, donc je vais essayer de faire au mieux pour vous le présenter. Pour commencer, voici quelques photos de l'emballage, où vous trouverez un descriptif en anglais et en allemand. Dans le kit est fourni une fixation par adhésif 3M ou par vis pour chaque équipement.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Nous allons voir plus en détails le clavier en lui-même, avec ci-dessous le dos de celui-ci. On y trouve un petit orifice pour permettre l'inclusion (entouré en rouge), ainsi qu'un contact anti sabotage (entouré en bleu). Le clavier est alimenté par 2 piles CR123A fournies. Je n'est pas encore assez de recul sur son autonomie pour le moment, qui variera d'un utilisateur à l'autre selon le nombre d'utilisation par jour, mais le fabricant annonce une autonomie de 6 mois.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Nous passons maintenant sur la partie avant, où se situe les touches du clavier, qui sont rétro-éclairées (un point positif) :

  • Sur le haut se trouvent 3 voyants qui indiquent l'état de la batterie (cercle rouge), un point d'exclamation (Not ready, que nous expliquerons plus loin (cercle vert)), et un voyant réseau (cercle bleu).
  • Au centre, nous avons le pavé numérique (cadre orange).
  • En bas se trouvent les boutons pour valider ou annuler la saisie d'un code (cercle noir).
  • Sur la droite, les 4 boutons de mode (cadre violet) prennent place et permettent les actions suivantes de haut en bas : Désarmement, Armement partiel, Armement total et SOS, qui peuvent être allumés en vert afin de remonter l'état de l'alarme.
  • Tout en bas, au niveau des 2 petit trous (cadre rose), se trouve le capteur de proximité, qui permet l'allumage du rétro-éclairage sur détetion de l'approche d'une main.
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

On retrouve sur le côté gauche du clavier les références, et sur le côté droit une zone avec des trous, qui correspond à l'emplacement du buzzer.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Pour utiliser le clavier, le principe est de choisir un des modes (hors SOS), puis de taper votre code et enfin de valider.
Pour déclencher le mode SOS, il faut rester le doigt appuyé durant 3 secondes sur le bouton adéquat.


Configuration

Pour intégrer ce clavier dans votre instance Zigbee2mqtt, vous devrez simplement vous munir d'un trombone et appuyer pendant quelques secondes dans le petit trou à l'arrière du clavier,  jusqu'à ce que le voyant réseau clignote rapidement en vert. Vous trouverez le trou dans la zone où le clip de fixation mural sera placé.

Un clavier Zigbee sous MQTT

Vérifiez que l'inclusion est bien complète. Bravo, vous avez réussi !
Nous allons maintenant rentrer dans le vif du sujet, et cela ne fonctionne pas comme un périphérique plus classique.
Dans un premier temps, il faut initialiser la connexion pour lui permettre de communiquer avec le broker. Car si vous essayez une combinaison du type "Mode" + "code" + "Valider", le voyant réseau commencera par clignoter en vert (en attente de connexion) puis après quelques secondes deviendra rouge et émettra un bip sonore, et surtout vous ne constaterez aucune remontée d'information dans Zigbee2mqtt.

Initialisation de la connexion

Afin d'initialiser correctement cette dernière, vous devez envoyer l'information d'état de l'alarme. Pour cela, vous devez utiliser MQTT explorer dont nous vous avons déjà parlé dans cet article. Il faudra envoyer la commande suivante au topic MQTT que vous avez créé pour le clavier, en lui ajoutantla commande /set :

{
    "arm_mode": {
        "mode": "disarm"
    }
}
Un clavier Zigbee sous MQTT

Cela forcera le clavier en mode désarmé, prêt à être utilisé comme il se doit.
Vous pouvez maintenant appuyer sur l'un des boutons "mode" sur la droite, entrer un code et appuyer sur le symbole validé. Vous devriez voir une information remonter dans Zigbee2Mqtt contenant le mode d'action sélectionné et le code. Mais là encore, le clavier bip et le voyant réseau clignotera en rouge. Ceci est normal, car le clavier attend la confirmation de la bonne réception par le système domotique.

Un clavier Zigbee sous MQTT

Confirmer la réception

Sous Jeedom, j'utilise le plugin ZigbeeLinker pour communiquer avec Zigbee2Mqtt, mais pour le clavier j'ai dû utiliser le plugin JMQTT car sous ZigbeeLinker il n'est pas possible d'utiliser des variable comme #[aaa]# #[bbb] #.
Pour résumer, ZigbeeLinker me sert à recevoir des informations du clavier.

Un clavier Zigbee sous MQTT

Tandis que JMQTT me sert à envoyer des informations au clavier.

Un clavier Zigbee sous MQTT

Pour confirmer la bonne réception d'une information, il va falloir créer une commande avec des variables. Il faut donc créer un équipement avec le bon topic sous JMQTT :

Un clavier Zigbee sous MQTT

On va créer une commande de retour contenant un playload adapté à votre configuration. Voici la mienne : {"arm_mode": {"transaction": #[Préparation][Keypad][Dernière action]#,"mode":"#[Préparation][Keypad][Action]#"}}

Un clavier Zigbee sous MQTT

Maintenant, nous allons dans le plugin ZigbeeLinker pour créer un envoi d'ordre, qui pour toute réception de transaction, nous permettra de confirmer la bonne réception de celle-ci.

Un clavier Zigbee sous MQTT

Un nouveau test et le clavier devrait faire un joli bip long avec le voyant vert réseau.

Retour d'état

Les voyants d'action permettent d'avoir un retour d'état de l'installation.
Pour les commander, il va falloir créer des commandes séparées pour chaque état, toujours dans JMQTT, même si celles-ci passent correctement avec ZigbeeLinker. Il est possible de créer des commandes pour l'ensemble des modes suivants : disarm, arm_day_zones, arm_night_zones, arm_all_zones, exit_delay, entry_delay, not_ready, in_alarm, arming_stay, arming_night, arming_away. Dans mon cas,  je vais créer uniquement les commandes qui me seront utiles, et une commande avec une variable qui reprend l'état de mon système d'alarme, pour lequel j'ai utilisé les mêmes termes que ceux du clavier pour plus de facilité.

Un clavier Zigbee sous MQTT
Un clavier Zigbee sous MQTT

Automatiser l'initialisation

Il nous reste à automatiser l'initialisation en cas de perte de communication. J'ai dû chercher un moment mais je ne trouvais rien de fiable, j'ai donc finalement opté pour utiliser la présence, car oui je vous le rappelle, il y a un capteur de proximité qui détecte quand la main s'approche du clavier. A chaque détection de présence de la main, je renvoi l'état de l'alarme, ce qui a pour effet également d'initialiser la connexion.
On sait maintenant comment procéder, et on va le réaliser à l'aide d'une action sur valeur.

Nous prenons la direction du plugin ZigbeeLinker, pour nous rendre dans la configuration de la commande Présence. Il faudra définir que si la valeur d'état est 1, alors nous envoyons l'état actuel de l'alarme.

Un clavier Zigbee sous MQTT

Conclusion

Nous avons vu comment intégrer le clavier dans Zigbee2Mqtt et l'utiliser avec Jeedom, pour l'ensemble des fonctions proposées. Je vais continuer à travailler sur l'intégration du reste du matériel inclus dans le kit et vous en proposerais également des articles.
Je pense au final utiliser le plugin Alarme pour gérer le tout, sur lequel je ferais également un article pour vous montrer l'ensemble de l'automatisation.

Un clavier Zigbee sous MQTT

Kit alarme avec clavier

Linkind Kit de démarrage de système de sécurité Intelligent pour la Maison - 5 pièces - avec sirène de 110 DB - Détecteur de Mouvement PIR - Capteur de Porte/fenêtre

Acheter
Info ! Je n'ai pas encore essayé d'intégrer la sirène, mais d'après mes lectures, il ne faut pas l'intégrer avec l'application sur le téléphone au préalable, donc un peu de patience, un article spécifique viendra vous donner les étapes à suivre.

Si vous avez des questions sur la sirène ou son intégrtion dans Jeedom suite à cet article, ou souhaitez simplement  échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

La gestion des sauvegardes dans Proxmox

La gestion des sauvegardes dans  Proxmox

Aujourd'hui, nous allons nous concentrer sur un point important, les sauvegardes sous Proxmox, et dans notre cas, vers un partage NFS.

Prérequis

Pour réaliser ce type de sauvegarde, il vous faudra bien entendu utiliser l'hyperviseur Proxmox et avoir un stockage qui possède un partage NFS, par exemple un NAS Synology. Pour rappel, vous trouverez dans l'article suivant la migration que j'ai fait il y a quelques temps d'ESXi vers Proxmox.

Migration de ESXI à Proxmox
Aujourd’hui nous allons parler hyperviseur et virtualisation. Les deux solutions d’hyperviseur populaires sont VMware ESXi et Proxmox VE . Ces 2 plateformes de virtualisation permettent d’exécuter des machines virtuelles ou des conteneurs. Dans le monde professionnel, VMware est le roi de la virtua…
La gestion des sauvegardes dans  ProxmoxDomoPiHexamus
La gestion des sauvegardes dans  Proxmox

Configurer le partage NFS

Pour faire cette sauvegarde, nous allons ajouter un partage NFS si cela n'est pas déjà fait. Pour cela, dans l'interface de Proxmox, il faut choisir, dans le menu de gauche, Datacenter puis l'onglet Stockage. Ajoutez un montage NFS, à configurer de la sorte :

  • ID = le nom du montage (Evitez les espaces et caractères spéciaux)
  • Serveur = l'adresse IP du NAS Synology
  • Export = le chemin du montage sur le NAS
  • Contenu = le type de contenu que vous voudrez utiliser (Dans notre cas il faudra au minimum Fichier sauvgarde VZDump)

Je vous est également mis une capture de ma configuration coté Synology.

La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox

Configuration des sauvegardes.

Passons maintenant aux choses sérieuses, et pour ça, direction le Datacenter puis l'onglet Sauvegarde ou nous allons cliquer sur Ajouter.
Dans la fenêtre qui s'ouvre, nous allons commencer par choisir notre Stockage, la programmation de la tâche, sélectionner ce qui est concerné et pour le reste je vous laisse regarder. Ne cliquez pas tout de suite sur "Créer", il faut d'abord indiquer quelle politique de Rétention vous voulez définir avant.
Ici, vous allez pouvoir choisir combien de temps les sauvegardes seront gardées. Dans mon cas, je souhaite conserver chaque sauvegarde pendant 2 mois.

La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox

Restaurer une sauvegarde.

Sauvegarder c'est bien, s'assurer que les sauvegardes fonctionnent et qu'on est en mesure de les restaurer, c'est encore mieux !

  1. Dans le menu Sauvegardes, sélectionnez la sauvegarde que vous souhaitez restaurer.
  2. Il est possible d'afficher la configuration de cette dernière, pour contrôler le nom de machine par exemple.
  3. Enfin, cliquez sur Restaurer.
La gestion des sauvegardes dans  Proxmox
La gestion des sauvegardes dans  Proxmox

Vous pouvez choisir votre Stockage, ID , et vous pouvez cocher la case pour permettre un démarrage du conteneur / de la machine virtuelle à la suite de la restauration, chose que je ne fais pas car je veux vérifier mes montages USB avant le démarrage de celle-ci.

La gestion des sauvegardes dans  Proxmox

La restauration est lancée et vous pourrez suivre la log d'avancement.

La gestion des sauvegardes dans  Proxmox

Conclusion

Maintenant, vous connaissez une solution pour réaliser une sauvegarde de vos machines virtuelles ou conteneurs LXC hébergés sur votre hyperviseur Proxmox vers un stockage NFS. Et il est également bon de savoir restaurer, il sera trop tard de vérifier ça au moment où vous en aurez besoin.

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Suite à plusieurs mises à jour de l'application MyCanal sur notre téléviseur tournant sous Android TV, foireuse pour la première, changeant le mode de connexion et étant incomplète pour la seconde, je me suis mis en tête de trouver une alternative pour regarder les chaines de la TNT en direct.

Molotov me plaisait moyennement, je trouve son interface austère et n'ai jamais été convaincu.
Il y a bien les applications de chaque chaîne, MyTF1, 6Play, ArteTV, Pluto, ... mais ce n'est pas pratique du tout, devoir changer d'application en fonction de ce qu'on regarde, en plus de devoir créer un compte pour chacune d'entre elles.

Etant chez Free en tant que fournisseur d'accès à Internet, j'ai regardé si je ne pourrais pas configurer le flux m3u qu'ils mettent à disposition des abonnés, mais la qualité est moindre et l'intégration dans une application sur la tv n'était pas optimale. Finalement, en naviguant sur le site de Free, un nom m'a attiré, l'oeil, OQEE. Après vérification de ce qui était proposé, et notamment que c'était bien disponible pour mon abonnement (Freebox Révolution), je l'ai installée et ai tenté de regarder la TV par ce biais.

Et là, c'est le drame !

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Et oui, vu que je n'utilise pas le player tv de Free, et qu'en plus j'ai un routeur UniFi Dream Machine pour gérer mon réseau domestique, je n'avais pas configuré l'IPv6, n'en ayant pas le besoin. Nous allons voir ensemble comment configurer la Freebox et l'UDM pour disposer d'une connectivité IPv6 sur votre réseau.


Dans mon cas, le routeur UniFi est un UDM (UniFi Dream Machine) mais la configuration que je vais décrire s'applique également à l'UDM Pro ou à l'USG / USG Pro.

Nous allons en premier lieu récupérer l'adresse IPv6 de l'interface WAN de l'UDM. Pour cela, connectez-vous en SSH à votre routeur et utilisez la commande ip addr | grep "global dynamic" -B2 -A3.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Nous allons renseigner cette adresse dans la page de configuration de la Freebox. Connectez-vous sur http://mafreebox.freebox.fr, lancez les "Paramètres de la Freebox" et choisissez "Configuration IPV6". Il faut coller l'adresse IPv6 de l'UDM dans le second Next Hop uniquement pour déléguer un préfixe. Notez également le préfixe associé, nous allons en avoir besoin pour la suite de la configuration sur l'UDM.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Attention ! Il est important de ne pas modifier le Next Hop du premier subnet.

Sur votre contrôleur UniFi, rendez-vous dans "Settings", "Internet" et choisissez de configurer l'accès WAN.
Basculez les réglages avancés en manuel, activez le DHCPv6 pour la connection IPv6, et configurez une taille de délégation de préfixe de 64. Appliquez les changements.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Passons maintenant à la configuration de l'IPv6 pour le réseau local. Toujours dans l'interface du contrôleur UniFi, rendez-vous cette fois dans la partie "Networks" et choisissez de configurer le réseau local.
Si les réglages avancés ne sont pas déjà activées en manuel, c'est le moment de le faire ! Descendez en bas pour configurer l'IPv6, et choisissez de configurer le type d'interface sur "Static". Renseignez en tant que "IPv6 Gateway" le préfixe IPv6 du second  "Next Hop" de la Freebox.
Activez le RA (Router Advertisement), qui permet aux périphériques sur le réseau de configurer leur route par défaut automatiquement.
Activez également le DHCPv6, la plage d'adresses se renseignera en se basant sur le préfixe du sous-réseau.

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

A partir de ce moment, votre réseau est configuré pour fonctionner en IPv6 aussi bien qu'en IPv4, dépendant si les périphériques en sont capables ou non.

Pour vérifier que c'est bien le cas, vous pouvez exécuter un ping en IPv6 ou un nslookup pour résoudre un nom de domaine en IPv6.

guillaume ~ % ping6 google.fr
PING6(56=40+8+8 bytes) 2a01:e0a:99e:ec1:e01e:2d:d5ef:60a1 --> 2a00:1450:4007:809::2003
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=0 hlim=116 time=4.214 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=1 hlim=116 time=4.979 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=2 hlim=116 time=5.454 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=3 hlim=116 time=5.165 ms
--- google.fr ping6 statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 4.214/4.953/5.454/0.459 ms
guillaume ~ % nslookup -query=AAAA google.fr
Server:		2a01:e0a:99e:ec1::
Address:	2a01:e0a:99e:ec1::#53

Non-authoritative answer:
google.fr	has AAAA address 2a00:1450:4007:81a::2003

Bon très bien, la connectivité IPv6 fonctionne bien depuis un ordinateur, il reste à tester à nouveau l'application OQEE depuis la TV sous Android TV.

Mince, ça ne fonctionne toujours pas !! Après quelques recherches, et en discutant de ce problème avec un ami, il me dit qu'il a déjà eu le même besoin et avait rencontré le même problème, et qu'il y a un bug dans le firmware UniFi qui fait que le RA n'est pas bien activé, et qu'il faut le forcer à l'aide d'un script.

Attention ! Les étapes suivantes sont nécessaires au moment de l'écriture de cet article.
Un correctif devrait être déployé par Ubiquiti dans le futur pour corriger ce bug. (Le changelog de la mise à jour 1.12.22 de l'UDM pouvait le laisser penser, mais il n'en est rien.)

Le prérequis pour  mettre en place ce script est d'avoir installé les scripts udm-utilities de bootschiken, et configuré les "On-Boot-Script".
Si ce n'est pas déjà fait, il vous faudra suivre le tutoriel suivant :

Libérez votre Ubiquiti Unifi Dream Machine
L’Unifi Dream Machine est un équipement réseau tout-en-un (routeur, switch, point d’accès wifi) puissant et sur lequel on peut ajouter d’autres services.
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6DomoPiHexamus
Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Pour configurer ce nouveau script dans le but d'activer le RA correctement sur votre réseau local, accédez en SSH à l'UDM et rendez-vous à l'emplacement habituel des scripts personnalisés avec la commande cd /mnt/data/on_boot.d.

Créez un premier fichier de configuration avec la commande vi ipv6-ra.conf et éditez-le afin d'y coller le contenu suivant :

#
# Generated automatically by ubios-udapi-server
#

# Configuration of DHCP Server 'net_LAN_br0_192-168-1-0-24_IPV6'
no-dhcp-interface=lo
interface=br0
enable-ra
ra-param=br0,high,0
domain=local
dhcp-range=set:net_LAN_br0_192-168-1-0-24_IPV6,IPV6:IPV6::IP,IPV6:IPV6::IP,ra-only,64,86400
dhcp-option=tag:net_LAN_br0_192-168-1-0-24_IPV6,option6:dns-server,[::]
Attention ! Il faut bien entendu adapter le nom de l'interface, le domaine, ainsi que la plage d'adresse IPv6 en fonction des valeurs de votre réseau.

Vous pouvez vérifier le contenu du fichier créé par UniFi avec la commande cat /run/dnsmasq.conf.d/dhcp*IPV6.conf. Nous avons seulement rajoutés l'option ra-only dans la configuration DHCPv6.

Le deuxième fichier à créer est le script qui sera exécuté au démarrage de l'UDM. Créez-le avec la commande vi ipv6-ra.sh et collez-y le contenu suivant :

#!/bin/sh
cp /mnt/data/on_boot.d/ipv6-ra.conf /run/dnsmasq.conf.d/dhcp.dhcpServers-net_LAN_br0_192-168-1-0-24_IPV6.conf
start-stop-daemon -K -q -x /usr/sbin/dnsmasq

Rendez le script exécutable avec la commande chmod +x ipv6-ra.sh et exécutez-le tout de suite avec la commande ./ipv6-ra.sh pour appliquer la configuration.

On redémarre la TV pour forcer une reconnexion au réseau, et on se rend dans les paramètres réseaux pour vérifier qu'elle a bien récupérée une adresse IPv6.

Oui ! C'est bon cette fois !

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Lançons OQEE et surtout tentons de visionner une chaîne en direct pour valider le bon fonctionnement :

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

C'est bon, on peut confirmer que ça fonctionne correctement !


Conclusion

Merci d'avoir lu cet article jusqu'au bout, j'espère qu'il vous aura servi pour configurer votre réseau local en IPv6, et potentiellement pour ceux qui pourraient être concernés, à vous permettre de regarder les chaînes de télévision avec l'application OQEE de Free.

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.

❌
❌