Hello,
First, thank you for your work.
I am using Traefik on my personal server (Raspberry Pi) with several Docker containers. Zoneminder (CCTV software) is one of them.
My Zoneminder configuration is working. On local network, with local IP address, I can access the ZM dashboard and watch camera streams. It's using an apache web server to get IP camera streams, and display them on a single web page. The camera stream is collected with ffmpeg, via a http adress to the camera IP, with TCP protocol.
Now, I want to access ZM remotely, from outside my house, via https. I set everything correctly (port fowarding, DynDNS, Let's encrypt...). I can now access Zoneminder dashboard remotely. But I can't see camera streams, there is only a blank space. The log section of the software is also empty.
When I deactivate Traefik, and access ZM dashboard via public IP address, from another network, everything is working correctly and I can watch streams. That's why I think Traefik is blocking.
Http gives same result than https.
There is several topics about problems with reverse proxies and Zoneminder, but I don't know if it's related, and it's talking about Apache/Nginx reverse proxies. I don't know how to apply this to Traefik. Should I change something in the Apache ZM web server to make it work with Traefik ?
https://forums.zoneminder.com/viewtopic.php?t=27804
Here is my traefik.toml :
traefik.toml
[global]
checkNewVersion = true
sendAnonymousUsage = false
[api]
insecure = true
dashboard = true
debug = true
[log]
level = "DEBUG"
[providers]
[providers.docker]
exposedByDefault = false
network = "traefik_webgateway"
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.http]
[entryPoints.web.http.redirections]
[entryPoints.web.http.redirections.entryPoint]
to = "web-secured"
scheme = "https"
permanent = true
[entryPoints.web-secured]
address = ":443"
[certificatesResolvers]
[certificatesResolvers.default]
[certificatesResolvers.default.acme]
email = "XXXX@XXXX.fr"
storage = "acme.json"
caServer = "https://acme-v02.api.letsencrypt.org/directory"
[certificatesResolvers.default.acme.httpChallenge]
entryPoint = "web"
Here is my Traefik docker compose :
Traefik docker compose
version: "2"
services:
traefik:
image: traefik
ports:
- 80:80
- 8080:8080
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/serveur/traefik/traefik.toml:/traefik.toml
- /mnt/serveur/traefik/acme.json:/acme.json
networks:
- webgateway
restart: always
networks:
webgateway:
driver: bridge
Here is my Zoneminder docker compose :
Zoneminder docker compose
version: "2"
services:
zoneminder:
restart: always
privileged: true
environment:
- TZ=Europe/Paris
- ZM_DB_HOST=zm_db
- LANG=fr_FR.UTF-8
- LANGUAGE=fr_FR.UTF-8
- PUID=99
- PGID=100
- SHMEM=50%
- INSTALL_HOOK=0
- INSTALL_FACE=0
- INSTALL_TINY_YOLO=0
- INSTALL_YOLO=0
ports:
- 9999:9000
- 8443:443
- 8880:80
image: mcdl/zoneminder:1.34
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_webgateway"
- "traefik.http.routers.zoneminder-web.rule=Host(`XXX.XXX.XXX.fr`)"
- "traefik.http.routers.zoneminder-web.entrypoints=web-secured"
- "traefik.http.routers.zoneminder-web.tls=true"
- "traefik.http.routers.zoneminder-web.tls.certresolver=default"
- "traefik.http.middlewares.add-zm.addprefix.prefix=/zm"
- "traefik.http.routers.zoneminder-web.middlewares=add-zm@docker"
networks:
- traefik
volumes:
- "/mnt/serveur/zoneminder/config:/config"
- "/mnt/serveur/zoneminder/varcache:/var/cache/zoneminder"
networks:
traefik:
external:
name: traefik_webgateway
How could I access ZM streams with Traefik ? Any help would be greatly appreciated
Thank you !