Proxmox Agent Portainer VM
Si votre VM Proxmox héberge Docker, installez l’agent Portainer dans cette VM. Proxmox n’a pas besoin d’une configuration particulière : l’agent communique avec le Portainer Server via le réseau.
1. Préparer la VM
Dans la VM Linux :
1
2
docker --version
docker ps
Si Docker n’est pas installé, installez-le d’abord. Vérifiez également que la VM possède une adresse IP joignable depuis le serveur Portainer.
2. Déployer l’agent Portainer
Sur la VM Docker, exécutez :
1
2
3
4
5
6
7
docker run -d \
--name portainer_agent \
--restart=always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:lts
Le volume /var/run/docker.sock permet à l’agent de communiquer avec Docker. Le montage des volumes Docker permet notamment à Portainer d’accéder aux volumes de l’environnement.
Vérifiez que le conteneur fonctionne :
1
2
docker ps
docker logs portainer_agent
3. Autoriser le port 9001
Le serveur Portainer doit pouvoir joindre la VM sur le port TCP 9001.
Avec UFW :
1
2
sudo ufw allow from IP_DU_SERVEUR_PORTAINER to any port 9001 proto tcp
sudo ufw reload
Évitez d’exposer le port 9001 à Internet. Autorisez uniquement l’adresse IP du serveur Portainer, ou utilisez un réseau privé/VLAN entre les deux machines. L’agent standard nécessite que le port 9001 soit accessible depuis le serveur Portainer.
Depuis le serveur Portainer, testez :
1
nc -vz IP_DE_LA_VM 9001
Vous devez obtenir une connexion réussie.
4. Ajouter la VM dans Portainer
Dans l’interface Portainer :
- Ouvrez Environments.
- Cliquez sur Add environment.
- Sélectionnez Docker Standalone.
- Cliquez sur Start Wizard.
- Choisissez l’option Agent.
- Donnez un nom, par exemple
VM-Docker-Proxmox. - Dans Environment URL, indiquez :
1
IP_DE_LA_VM:9001
Exemple :
1
192.168.10.25:9001
Ne mettez pas http:// ou https:// dans ce champ : Portainer utilise la communication sécurisée de l’agent.
- Cliquez sur Connect.
Cas où Portainer Server est aussi dans cette VM
Si le serveur Portainer et l’agent sont installés sur la même VM Docker, vous pouvez utiliser une installation complète :
1
2
3
4
5
6
7
8
9
10
docker volume create portainer_data
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:lts
L’interface sera alors accessible sur :
1
https://IP_DE_LA_VM:9443
Portainer utilise par défaut le port 9443 pour l’interface et le port 8000 pour certaines fonctions Edge.
Architecture recommandée
1
2
3
4
5
6
7
8
[Serveur Portainer]
|
| TCP 9001
v
[VM Linux sur Proxmox]
|
v
[Docker + Portainer Agent]
Si vous ne pouvez pas ouvrir le port 9001 vers la VM, utilisez plutôt l’Edge Agent : il initie lui-même la connexion vers le serveur Portainer et est recommandé par Portainer pour les environnements distants ou difficiles à joindre.
Sur une VM Alpine Linux hébergée dans Proxmox, il faut installer Docker, puis lancer le conteneur Portainer Agent.
1. Installer et démarrer Docker sur Alpine
Connectez-vous à la VM en root :
1
2
apk update
apk add docker docker-cli-compose
Activez Docker au démarrage et lancez-le :
1
2
rc-update add docker default
service docker start
Vérifiez son fonctionnement :
1
2
docker version
docker ps
Si vous utilisez un compte non-root, ajoutez-le au groupe Docker :
1
addgroup utilisateur docker
Puis reconnectez-vous à la session.
2. Déployer Portainer Agent
Lancez l’agent avec l’image LTS :
1
2
3
4
5
6
7
8
9
docker volume create portainer_agent_data
docker run -d \
--name portainer_agent \
--restart=always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:lts
Portainer utilise le socket Docker Unix et le port TCP 9001 pour l’agent standard. Le montage de /var/lib/docker/volumes est nécessaire pour permettre la gestion des volumes Docker depuis Portainer.
Contrôlez le conteneur :
1
2
docker ps
docker logs portainer_agent
Vous devriez voir un conteneur portainer/agent:lts en état Up.
3. Ouvrir le port 9001
Si un pare-feu est actif dans la VM, autorisez uniquement l’adresse IP du serveur Portainer.
Avec iptables :
1
iptables -A INPUT -p tcp -s IP_SERVEUR_PORTAINER --dport 9001 -j ACCEPT
Remplacez :
1
IP_SERVEUR_PORTAINER
par l’adresse réelle du serveur Portainer.
Depuis le serveur Portainer, testez la connexion :
1
nc -vz IP_DE_LA_VM_ALPINE 9001
Exemple :
1
nc -vz 192.168.1.50 9001
4. Ajouter l’environnement dans Portainer
Dans Portainer Server :
- Allez dans Environments.
- Cliquez sur Add environment.
- Sélectionnez Docker Standalone.
- Choisissez Agent.
- Saisissez l’URL suivante :
1
IP_DE_LA_VM_ALPINE:9001
Exemple :
1
192.168.1.50:9001
- Donnez un nom à l’environnement.
- Cliquez sur Connect.
N’utilisez pas http:// devant l’adresse.
5. Vérifications utiles
Vérifier que Docker écoute :
1
ss -lntp | grep 9001
Vérifier l’adresse IP de la VM :
1
ip addr
Vérifier le démarrage automatique :
1
rc-status
Pour mettre à jour l’agent :
1
2
3
docker pull portainer/agent:lts
docker stop portainer_agent
docker rm portainer_agent
Puis relancez la commande docker run précédente. Il est préférable de mettre à jour le serveur Portainer avant ses agents.
Points importants avec Alpine
- La VM doit utiliser une architecture compatible avec l’image Docker, généralement
amd64. - Le service Docker doit être démarré avant le lancement de l’agent.
- Le port
9001doit être accessible depuis Portainer Server. - Si le serveur Portainer ne peut pas joindre la VM, utilisez plutôt un Edge Agent, qui fonctionne avec une connexion initiée depuis la VM.
- Si Docker fonctionne en mode rootless, le montage de
/var/run/docker.socket les permissions peuvent nécessiter une configuration différente.