Eoras
Novembre 17, 2023, 8:55
1
Bonjour,
J’ai voulu essayer d’installer Gladys sur mon PI 4, cependant j’ai un soucis car je n’arrive pas a accéder à au Dashboard.
J’utilise Traefik 2.10.5 en reverse proxy, sur une version 32Bit de Pi OS 12 (bookworm) fraichement installée et voici la configuration :
compose.yml
services:
traefik:
image: traefik:2.10.5
container_name: traefik
ports:
- "80:80"
- "443:443"
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`montraefik.dns.net`)"
- "traefik.http.routers.traefik.entrypoints=webSecure"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls=true"
- "traefik.http.routers.traefik.tls.certResolver=letsencrypt"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./config/traefik.yml:/etc/traefik/traefik.yml
- ./config/acme.json:/acme.json
- ./config/dynamic-conf.yml:/etc/traefik/dynamic-conf.yml
restart: always
networks:
- traefik
networks:
traefik:
external: true
config/traefik.yml
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: webSecure
scheme: https
permanent: true
webSecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
network: traefik_network
exposedbydefault: false
log:
level: INFO
api:
dashboard: true
debug: true
certificatesResolvers:
letsencrypt:
acme:
email: monemail@dns.net
storage: acme.json
tlsChallenge: {}
httpChallenge:
entryPoint: web
conf/dynamic-conf.yml
tls:
options:
default:
minVersion: VersionTLS12
sniStrict: true
mintls13:
minVersion: VersionTLS13
conf/acme.json
{}
Un petit chmod 600 sur le fichier acme.json comme demandé à par Traefik avant le lancement…
Jusque là tout fonctionne, j’accède bien à mon dashboard Traefik etc… ensuite, je veux monter Gladys avec mon reverse proxy, voici mon compose.yml :
services:
gladys:
image: gladysassistant/gladys:v4
container_name: gladys
restart: always
privileged: true
network_mode: host
cgroup: host
logging:
driver: "json-file"
options:
max-size: 10m
labels:
- "traefik.enable=true"
- "traefik.http.routers.gladys.rule=Host(`mongladys.dns.net`)"
- "traefik.http.routers.gladys.entrypoints=webSecure"
- "traefik.http.routers.gladys.tls=true"
- "traefik.http.routers.gladys.tls.certResolver=letsencrypt"
- "traefik.http.services.gladys.loadbalancer.server.port=8078"
environment:
NODE_ENV: production
SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
SERVER_PORT: 8078
TZ: Europe/Paris
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data/gladysassistant:/var/lib/gladysassistant
- /dev:/dev
- /run/udev:/run/udev:ro
watchtower:
image: containrrr/watchtower
restart: always
container_name: watchtower
command: --cleanup --include-restarting
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
traefik:
external: true
Génération des certificats letsencrypt OK, par contre j’obtiens un Bad Gateway de traefik, et j’arrive pas a le debug j’ai pas de logs sur cette erreur dans traefik ni dans Gladys…
J’ai essayé pas mal de chose mais impossible à traefik de lancer le bon service.
Peut-être que quelqu’un à eu le même soucis ?
Je vous remercie
Quand tu accès au port 8078 de ta machine, tu vois bien Gladys ?
Eoras
Novembre 17, 2023, 9:09
3
pierre-gilles:
8078
Si je vais sur http://pi.local:8078 oui j’ai bien Gladys qui s’affiche c’est ça qui est très bizare.
Je connais pas bien Traefik (je suis plus team Caddy https://caddyserver.com/ ), mais je vois rien qui spécifie le host/IP de Gladys dans ta config Traefik ?
Eoras
Novembre 17, 2023, 9:13
5
mon hostname: mongladys.dns.net est un DynDNS qui redirige bien vers mon serveur pi, j’ai essayé ce hostname sur une appli web de mon pi et ça fonctionne bien sur mon pi.
Je continue de chercher, mais si quelqu’un à eu ce soucis là je suis preneur.
Je parlais pas de ça, il n’y a rien dans ta config qui dit comment ton Traefik contacte ton container Gladys local
En gros j’imagine que tu veux faire:
Utilisateur ↔ Traefik ↔ Gladys
Le dernier maillon il est où dans ta config ?
Eoras
Novembre 17, 2023, 9:19
7
C’est mon label de traefik qui dit link le service sur le port 8078
Dans mon Dashboard Traefik, j’ai bien mon Host :
Eoras
Novembre 17, 2023, 9:20
9
Qui pointe vers un service qui est bien sur le port 8078
En fait, c’est plus compliqué. Il faut soit:
que gladys ne soit pas en mode network_mode: host
(mais c’est un prérequis)
soit que tu configures traefik pour taper sur le port 8078 de ta machine (ici, 127.0.0.1 représentre l’adresse IP du container traefik, et pas de ta machine)
Pour cela, je rajouterais la ligne suivante dans les labels de gladys
- "traefik.http.services.gladys.loadbalancer.server.url=<ip de ta machine>"
Je précise que c’est uniquement un pré-requis si il souhaite utiliser des intégrations qui vont utiliser des appareils sur son réseau. Exemple: LAN Manager, Intégration Xiami, Philips Hue, etc…
Si tu retire le network_mode=host, ça marchera (Gladys s’affichera), mais les intégrations qui utilisent le réseau ne marcheront pas (normal, elles ne verront que leur réseau isolé qui n’est pas ton réseau wi-fi)
Eoras
Novembre 17, 2023, 9:30
12
Effectivement, j’ai omis d’ajouter le network au service gladys (quel abrutis…)
J’obtiens l’erreur suivante :
service gladys declares mutually exclusive network_mode
and networks
: invalid compose project
Du coup, j’ai retiré mon network du service et j’ai mis ce que tu m’a dit :
- "traefik.http.services.gladys.loadbalancer.server.url=mongladys.dns.net"
J’ai toujours mon Bad Gateway
Eoras
Novembre 17, 2023, 9:31
13
donc je dois bien garder mon host :=) car je dois pouvoir l’utiliser
Tu as testé comme disait @cicoub13 ?
- "traefik.http.services.gladys.loadbalancer.server.url=<ip de ta machine>"
Eoras
Novembre 17, 2023, 9:37
15
Oui j’ai mis :
- "traefik.http.services.gladys.loadbalancer.server.url=mongladys.dns.net"
monglaydys.dns.net est un DynDNS qui redirige vers mon IP public
C’est pas la même chose, tu as essayé de mettre l’IP privée de ta machine ? (sur ton réseau local)
Eoras
Novembre 17, 2023, 9:44
17
- "traefik.http.services.gladys.loadbalancer.server.url=192.168.86.20"
Toujours même soucis: Bad Gateway
Par contre dans mon dashboard Traefik, l’ip serveur ne change pas, j’ai toujours 127.0.0.1:8078… bizarre
Et pas de logs traefik significatifs ?
En regardant la doc, ce serait plutôt :
- "traefik.http.services.gladys.loadbalancer.server.url=http://192.168.86.20:8078"
Eoras
Novembre 17, 2023, 9:49
19
J’ai testé en retirant le network_mod host et ajoutant le network traefik c’est OK j’accède bien, sur la dashboard Traefik j’ai bien mon url interne docket qui est mis à jour sur mon service (http://172.19.0.3:8089 ) et j’accède bien à la page.
Je vais essayer ce que tu m’a dit @cicoub13
Eoras
Novembre 17, 2023, 9:52
20
Du coup, j’ai retiré le network traefik, j’ai remis le mode host, j’ai modifié mon label avec :
- "traefik.http.services.gladys.loadbalancer.server.url=http://192.168.86.20:8078"
Sur mon traefik j’ai l’url serveur: http://127.0.0.1:8078 il a toujours pas été mis à jour et j’ai encore mon Bad Gateway
En fait, cette option traefik.http.services.service01.loadbalancer.server.url
existe dans la configuration par fichier toml , mais pas dans la configuration via label docker
opened 10:42PM - 02 Feb 22 UTC
kind/enhancement
priority/P3
area/provider
area/service
contributor/wanted
Hi i would love to have this possibility
Configure traefik via label providers:… allow setting the `traefik.http.services.<service-name>.loadBalancer.server.url`
for example in docker:
```yaml
version: "3.7"
services:
rp:
labels:
traefik.http.routers.proxy.entryPoints: web
traefik.http.routers.proxy.service: proxy-crt
traefik.http.routers.proxy.rule: PathPrefix(`/proxy-crt`)
traefik.http.routers.proxy.middlewares: strip-crt, cors-crt
traefik.http.services.proxy.loadBalancer.server.url: ${A_URL_AS_VARIABLE}
traefik.http.middlewares.strip.stripPrefix.prefixes: /proxy-crt
traefik.http.middlewares.cors.headers.accessControlAllowMethods: GET,OPTIONS
traefik.http.middlewares.cors.headers.accessControlAllowOriginlist: "*"
traefik.http.middlewares.cors.headers.accessControlMaxAge: 86400
```
I have seen this question:
https://community.traefik.io/t/traefik-v2-with-docker-compose-external-services-possible/5792/2
I know that setting this exact configuration is possible with the file provider but as far as i know not with a variable.
```yaml
http:
routers:
proxy:
entryPoints:
- web
middlewares:
- strip
- cors
service: proxy
rule: PathPrefix(`/proxy`)
services:
proxy:
loadBalancer:
passHostHeader: false
servers:
- url: https://example.com # NOT CONTROLLABLE VIA VARIABLE
middlewares:
strip:
stripPrefix:
prefixes:
- /proxy
cors:
headers:
accessControlAllowMethods: GET,OPTIONS
accessControlAllowOriginlist: "*"
accessControlMaxAge: 86400
```
A similar thing is possible with domain certs:
```yaml
traefik.http.routers.myrouter.tls.domains[0].main: example.org
```
could then look like this:
```yaml
traefik.http.services.proxy.loadBalancer.servers[0].url: ${A_URL_AS_VARIABLE}
```
1 « J'aime »