Skip to content

Portainer is a container management platform, with it you can easily deploy, configure and secure containers in minutes on Docker, Kubernetes, Swarm and more.

I use Portainer to deploy every Docker stack in my swarm.

version: '3.2'
services:
agent:
image: portainer/agent:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
ports:
- 9001:9001
networks:
- homelab
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
portainer:
image: portainer/portainer-ee:latest
command: -H tcp://tasks.agent:9001 --tlsskipverify
ports:
- "9000:9000"
- "8000:8000"
volumes:
- portainer_data:/data
networks:
- homelab
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
labels:
- traefik.http.routers.portainer.rule=Host(`portainer.zrx.sh`)
- traefik.http.services.portainer.loadbalancer.server.port=9000
- traefik.http.routers.portainer.middlewares=homelab-whitelist@file
- traefik.http.routers.portainer.tls=true
- traefik.http.routers.portainer.tls.certresolver=production
- traefik.http.routers.portainer.tls.domains[0].main=zrx.sh
- traefik.http.routers.portainer.tls.domains[0].sans=*.zrx.sh
networks:
homelab:
external: true
volumes:
portainer_data:

Then run :

Terminal window
docker stack deploy -c portainer-agent-stack.yml portainer

Replaced with App iconDockge because it’s way simpler and more suitable for homelab imo.