Proxmox Que choisir pour créer un conteneur AdGuard Home, un Wireguard, un SWAG ? LXC, Debian LXC, Debian VM ?

MilesTEG

Administreur
Membre du personnel
6 Septembre 2020
3 509
817
303
Hello par ici 👋
Dans mon projet de migration de certains services depuis mon DS920+ vers un des NUC (Geekom MiniIT13 ou NiPoGi AD008) sous Proxmox 8, je me pose la question de comment je crée ces services sur l'instance Proxmox...
  1. Directement dans un LXC puisqu'il est possible d'installer ces services via un des scripts de https://tteck.github.io/Proxmox/
  2. Dans une VM Debian, avec Docker dedans, Portainer + Portainer Agent pour la gestion.
  3. Dans un LXC Debian , avec Docker (? c'est possible ça ?)
Le point 2. me parait le plus sûr pour moi, je maitrise suffisamment Docker ^^.
Mais alors, je ne maitrise pas du tout le LXC... je ne sais même pas comment mettre à jour ce qui se trouverais dedans. Ni comment les gérer de manière centralisée comme avec Portainer...

Ma préférence irait donc sur le point 2.

Ensuite vient la séparation ou non des services...
Quelle est la meilleure manière de procéder ?
Tout passer dans une seule VM+Docker+Portainer ? (chose que j'ai actuellement sur mon Syno).
Ou bien faire une VM par service ? (ça m'embête pour les adresses IP que je n'ai pas à foison XD).


Ps : actuellement, sur le Geekom, j'ai une VM Windows 11, une VM LMDE6, une VM Debian 12 pour un partage Samba), et une VM HAOS.
La VM HAOS va potentiellement migrer sur le NiPoGi, car c'est lui qui va rester allumer H24 au lieu du Geekom qui sera lancé au besoin des VM Windows/Linux.


Merci d'avance pour tous vos conseils :)
 
bonjour ,
Je ne connais pas vraiment le fonctionnement des LXC, je ferais sûrement deux VM, une pour SWAG + Wireguard et une pour Adguardhome ou une pour Swag et une autre pour wireguard et adguardhome en fonction de si tu considère le VPN et l'anti "pub" faisant qu'un ou si tu considère ton reverse proxi et ton VPN comme indissociable.


Sinon tu as aussi l'option de faire qu'une VM avec les 3
 
Pour avoir essayé Docker et Portainer, je trouve Proxmox et les conteneurs LXC extrêmement simple, c'est peut-être ce qui va te dérouter le plus. Pour une mise à jour, sur chaque conteneur, un clic sur la console, puis les lignes de commandes classiques de mis à jour linux : apt-get update & apt-get upgrade -y
et c'est fini. Il y a moyen d'envoyer l'ordre à plusieurs conteneurs en même temps, mais là je ne sais pas. Perso, je préfère vérifier à chaque fois que la mise à jour se passe bien et qu'il n'y a pas de message d'erreur.

Je pense que le point 2 est le plus pertinent, car tu ne trouveras pas tous les services sous LXC et d'autre part en terme de perf je pense que c'est mieux.
  1. Dans un LXC Debian , avec Docker (? c'est possible ça ?)
Oui, il est possible d'installer Docker avec Portainer sur du LXC. Pour déployer des conteneurs LXC en une seule ligne de commande sur la machine hôte, je te recommande ce site : https://tteck.github.io/Proxmox/
Il y a également les modèles de Turnkey dispo dans Proxmox et tu peux installer un conteneur LXC via une procédure similaire à celle d'une VM via l'interface de Proxmox. C'est très subjectif, mais je trouve ça très simple.

La bibliothèque disponible d'installation directement en conteneur LXC est infiniment plus faible que celle dispo sous Docker, mais LXC fonctionne très bien, et si tu es formé à Docker, continuer à l'utiliser sous Proxmox via une VM est le plus approprié à mon avis.
 
  • J'aime
Réactions: MilesTEG
Bonjour,

Un avis sur tes options:
  • Perso, je prendrais 1. : Comme dit pierre liths, LXC s'apprend assez vite, et il faut garder à l'esprit qu'une fois "attaché dedans", c'est une machine a part entière avec sa distribution à laquelle s'applique les procédures de mises à jour habituelles. S'il n'y a pas de batch automatique pour installer un service que tu souhaites, il existe forcément un mode opératoire pour son déploiement pour Debian, Alpine ou autre Arch... Certes c'est un peu moins «presse-bouton» :p
  • Le 3. existe en effet: Docker dans un container LXC (pas fait, il y a semble-t-il des subtilités mais c'est une fois pour toutes)
  • Le 2. ne me semble pas apporter de plus value, sauf de la consommation de ressources pour une VM, alors que ...
  • 4. Installer docker en natif sur le NUC, «à côté» de Proxmox (ou podman, ou incus...), peut faire la même chose.

Ainsi
- Tu gardes tous les outils de Virtualisation VMs, LXC, Docker
- Tu peux démarrer immédiatement des services avec un outil que tu maîtrises
- Et garder sous le coude des moyens d'apprendre et te former et mesurer les écarts de perfs/ressources etc... entre un service dans Docker et le même en LXC, etc...

Nan ?
 
  • J'aime
Réactions: pierre liths
@pierre liths @Cram28
Merci pour vos réponses.
Je n'ai pas beaucoup de temps libre pour me former à un nouvel outil, qui même s'il vous parait simple, me semble pour moi assez complexe pour ne pas avoir envie d'investir le peu de temps libre dedans...
Mais un jour peut-être :)
Avec Proxmox, c'est toujours possible ^^

Quant-à l'installation de docker directement sur l'hôte debian de proxmox... ça ne m'enchante pas beaucoup, car je n'aurais pas de sécurité dédiée à docker... Bon, OK, je n'ai pas configuré le parefeu de proxmox, j'ai un routeur en amont qui gère plutôt bien, mais je préfère ne pas laisser la machine en accès direct autre que via Proxmox.
De toutes manières, les conteneurs que je veux installer n'ont pas de besoins particuliers pour être mis sur l'hôte directement.

Un jour, quand ma fille sera bien plus grande et ne requerra pas autant de mon temps, je verrais ce qui se fera ^^
Mais là, ça va être un GO pour une VM Debian 12 + docker + Portainer ;)
 
J'ai installé Docker via le tuto fourni par la doc de Docker : https://docs.docker.com/engine/install/debian/
Maintenant, je vais faire un conteneur pour Portainer.
J'ai créé ces dossiers /srv/docker/portainer/ afin d'y stocker les fichiers d'une part de Portainer, mais aussi pour les autres conteneurs via /srv/docker/.
Mais j'ai fait tout ça en root.
Faut-il que je crée un user dédié à Docker ? avant de continuer ?
Je ne trouve pas de tuto sur ce point là...
 
Bonsoir @MilesTEG,

Les containers LXC sont très simple à gérer et trés léger en ressources. Une fois que tu as fais la configuration de base (ssh, utilisateurs dédiés...), tu peux t'en servir comme image de base pour les futurs containeurs LXC -> gain de temps.
Apres en ssh, cela se gère comme n’importe quelle machine Linux... tu peux utilisez le cron pour les mises à jour automatique si cela t'ennuie de les faire manuellement.

Tu as déjà installé Docker dans une VM ? Je l'aurais fais dans un container LXC pour ma part ; cela prend moins de ressource qu'une VM et c'est plus rapide a lancer.

Maintenant que tu as ta VM avec Docker, colle y dedans tout tes containers Dockers : Portainer, swag, Wireguard... Il n'y pas d’intérêt de refaire une install de docker dans un autre containeurs LXC ou une VM pour isoler les services; a part peut être regroupé tout ce qui est accessible de l 'exterieur derrière Swag (wireguard... ) et de faire une 2eme VM (ou LXC) pour le reste des services Docker 'only LAN'.

Pour Portainer il faut l'installer en 'root' (sinon il aurait fallu installer docker en mode 'rootless'). Pour les autres containeurs tu peux créer un utilisateur dédié 'docker' pour les lancer avec cet utilisateur quand cela est possible (dépend des images docker).

Chez moi, pas beaucoup passe avec l'utilisateur 'docker', certaines ont besoins d’être lancer en 'root' :

docker.png


Et sinon il est possible aussi de lancer une image docker directement dans un container LXC sans installer Docker :D (mais cela reste du bidouillage) Et après tu peux arrêter et relancer ton containeur Docker directement depuis l'interface de Proxmox (tu configure ton containeur Docker via le fichier de configuration du containeur LXC).
 
trop de possibilités tue la possibilité 😅

Le soucis du lxc c’est qu’il ne semble pas y avoir de gestion centralisée/centralisable…
Entrer dans chaque lxc pour lancer un apt update et apt upgrade ca va être lourd… et donc pas pratique.
Ça me saoule déjà de le faire pour les différents serveur proxmox et les rares MV Linux que j’ai…
(Faut que je vois pour faire un script à lancer sur mon mac qui lance les commandes à distance en ssh… mais 😮‍💨🙄

Tu as déjà installé Docker dans une VM ? Je l'aurais fais dans un container LXC pour ma part ; cela prend moins de ressource qu'une VM et c'est plus rapide a lancer.
Je peux toujours refaire hein 😅 mais j’avais déjà un template VM Debian 12 toute personnalisée (ZSH, OMZ, Powerlevel10k et prompt aux petits oignons , paquets nécessaires installés comme eza et le qemu agent …)

Je t’avoue que rien que penser à devoir refaire tout ça dans le lxc ça me fait suer 😰
lol 😝

Pour Portainer il faut l'installer en 'root' (sinon il aurait fallu installer docker en mode 'rootless'). Pour les autres containeurs tu peux créer un utilisateur dédié 'docker' pour les lancer avec cet utilisateur quand cela est possible (dépend des images docker).

Chez moi, pas beaucoup passe avec l'utilisateur 'docker', certaines ont besoins d’être lancer en 'root' :

docker.png
Ok je vais reproduire comme toi alors , ce qui va correspondre à ma manière de fonctionner depuis les NAS.

Pour le docker en rootless, je t’avoue que je ne me suis pas posé la question tant je ne maîtrise pas non plus 😅
Un jour peut être…
Ils devraient proposer cette méthode depuis leur doc 😡
 
Je suis en train de penser qu’il me faudra une MV dédiée au serveur VPN WireGuard. Reste à voir comment et quoi je vais installer …
Objectif : accéder à tout mon LAN depuis l’extérieur ainsi qu’à mon serveur AdGuard Home. Et donc avoir une IP dans la plage d’adresse de mon LAN.
De manière sécurisée bien sûr.
 
Je suis en train de penser qu’il me faudra une MV dédiée au serveur VPN WireGuard. Reste à voir comment et quoi je vais installer …
Objectif : accéder à tout mon LAN depuis l’extérieur ainsi qu’à mon serveur AdGuard Home. Et donc avoir une IP dans la plage d’adresse de mon LAN.
De manière sécurisée bien sûr.

Pour installer 'Wireguard' dans un container LXC : https://bobcares.com/blog/proxmox-wireguard-lxc/

Pour accéder a Adguard, tu pourrais passer par Swag via un sous domaine connu que par toi.
Pour ton Adguard dans ton LAN, il faut que tu passe par un 'brige' ou un 'macvlan' av ec Docker et dans ta pile compose mettre :

Code:
    networks:
       vcontainer: # nom de ton macvlan
          ipv4_address: 192.168.x.x

Quand tu parle d’accéder à tout ton LAN, que veux tu dire ?
 
J'ai migré il y a pas longtemps sur proxmox et perso j'utilise un mix des deux. Certains services peuvent tourner via des LXC avec très peu de ressources comme Pi-Hole par exemple cela évite de créer un mac vlan via docker. J'ai aussi installer Plex via un script LXC pour le décodage HW qui me paraissait plus simple.

J'ai ensuite installé une VM debian + OMV pour gérer certains services comme samba et les containeur docker qui n'était pas exposé à l'extérieur + portainer

Pour les services extérieurs j'ai commencé à créer des VM alpine (plus léger ) + docker + portainer agent + connexion au partage samba

Par contre je suis absolument contre d'installer docker sur proxmox directement pour moi le "socle" n'est pas fait pour ce genre de chose.
 
Hello bonsoir à tous,

Mes questions bébêtes de presque la fin de semaine (on tient le bon bout ;))
Le soucis du lxc c’est qu’il ne semble pas y avoir de gestion centralisée/centralisable…
Qu'est-ce que tu entends par «centralisation» (l'IHM web de Proxmox ne me semble pas moins-disante pour LXC que Portainer pour Docker) ? Qu'est-ce que tu en attends / attendrais ?

Par contre je suis absolument contre d'installer docker sur proxmox directement pour moi le "socle" n'est pas fait pour ce genre de chose.
Ben pourquoi ? Proxmox s'appuie sur la distribution Debian stable (certes avec un noyau «maison»). En quoi ce «socle» ne serait pas fait pour supporter Docker ?

@+
 
Dernière édition:
  • J'aime
Réactions: pierre liths
Ben pourquoi ? Proxmox s'appuie sur la distribution Debian stable (certes avec un noyau «maison»). En quoi ce «socle» ne serait pas fait pour supporter Docker ?
Effectivement techniquement tu peux le faire aisément il ne s'agit pas d'une contrainte technique mais plutôt d'une contrainte d'utilisation.

Pour moi le but d'installer proxmox est de virtualiser ses services dans une ou plusieurs VM/LXC. Donc dans ma philosophie Proxmox doit servir uniquement à installer des VM/LXC + gestion de sauvegarde.
 
  • J'aime
Réactions: MilesTEG
Qu'est-ce que tu entends par «centralisation» (l'IHM web de Proxmox ne me semble pas moins-disante pour LXC que Portainer pour Docker) ? Qu'est-ce que tu en attends / attendrais ?
Je parlais d’une interface qui permette de faire les mise à jour de tous ces lxc d’un coup via soit un bouton soit une autre appli comme watchtower dans docker : ça vérifie s’il y a une mise à jour et si oui ça l’applique.
À moins de passer par un script ça n’est pas possible. Et encore moins en automatique.

Ps : je me suis fait hier un petit script qui lance des commande de mises à jour des machines Debian et proxmox via ssh . Mais la galère, il a fallut que j’installe sshpass sur mon mac pour passer le mot de passe ssh après avoir demandé une saisie de ce dernier via une demande du script.
Et c’est sans parler que les variables du Shell zsh et certaines apportées par OMZ ne sont pas disponibles… j’ai du ajouter certaines nécessaires à la mise à jour de OMZ et de ses plugins .

Bref c’était bien relou. Et encore une fois pas automatique.
 
Bonjour,
[ .. ] Donc dans ma philosophie Proxmox doit servir uniquement à installer des VM/LXC + gestion de sauvegarde.
D'accord, c'est un choix. De mon point de vue, un serveur est un serveur, il n'est pas nécessairement «dédié» à tel ou tel périmètre (sauf peut être dans des environnements pro avec des contraintes de disponibilité, d'exploitation, d'organisation et de compétences d'équipes spécialisées, etc...). Pour nos serveurs domestiques, je n'y vois pas les mêmes contraintes.
C'est un peu comme si sur nos NAS (Network Access Storage) on se refusait à y déployer des services - virtualisés ou natifs - parce que c'est fait «juste» pour du stockage et de la data.
Tu vas me dire que le constructeur l'a prévu ? Ok, Docker est prévu pour tourner sous Linux, et rien n'impose qu'il doive être tout seul sur la machine...

Mais soit, je comprends.

@ MilesTEG: Là aussi, je comprends.
Tu as vu çà: https://tteck.github.io/Proxmox/
Proxmox_VE-LXC-Updater.png


Ok d'acc ;), @+
 
Ps : je me suis fait hier un petit script qui lance des commande de mises à jour des machines Debian et proxmox via ssh . Mais la galère, il a fallut que j’installe sshpass sur mon mac pour passer le mot de passe ssh après avoir demandé une saisie de ce dernier via une demande du script.
Et c’est sans parler que les variables du Shell zsh et certaines apportées par OMZ ne sont pas disponibles… j’ai du ajouter certaines nécessaires à la mise à jour de OMZ et de ses plugins .

Bref c’était bien relou. Et encore une fois pas automatique.

Tu devrais pouvoir le faire en automatique avec sshpass via le cron. Ton script devra par contre aller chercher le mot de passe quelque part (éviter de le mettre en clair dans ton script). sshpass accepte aussi le passage du mot de passe par la variable d'environnement 'SSHPASS' :

Code:
sshpass -e ssh -p monPort monUser@monIP -- "Macommande" 2>&1
 
Bonsoir,
Dans ce cas ici, une connexion SSH par clé pourrait permettre de s'affranchir de la gestion du mot de passe ?
(pratique quand on automatise, et du coup exploitable avec scp, rsync, sftp...)
@+
 
Bonsoir,
Dans ce cas ici, une connexion SSH par clé pourrait permettre de s'affranchir de la gestion du mot de passe ?
(pratique quand on automatise, et du coup exploitable avec scp, rsync, sftp...)
@+
Bonsoir @Cram28, oui c'est possible aussi avec un échange de clés, mais la clé privée reste exposée dans le répertoire .ssh coté client. Cela devrait être possible d'utiliser un agent ssh pour gérer la clé privée avec sécurité, mais cela complique les choses.

Avec un mot de passe ssh, tu peux utiliser un mot de passe crypté avec gpg et utilisez 'gnupg-agent' pour gérer la passPhrase une seule fois par boot.

Perso, j'utilise les deux :
agent SSH avec un gestionnaire de mots de passe pour gérer mes clés privées pour me connecter manuellement (il faut que le coffre fort soit déverrouiller) avec un utilisateur 'sudo' et en automatique avec mot de passe pour un utilisateurs avec droits minimum (groupe et utilisateur unique) restreint au répertoire.
 
Ben pourquoi ? Proxmox s'appuie sur la distribution Debian stable (certes avec un noyau «maison»). En quoi ce «socle» ne serait pas fait pour supporter Docker ?

@+
Bonjour,

Je rebondi sur le sujet avec le partage d'une mésaventure :

J'ai 'cassé' mon fail2ban sur un de mes containers et impossible de comprendre ce qui ne vas pas (les regex fonctionne bien mais plus les jail...).
J'ai remis toute la config par défaut... rien à faire. Je me suis pris la tête une journée entière dessus.
La seule lien que je vois qui ai pu casser fail2ban : avoir installer 'ipset' pour gérer plus facilement les 'blacklist' avec iptables.
Je l'ai désinstallé depuis, mais rien à faire.
J'ai finis par supprimer mon container et restaurer en J-2 et tout re-fonctionne.

Tout ça pour dire, que faire une installation par dessus une 'distrib' comme Proxmox, ca pourrait avoir aussi des effets de bord et dans ce cas là, tu es coincé, pas de retour en arrière possible. Il est toujours mieux d'installer dans une VM ou un container, isolé de l'OS; en cas de problème -> on restaure :)
 
  • J'aime
Réactions: MilesTEG