我正在努力配置 traefik:v2.6,以便我可以访问在 docker 上运行的自托管 netdata 实例。这是我的撰写文件:
version: "3"
services:
netdata:
image: netdata/netdata
volumes:
- "netdataconfig:/etc/netdata"
- "netdatalib:/var/lib/netdata"
- "netdatacache:/var/cache/netdata"
- "/etc/passwd:/host/etc/passwd:ro"
- "/etc/group:/host/etc/group:ro"
- "/proc:/host/proc:ro"
- "/sys:/host/sys:ro"
- "/etc/os-release:/host/etc/os-release:ro"
labels:
- "traefik.enable=true"
- "traefik.http.routers.netdata.rule=Host(`netdata.$myserver`)"
- "traefik.http.services.netdata.loadbalancer.server.port=19999"
- "traefik.http.routers.netdata.entrypoints=http"
- "traefik.docker.network=proxy"
restart: unless-stopped
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
networks:
- proxy
volumes:
netdataconfig:
netdatalib:
netdatacache:
networks:
proxy:
external: true
当我尝试通过
netdata.$myserver
访问网络数据时,我只看到背景,但看不到仪表板:
检查 Firefox 中的开发者设置会显示以下消息:
Loading failed for the <script> with source “http://netdata.$myserver/dashboard-react.js”. [netdata.$myserver:16:1](http://netdata.$myserver/)
Uncaught ReferenceError: NETDATA is not defined
225 main.js:435
p (index):16
566 main.7d1bdca1.chunk.js:2
p (index):16
324 main.7d1bdca1.chunk.js:2
p (index):16
f (index):16
e (index):16
<anonymous> main.7d1bdca1.chunk.js:2
文档提供了几种反向代理配置的模板,但我无法将它们转换为我可能错过的 traefik 设置。
我尝试在规则
&& Path('/netdata')
中添加traefik.http.routers.netdata.rule=Host('netdata.$myserver')"
,但没有任何区别。 traefik 仪表板不显示任何与 netdata 相关的错误。我在这里缺少什么?
如果您使用像 /netdata 这样的子路径,则必须在末尾添加斜杠来调用该目录,然后它将起作用。
labels:
- "traefik.enable=true"
- "traefik.http.routers.netdata.entrypoints=web"
- "traefik.http.routers.netdata.rule=Host(`yourdomain`) && PathPrefix(`/netdata`)"
- "traefik.http.routers.netdata.service=netdata"
- "traefik.http.services.netdata.loadbalancer.server.port=19999"
- "traefik.http.routers.netdata.middlewares=netdatapathstrip"
- "traefik.http.middlewares.netdatapathstrip.stripprefix.prefixes=/netdata"
我可以访问 http://yourdomain/netdata/ 下的仪表板 如果我调用 http://yourdomain/netdata 我会得到与您提到的相同的行为。
您似乎正在使用子域。 该 Host 值需要实际解析为某些内容。 (如 dns 需要设置或添加到 docker 主机的 /etc/hosts 文件中。)
这是我的 docker-compose 文件,它几乎是来自 netdata 文档的逐字记录。
version: '3.4'
networks:
traefikweb:
external: true
services:
netdata:
image: netdata/netdata
container_name: netdata
pid: host
labels:
- "traefik.enable=true"
- "traefik.ports=19999"
- "traefik.http.routers.netdata.rule=Host(`netdata.traefik.example.com`)"
- "traefik.http.routers.netdata.entrypoints=websecure"
- "traefik.http.routers.netdata.tls=true"
networks:
- traefikweb
restart: unless-stopped
cap_add:
- SYS_PTRACE
- SYS_ADMIN
security_opt:
- apparmor:unconfined
volumes:
- netdataconfig:/etc/netdata
- netdatalib:/var/lib/netdata
- netdatacache:/var/cache/netdata
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /etc/os-release:/host/etc/os-release:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
netdataconfig:
netdatalib:
netdatacache: