Documentation for the Portainer service used to manage Docker on Enclari.
web/opt/stack/portainer/docker-compose.yml (typical)websecure with Let's Encrypt DNS-01 Hetznerportainer_dataA minimal pattern that works with Traefik + ForwardAuth. Choose one of the two service port options depending on your Portainer configuration.
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
networks: [web]
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.docker.network=web
- traefik.http.routers.portainer.rule=Host(`portainer.enclari.com`)
- traefik.http.routers.portainer.entrypoints=websecure
- traefik.http.routers.portainer.tls=true
- traefik.http.routers.portainer.tls.certresolver=le
- traefik.http.routers.portainer.middlewares=authentik-forwardauth@docker,secure-headers
# Option A: Portainer HTTPS on 9443 (default in recent versions)
- traefik.http.services.portainer.loadbalancer.server.port=9443
- traefik.http.services.portainer.loadbalancer.server.scheme=https
# Option B: Portainer HTTP on 9000 (older configs or if you explicitly enable it)
# - traefik.http.services.portainer.loadbalancer.server.port=9000
# - traefik.http.services.portainer.loadbalancer.server.scheme=http
volumes:
portainer_data:
networks:
web:
external: true
The middleware
authentik-forwardauth@dockeris defined on the Authentik server service and reused here.
/opt/stack/portainer and volume portainer_data are captured when backing up the portainer service./root/backup.sh backup portainer
restic snapshots --tag service=portainer
cd /opt/stack/portainer && docker compose down
rsync -aHAX --delete /opt/restore/portainer-<TS>/opt/stack/portainer/ /opt/stack/portainer/
rsync -aHAX --delete /opt/restore/portainer-<TS>/var/lib/docker/volumes/portainer_data/_data/ /var/lib/docker/volumes/portainer_data/_data/
docker compose up -d
# Update Portainer
cd /opt/stack/portainer
docker compose pull && docker compose up -d
# Logs
docker compose logs -f --tail=200 portainer
# Health
curl -I https://portainer.enclari.com