VM / Docker / Add ons : comment optimiser ses containers/fiabiliser son install? Best practices?

Bonjour,

Au fur et à mesure des années, le système domotique grandit, on vient rajouter de plus en plus de choses, sans forcément revoir systématiquement.

J’ai dernièrement eu quelques soucis dans mon installation (pannes progressives sur les 2 disques en raid sur mon NAS, après 7 ans de loyaux services), qui bien que corrigés maintenat, m’ont amené à réfléchir un peu sur la fiabilisation / réorganisation de mon installation.

Comme dit le dicton, « qui veut aller loin ménage sa monture », je me dit qu’il serait peut être bien de « soulager » certaines pièces de mon installation, j’ai notamment :

  • fait l’acquisition d’un google coral (en M.2 pas en USB) pour soulager le NUC (pour lequel j’ai un peu galéré avec les drivers, mais la n’est pas le sujet :slight_smile: )
  • acquisition d’un nouveau disque dur pour le NUC, afin d’y basculer entres autres mes écritures journalières de frigate (je pense que les ecritures/suppressions quotidienes de frigate sur le nas ne sont pas top pour ce dernier)

Visu grosse maille de mon installation:

  1. VM vs CT ?
    Nb: le CT pouvant etre sous docker ou bien un addon HA

Par définition, une VM est plus « lourde » qu’un CT, je serais tenté de vouloir migrer les VM « légères » tel que mon unifi controller et pihole vers un CT.
Cela permettra de diminuer les ressources utilisées (moins d’OS).
Des avis pour ou contre?

  1. CT Docker ou bien Add on HA

J’envisage une situation cible avec dans des addon HA, uniquement ce qui est lié à la domotique pure (zwavejs, mqtt, esphome, mariadb(pour HA), dahuaVTO, zigbee2mqtt et nodered (que je n’utilise que pour la domotique)).
Je ne me sers pas bcp d’influxdb/grafana (pour le moment), mais dans tous les cas ce n’est que pour de l’exploitation de données HA, je serais donc tenté de le laisser en add on HA.
Comme cela, je garde mes applications « non domotique » hors de HA (LMS, Frigate, Nextcloud, NGINX Proxy manager, Duckdns, unifi controller, pihole).
Des avis pour ou contre?

  1. 1 seul docker, ou plusieurs dockers?

Suite a cette lecture, puis à celle-ci, j’ai l’impression qu’il est préférable d’avoir un docker par usage, dans mon cas cela donnerait:

  1. CT LXC Docker1 (LMS):
  • CT LMS
  • CT MariaDB (pour lms)
  • CT Phpmyadmin (pour lms)
  • CT Portainer (pour lms)
  1. CT LXC Docker2 (Nextcloud):
  • CT Nextcloud
  • CT MariaDB (pour nextcloud)
  • CT Phpmyadmin (pour nextcloud)
  • CT Portainer (pour nextcloud)
  1. CT LXC Docker3 (Frigate):
  • CT Frigate
  • CT Samba
  • CT Portainer (pour frigate)
  1. CT LXC Docker4 (Réseau):
  • CT Unifi controller
  • CT NGINX Proxy manager
  • CT Pihole
  • CT Portainer (pour réseau)

Des avis pour ou contre?

Si vous avez des liens sur ces sujets, je suis preneur, je n’ai pas trouvé des masses d’infos ettayées.

Merci d’avance!

Salut, je profite de ton sujet pour voir avec toi l’histoire de la corail en M2 mais aussi ton NUC (type pc industriel).

Je cherche un PC indus type QOTOM pour y mettre un proxmox avec OPNsense/PFsense et une VM HAOS ainsi qu’une autre pour debian+docker.

  1. Ta carte M2 corail, tu l’a mis sur l’emplacement disque m2 ?

  2. As tu une carte wifi dedans ? Quid de la porté, ou des retours particulier ?

Pour tes questions, je pense que c’est comme tout, une réponse différentes par utilisateurs lol.

Pour ma part, j’ai un routeur sous OpenWRT, un HP proliant Gen7 comme NAS (Proxmox avec OpenMediaVault, Proxmox pour anticiper le futur haha) puis un HP eliteDesk gen 800 g3 mini pour le reste avec :

  • une VM HAOS avec tous les add-ons concernant la domotique pour faciliter la gestion des sauvegardes, les mise à jour et la configuration (réseau et sécurité).
  • Une VM debian+docker pour tous les containers (hors domotique) par contre dans des réseaux docker séparé.

Le NDD est géré par un container Swag sur la machine docker.

Pourquoi une VM pour tous mes docker ? Pour n’avoir q"'un OS" a mettre a jour et a gérer. Maintenant si tu maitrises les LXC alors il semblerait que ce soit mieux qu’une VM (surtout niveau des ressources) mais je n’y connais rien encore dans ce domaine.

Mon but va être de passer sur un pc indus avec Proxmox + PFsense + HA sur la même machine, plus simple a fiabiliser.

Salut @McFly

Je me permets de m’immiscer vu ta question :

Perso sur un HP Elitedesk 800 G4 USFF, j’ai pris le coral « M.2 Accelerator B+M key » pluggé comme ça :

Ça fonctionne très bien :wink:

2 « J'aime »

@Herbs Super merci pour l’information car rien trouvé dessus et pas encie de commander dans le vide car pas trouvé sur Amazon.

Donc je suppose que pour le DD tu es sur un SSD 2.5 ?

J’arrête le HS après promis

@McFly

Nope, j’ai prix un G4 justement car il possède 3 socket m2 (2 M et 1 A+E).

Si tu regardes en bas de ma photo tu verras un ssd m2 intel :wink:

Mais j’ai une cage (pas sur la photo) pour du 2.5, qui vient normalement au dessus de tout ça.

Après pour une install sur debian 11 j’ai suivi la doc ici.

1 « J'aime »

Sur ce genre de chose, c’est vraiment affaire de goût… Donc il n’y a pas de bonne/mauvaise solution. Ce qu’il faut faire, c’est un truc qui te parait logique et où tu t’y retrouves. :slight_smile:

Dans la liste, tu mets des portainer partout, tu vas te retrouver avec 4 URL différentes avec chacun un endpoint (terminologie portainer).
Tu peux avoir une URL unique pour portainer et récupérer les infos des autres LXC au travers des endpoints. Pour cela, sur les LXC où il n’y a pas portainer, le plus simple est d’installer portainer-agent et tu auras toutes les instances sur une même interface.

Pour LMS, mariadb et phpmyadmin sont, je pense, inutiles. Avec cette image docker lmscommunity/logitechmediaserver:8.4.0, pas de mariadb.

Merci pour vos réponses.

@McFly, mon nuc est celui-ci, et j’ai pris cette carte coral M.2 B+M. Je ne me sert pas du wifi (mon nuc est raccordé en ethernet, il est situé dans ma baise de brassage).

Voici les emplacements (photo prise avant les ajout du deuxième SSD et Coral):

En gros ça ressemble un peu aussi à cela (photo trouvée dans les commentaires de mon nuc sur amazon, juste imagine que la carte coral remplace le ssd 960 pro):

Merci pour l’info, je ne connaissais pas, je vais creuser, mais ça semble une bonne option. Après il faut peut être que j’arrête portainer (que j’aime bien car c’est graphique), pour plutôt utiliser docker compose (plébiscité par les puristes, et plus « rapide » d’utilisation bien que moins sexy, et moins visuel). Pour le coup, les addon HA sont très faciles d’installation, de maintenance, et de monitoring, mais je pense que ce qui est hors domotique devrait être sorti tout de même.

Au temps pour moi j’ai fait des raccourcis en écrivant. En fait c’est pour pas pour lms, mais pour ma BDD KODI. Je peux toujours utiliser une autre bdd (par exemple celle de nextcloud dans mon listing inital, mais je ne suis plus dans une démarche séparée du coup).

En gros, ce que je retiens, c’est qu’il n’y a pas de « règle » sur la question de la répartition, et qu’il n’y a pas d’incidence majeure sur les performances.

J’utilise aussi kodi. Et sans bases de données. J’ai laissé la solution par défaut (ça doit être du sqllite) et tout va bien.

Plus rapide, ça se discute.
Et avec portainer tu peux utiliser les stacks , ce sont des docker compose…

En fait j’utilise la bdd pour kodi pour partager la mediateque avec mes 3 instances kodi de la maison. Rien de tel que d’arreter un film dans le salon et de le reprendre dans la chambre au meme endroit :).

C’est noté pour les stacks que je ne maitrise pas encore, je vais m’y pencher.

Ton idée de séparer tes services dans différents LXC peut être intéressante lors d’un crash de LXC par exemple. Ca évite que ca impacte un autre LXC en même temps.

Par contre ca t’oblige a utilisé Portainer 3 fois au lieu d’une donc je trouve pas très optimisé. Mais c’est mon avis personnel.

Chez moi j’ai un NUC ou dessus j’ai ma VM HA, un LXC avec tous mes docker (swag,zigbee2mqtt,esphome, mqtt,vaultwarder…ect) et une VM PBS qui me permet de faire mes sauvegarde de tout ca. Grace a PBS ca me permet de restaurer uniquement les fichiers dont j’ai besoin ou une VM complete. J’ai aussi limité l’utilisation du processeur a LXC pour donner la pleine puissante a HA, car je veux de la reactivité sur cette VM.

Pas tout à fait. Avec portainer-agent, on peut grouper toutes les VM/LXC dans un portainer unique.
L’agent permet de chiffrer le dialogue entre le portainer maitre et les LXC distant, sans avoir à ouvrir le socket docker en TCP (avec les certificats qui vont bien pour être en SSL).

Après c’est une question de choix, le portainer (par 1 ou par 3) c’est pas essentiel : old fashion avec un simple shell ça suffit …

GUI vs. CLI.
Le débat éternel.

La dessus, pour créer docker compose je trouve plus rapide car il créé les réseau et tout tout seul alors que avec portainer et les stack il faut le faire avant de lancer la stack, mais portainer permet de relancer et d’accéder au log rapidement.

Maos comme d’hab tout esg tres subjectif

On est d’accord, Portainer c’est du confort, mais quand ça marche pas et que tu dépends de ça pour analyser (parce que pas appris à faire sans)… C’est vachement moins efficace.

1 « J'aime »

Oui c’est clair, je donnais juste mon point de vue de looser non barbu sur docker en ayant essayé les deux hihi

1 « J'aime »

Euh je peux poser une question :raising_hand_man:

J’ai lu plusieurs fois que le LXC proxmox était parfait pour faire des tests mais pas de la production ! (J’ai oublié les vrais raisons mais il y a des spécialistes ici :crazy_face:)

J’ai donc mis une VM avec docker et portainer.
En fait j’ai plusieurs VM avec plusieurs docker et plusieurs portainer :rofl:
Et là l’agent portainer vient t’aider et faire un peu comme le cluster proxmox tout sous le même UI.

Bon après le must est d’avoir le serveur direct en docker sans passer par proxmox et la VM mais plus simple d’usage pour moi de tout avoir dans proxmox.

Par contre je sépare les choses swag authelia etc c’est à un endroit et zigbee2mqtt zwave Node red ailleurs dans un autre docker.

À tort peut être je ne mélange pas les genres

Voilà juste un partage pour ta réflexion

Sur VM, c’est comme si tu avais un machine physique, un lxc, est comme un docker, il utilise le noyaux de proxmox en faite. Pour info, j’ai toujours eu des problème avec docker dans VM et aucun souci en lxc.

Merci pour toutes ces réponses, le moins qu’on puisse dire c’est qu’il n’y a pas de réponse universelle :).
Je vais donc bien partir sur plusieurs ct lxc, ce qui me permettra en cas de plantage, upgrade, migration… de n’impacter qu’une partie de mon infra. Ca me permettra d’ailleurs d’avoir des ct unprivilegied ou pas (je n’ai pas encore bien saisi les nuances de cela, mais j’ai constaté que nombreux ct ne marchent pas en fonction de cette coche, j’ai notamment eu le cas avec nextcloud, heimdall, organizr…).

Me reste plus qu’a m’organiser d’un point de vue stockage avec les 2 hdd du nuc (idealement il faut que je stocke les configs et datas a un endroit commun, que je backup)

Il me semble que les best practices sont d’avoir un dossier racine commun au volume

Donc si c’est le cas et les bons droits sont bien affecter il n’y aura aucun problème pour créer les volumes pour chaque container depuis portainer

portainer met en visuel ce que vous pouvez avoir en cli avec docker

@jerome6994 Quel et l’intérêt ? Je pense aucun si tu fais un cluster docker sachant que tu as déjà un portainer le même portainer pourrais avoir accès a tous les autres docker « standalone » grace a l’agent et cela indépendant les uns des autres