[Traefik - Proxy/Loadbalancer] Ervaringen & Discussie

Pagina: 1 2 3 4 Laatste
Acties:

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Matis schreef op woensdag 22 april 2020 @ 15:07:
[...]

Laat me nog maar even in mijn eigen sop gaarkoken, waarschijnlijk kom ik aan het einde van de dag daar met hangende pootjes van terug :>
Eerlijk gezegd heb ik niet helemaal in jouw opzet ingelezen, maar het makkelijkste is een dynamische config, bijv met labels aan je containers. De labels zijn op zich geen vereiste.

Ik heb enkele applicaties draaien in meerdere containers, allemaal met elkaar verbonden via een intern netwerk. De webserver van die applicatie zit ook in het traefik netwerk en exposed 1 poort, waar traefik dan een reverse proxy voor is.

Als je een service hebt waar meerdere poorten open staan, gebruik de load balancing van traefik op de juiste poort toe te wijzen op de service en dan heb je die twee gekoppeld.

Het zal erg lastig worden een applicatie omgeving te draaien die volledig agnostisch is van traefik, vermoed ik...

Acties:
  • 0 Henk 'm!

  • jvwou123
  • Registratie: Maart 2002
  • Laatst online: 11:49
Matis schreef op woensdag 22 april 2020 @ 15:07:

Zoals eerder aangegeven wil ik proberen de configuratie van traefik zoveel mogelijk gescheiden te houden van de configuratie van de andere containers en vice versa. Daarom streef ik er naar geen treafik-specifieke configuratie in de docker-compose van GitLab op te nemen.
volgens mij (en ik ben sinds gister bezig met het inlezen wat traefik is) is het idee om traefik te gebruik dat je juist niet meer bezig bent met config gescheiden te houden. Als je dat graag wilt kun je volgens mij beter gewoon good old nginx gebruiken.

Het lijkt mij juist ideaal dat je op 1 plek (namelijk in je docker config) alles bijhoudt wat er moet gebeuren.
Ik neem aan dat je in je docker config ook de environment variablen zet.

Ook is het idee met docker dat je alleen de poorten op het hostnetwerk open hebt, die ook echt nodig zijn. Dus het idee achter poorten publishen. En dus: network_mode: host zo min mogelijk gebruikt.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Zoals verwacht, is het me niet gelukt de GitLab routering (compleet) in Treafik te configureren.
Derhalve heb ik gekozen om het volledig in de docker-compose van GitLab te doen. Deze ziet er momenteel zo uit:
code:
1
2
3
4
5
6
      labels:
        - traefik.enable=true
        - traefik.http.routers.gitlab.rule=Host(`gitlab.localhost`, `gitlab.external.nl`, `gitlab.internal.nl`)
        - traefik.http.routers.gitlab.service=gitlab
        - traefik.http.routers.gitlab.entrypoints=websecure
        - traefik.http.services.gitlab.loadbalancer.server.port=80

In GitLab heb ik de volgende wijzigingen moeten maken om met de reverse proxy overweg te kunnen:
        external_url 'https://gitlab.external.nl'
        nginx['listen_port'] = 80
        nginx['listen_https'] = false


Bedankt allemaal voor het meedenken :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • lxz
  • Registratie: Februari 2001
  • Laatst online: 10:45

lxz

Ik ben al een tijdje aan het prutsen, maar ik krijg het niet voor elkaar om het gebruikte ip-adres van een gebruiker te loggen in een container.

Ik gebruik bijvoorbeeld projectsend om bestanden te kunnen delen. Als ik dan kijk naar wie een bepaald bestand heeft gedownload, zie ik daar het 172-adres van de container in plaats van het ip-adres van de gebruiker.
Maar ook als ik in home assistant een melding krijg van een onjuiste inlog, dan staat daar een 172-adres bij ipv een internet-ip.

In traefik 1.7 gebruikte ik daar volgens mij useXForwardedFor voor, maar dat lijkt niet meer te bestaan in traefik 2.0+

Iemand een idee hoe ik het juiste ip-adres in de headers kan meegeven?

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@lxz Probeer dit eens: Kaspers in "[Traefik - Proxy/Loadbalancer] Ervaringen & Discussie"

Blijkbaar gaat dat niet altijd goed

Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
Ik heb Jean Swart's Traefikv2 guide succesvol gebruikt om Traefik op te zetten voor 1 service (Seafile). Nu heb ik een vraag voor de experts en een suggestie/aanbeveling voor de nieuwelingen die met dezelfde guide zijn gestart:

Vraag:
Sommige webservices gebruiken 2 poorten, zoals Seafile (OneDrive/G-Drive/DropBox achtig zonder alle features eromheen zoals NextCloud).
Seafile heeft poort 8000 voor de webUI en poort 8082 voor filesync. Ik wil dat deze beide via hetzelfde subdomein lopen:

WebUI: https://seafile.mijndomein.abc
filesync: https://seafile.mijndomein.abc/sync

Voor WebUI eerste gaat het dus via de Jean Swart guide al goed.
Nu moet ik dus labels toevoegen om die prefix /sync naar poort 8082 te sturen. Hoe doe ik dat? Ik heb me als suf gegoogled, maar geen v2 oplossing gevonden.
Mijn docker-compose (stukje):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#
# ____________________ Traefik [CLOUD/reverse-proxy]
  traefik:
    image: traefik:v2.0
    container_name: traefik
    ports:
      - 8080:8080
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${USERDIR}/docker/traefik/acme.json:/acme.json
      - ${USERDIR}/docker/traefik/traefik.toml:/etc/traefik/traefik.toml
    restart: unless-stopped
#
# ____________________ Seafile [CLOUD/Files]
  seafile:
    image: gronis/seafile
    container_name: seafile
    restart: unless-stopped
    depends_on:
      - seafile-db
    links:
      - seafile-db
    volumes:
      - ${USERDIR}/docker/seafile/config:/seafile:rw
    ports:
      - 8000:8000
      - 8082:8082
    environment:
      (...)
    labels:
      - traefik.enable=true
      - traefik.http.middlewares.seafile-redirect.redirectscheme.scheme=https
      - traefik.http.routers.seafile-redirect.entrypoints=web
      - traefik.http.routers.seafile-redirect.middlewares=seafile-redirect
      - traefik.http.routers.seafile-redirect.rule=Host(`seafile.mijndomein.abc`)
      - traefik.http.routers.seafile.entrypoints=websecure
      - traefik.http.routers.seafile.rule=Host(`seafile.mijndomein.abc`)
      - traefik.http.routers.seafile.tls.certresolver=letsencrypt
      - traefik.http.services.seafile.loadbalancer.server.port=8000
# _____________________ Seafile mariadb [CLOUD/Files] 
  seafile-db:
    image: wangxian/alpine-mysql:latest
    container_name: seafile-db
    restart: unless-stopped
    volumes:
      - ${USERDIR}/docker/seafile/seafile-db-data:/app
      - ${USERDIR}/docker/seafile/seafile-db-lock:/run/mysqld
    environment:
      - MYSQL_ROOT_PASSWORD=nogsterkerpw


Suggestie:
Inmiddels heeft smarthomebeginner.com ook een guide live. Totaal niet concreet en hij weidt enorm uit. Maar Anand gebruikt een middlewares.toml file voor rate limit en secure headers die je vervolgens met 1 label per docker service kan toepassen voor al je services:
Voorbeeld:
https://github.com/htpcBe.../middlewares.toml.example

Als ik het goed begrijp hoef je vervolgens alleen dit label aan je docker services toe te voegen:
code:
1
- "traefik.http.routers.traefik-rtr.middlewares=middlewares-secure-headers@file,middlewares-rate-limit@file


Dit komt helemaal niet voor in de guide van Jean Swart maar lijkt me wel heel nuttig en juist 1 van de voordelen van Traefik.

Nog een laatste vraag:
is fail2ban helemaal overbodig als je Traefikv2 gebruikt? Ik zie namelijk nergens fail2ban genoemd icm Traefikv2. Of is de rate-limit hier al de oplossing?

[ Voor 27% gewijzigd door Jazco2nd op 01-05-2020 23:20 ]


Acties:
  • +1 Henk 'm!

  • lxz
  • Registratie: Februari 2001
  • Laatst online: 10:45

lxz

Jazco2nd schreef op vrijdag 1 mei 2020 @ 22:35:
Ik heb Jean Swart's Traefikv2 guide succesvol gebruikt om Traefik op te zetten voor 1 service (Seafile). Nu heb ik een vraag voor de experts en een suggestie/aanbeveling voor de nieuwelingen die met dezelfde guide zijn gestart:

Vraag:
Sommige webservices gebruiken 2 poorten, zoals Seafile (OneDrive/G-Drive/DropBox achtig zonder alle features eromheen zoals NextCloud).
Seafile heeft poort 8000 voor de webUI en poort 8082 voor filesync. Ik wil dat deze beide via hetzelfde subdomein lopen:

WebUI: https://seafile.mijndomein.abc
filesync: https://seafile.mijndomein.abc/sync

Voor WebUI eerste gaat het dus via de Jean Swart guide al goed.
Nu moet ik dus labels toevoegen om die prefix /sync naar poort 8082 te sturen. Hoe doe ik dat? Ik heb me als suf gegoogled, maar geen v2 oplossing gevonden.
Je zou het hier af kunnen kijken:
https://github.com/dani-g...en_rs/wiki/Proxy-examples

Dat is voor bitwarden, maar doet in feite het zelfde

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Jazco2nd schreef op vrijdag 1 mei 2020 @ 22:35:
Ik heb Jean Swart's Traefikv2 guide succesvol gebruikt om Traefik op te zetten voor 1 service (Seafile). Nu heb ik een vraag voor de experts en een suggestie/aanbeveling voor de nieuwelingen die met dezelfde guide zijn gestart:

Vraag:
Sommige webservices gebruiken 2 poorten, zoals Seafile (OneDrive/G-Drive/DropBox achtig zonder alle features eromheen zoals NextCloud).
Seafile heeft poort 8000 voor de webUI en poort 8082 voor filesync. Ik wil dat deze beide via hetzelfde subdomein lopen:

WebUI: https://seafile.mijndomein.abc
filesync: https://seafile.mijndomein.abc/sync

Voor WebUI eerste gaat het dus via de Jean Swart guide al goed.
Nu moet ik dus labels toevoegen om die prefix /sync naar poort 8082 te sturen. Hoe doe ik dat? Ik heb me als suf gegoogled, maar geen v2 oplossing gevonden.
Mijn docker-compose (stukje):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#
# ____________________ Traefik [CLOUD/reverse-proxy]
  traefik:
    image: traefik:v2.0
    container_name: traefik
    ports:
      - 8080:8080
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${USERDIR}/docker/traefik/acme.json:/acme.json
      - ${USERDIR}/docker/traefik/traefik.toml:/etc/traefik/traefik.toml
    restart: unless-stopped
#
# ____________________ Seafile [CLOUD/Files]
  seafile:
    image: gronis/seafile
    container_name: seafile
    restart: unless-stopped
    depends_on:
      - seafile-db
    links:
      - seafile-db
    volumes:
      - ${USERDIR}/docker/seafile/config:/seafile:rw
    ports:
      - 8000:8000
      - 8082:8082
    environment:
      (...)
    labels:
      - traefik.enable=true
      - traefik.http.middlewares.seafile-redirect.redirectscheme.scheme=https
      - traefik.http.routers.seafile-redirect.entrypoints=web
      - traefik.http.routers.seafile-redirect.middlewares=seafile-redirect
      - traefik.http.routers.seafile-redirect.rule=Host(`seafile.mijndomein.abc`)
      - traefik.http.routers.seafile.entrypoints=websecure
      - traefik.http.routers.seafile.rule=Host(`seafile.mijndomein.abc`)
      - traefik.http.routers.seafile.tls.certresolver=letsencrypt
      - traefik.http.services.seafile.loadbalancer.server.port=8000
# _____________________ Seafile mariadb [CLOUD/Files] 
  seafile-db:
    image: wangxian/alpine-mysql:latest
    container_name: seafile-db
    restart: unless-stopped
    volumes:
      - ${USERDIR}/docker/seafile/seafile-db-data:/app
      - ${USERDIR}/docker/seafile/seafile-db-lock:/run/mysqld
    environment:
      - MYSQL_ROOT_PASSWORD=nogsterkerpw


Suggestie:
Inmiddels heeft smarthomebeginner.com ook een guide live. Totaal niet concreet en hij weidt enorm uit. Maar Anand gebruikt een middlewares.toml file voor rate limit en secure headers die je vervolgens met 1 label per docker service kan toepassen voor al je services:
Voorbeeld:
https://github.com/htpcBe.../middlewares.toml.example

Als ik het goed begrijp hoef je vervolgens alleen dit label aan je docker services toe te voegen:
code:
1
- "traefik.http.routers.traefik-rtr.middlewares=middlewares-secure-headers@file,middlewares-rate-limit@file


Dit komt helemaal niet voor in de guide van Jean Swart maar lijkt me wel heel nuttig en juist 1 van de voordelen van Traefik.

Nog een laatste vraag:
is fail2ban helemaal overbodig als je Traefikv2 gebruikt? Ik zie namelijk nergens fail2ban genoemd icm Traefikv2. Of is de rate-limit hier al de oplossing?
Ik draai bitwarden_rs, die heeft een webinterface (draait intern op 1024) en een notification websocket poort. Ik heb hem niet helemaal vertaald naar jouw situatie, maar onderstaande ansible config maakt dus gebruik van 2 routes op 1 docker container.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
- name: Run bitwarden_rs
  docker_container:
    name: bitwarden
    image: bitwardenrs/server:latest
    restart_policy: unless-stopped
    volumes:
      - "{{ bitwarden_install_dir }}/data:/data"
      - "{{ bitwarden_install_dir }}/bitwarden.log:/bitwarden.log"
    user: "{{ bitwarden_docker_user }}"
    # CLI compatibility is default in Ansible 2.12 (not yet released) and below rule suppresses warning
    networks_cli_compatible: yes
    networks:
      - name: web
    env:
      DOMAIN: "https://{{ bitwarden_web_url }}" # Required as an env for U2F
      WEBSOCKET_ENABLED: "true"     # Enable notifications
      SIGNUPS_ALLOWED: "false"       # Disable new users, but allow from whitelist
      ROCKET_PORT: "1024"           # Required as we are running as non-root user
      LOG_FILE: "/bitwarden.log"
      SHOW_PASSWORD_HINT: "false"
    labels:
      traefik.http.routers.bitwarden-ui-https.rule: "Host(`{{ bitwarden_web_url }}`)"
      traefik.http.routers.bitwarden-ui-https.entrypoints: "websecure"
      traefik.http.routers.bitwarden-ui-https.tls: "true"
      traefik.http.routers.bitwarden-ui-https.tls.certresolver: "le"
      traefik.http.routers.bitwarden-ui-https.service: "bitwarden-ui"

      traefik.http.routers.bitwarden-ui-http.rule: "Host(`{{ bitwarden_web_url }}`)"
      traefik.http.routers.bitwarden-ui-http.entrypoints: "web"
      traefik.http.routers.bitwarden-ui-http.middlewares: "redirect-to-https"
      
      traefik.http.services.bitwarden-ui.loadbalancer.server.port: "1024"
      
      traefik.http.routers.bitwarden-websocket-https.rule: "Host(`{{ bitwarden_web_url }}`) && Path(`/notifications/hub`)"
      traefik.http.routers.bitwarden-websocket-https.entrypoints: "websecure"
      traefik.http.routers.bitwarden-websocket-https.tls: "true"
      traefik.http.routers.bitwarden-websocket-https.tls.certresolver: "le"
      traefik.http.routers.bitwarden-websocket-https.service: "bitwarden-websocket"
      
      traefik.http.routers.bitwarden-websocket-http.rule: "Host(`{{ bitwarden_web_url }}`) && Path(`/notifications/hub`)"
      traefik.http.routers.bitwarden-websocket-http.entrypoints: "web"
      traefik.http.routers.bitwarden-websocket-http.middlewares: "redirect-to-https"
      
      traefik.http.services.bitwarden-websocket.loadbalancer.server.port: "3012"
Mogelijk heb je hier wat aan om je Seafile aan de praat te krijgen.

Acties:
  • 0 Henk 'm!

  • DEN0W
  • Registratie: Augustus 2013
  • Laatst online: 08-09 16:15
Is het iemand gelukt om Traefik gebruik te laten maken van letsencrypt wanneer je A record wordt geproxyd via Cloudflare?

Op het moment dat ik de proxy aanzet ontvang ik wel een certificaat van letsencrypt (dus me Traefik configuratie lijkt te kloppen) alleen ontvang ik de volgende foutmelding bij het browsen naar mijn domein: ERR_SSL_VERSION_OR_CIPHER_MISMATCH. Op het moment dat ik de proxy via cloudflare uitzet verwijdt deze foutmelding.

Dit probleem heb ik overigens niet wanneer ik de Cloudflare Universal SSL certificaat gebruik.

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
Gebruikt er iemand "custom error pages" icm Traefik?

Vandaag over gegaan naar Traefik V2, en weet nog niet of ik er helemaal blij van wordt...
Ik zou graag als een niet bestaand subdomein wordt opgevraagd een custom error page willen sturen, maar het lukt me maar niet. Er draait een nginx-docker met daarin, in de root, 401.html, 404.html etc etc.

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# docker-compose.yaml
#labels op de traefik container
      - "traefik.http.routers.traefik-secure.middlewares=errorpage@file"
      - "traefik.http.middlewares.errorpage.errors.status=400-599"
      - "traefik.http.middlewares.errorpage.errors.service=nginx@docker"
      - "traefik.http.middlewares.errorpage.errors.query=/{status}.html"

#dynamic-config.yaml in de treafik-folder (bevat o.a. tls config, die werkt)
http:
  middlewares:
    errorpage:
      errors:
        status:
          - 401
          - 403
          - 404
          - 429
          - 500
          - 503
        service: nginx@docker
        query: "{status}.html"

What the f**k doe ik verkeerd....

[ Voor 6% gewijzigd door Hmmbob op 03-05-2020 20:37 ]

Sometimes you need to plan for coincidence


Acties:
  • +1 Henk 'm!

  • lxz
  • Registratie: Februari 2001
  • Laatst online: 10:45

lxz

@Hmmbob Ik ben nooit eerder met (custom) error pages bezig geweest, maar leek me wel leuk om eens te proberen. Heb het ongeveer hetzelfde opgezet zojuist, maar krijg het ook niet aan de praat. Ook in de logging van traefik zie ik niets voorbij komen als ik deze op debug zet. Ik pruts nog even verder, mocht het me lukken dan laat ik het wel weten

--edit:
Ik kom niet verder dan het tonen van custom error-pages binnen een bestaand subdomein, bijvoorbeeld
code:
1
www.domein.nu/sgljsdgklj

Dat werkt bij mij nu wel.

Misschien dat je voor niet-bestaande domeinen iets moet doen in de vorm van een catch-all Host-rule.

[ Voor 28% gewijzigd door lxz op 05-05-2020 09:08 ]


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
lxz schreef op maandag 4 mei 2020 @ 15:32:
--edit:
Ik kom niet verder dan het tonen van custom error-pages binnen een bestaand subdomein, bijvoorbeeld
code:
1
www.domein.nu/sgljsdgklj

Dat werkt bij mij nu wel.
Hoe heb je dit voor elkaar gekregen?

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
Andere vraag: ik gebruik één entrypoint (web-secure) op een custom port (zeg: 1234). Traefik luistert hier naar HTTPS verkeer - ik zou graag willen dat als ik een HTTP verzoek naar die poort stuur, dit opgewaardeerd wordt naar HTTPS. Ik kan 100.000 tutorials vinden voor het doorsturen van een http-poort naar een https-poort, maar dat is dus niet wat ik zoek.

Iemand dit al eens gedaan?

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Hmmbob schreef op donderdag 7 mei 2020 @ 15:33:
Andere vraag: ik gebruik één entrypoint (web-secure) op een custom port (zeg: 1234). Traefik luistert hier naar HTTPS verkeer - ik zou graag willen dat als ik een HTTP verzoek naar die poort stuur, dit opgewaardeerd wordt naar HTTPS. Ik kan 100.000 tutorials vinden voor het doorsturen van een http-poort naar een https-poort, maar dat is dus niet wat ik zoek.

Iemand dit al eens gedaan?
Dus als ik het goed begrijp, wil je dat traefik op poort 1234 detecteert of het een http of https scheme ontvangt en in het geval van http redirect naar https?

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
Matis schreef op zondag 10 mei 2020 @ 09:11:
[...]

Dus als ik het goed begrijp, wil je dat traefik op poort 1234 detecteert of het een http of https scheme ontvangt en in het geval van http redirect naar https?
Geheel correct

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
@Hmmbob ik weet dat nginx dit kan, maar het is een vrij specifieke feature. Ik heb hem nog nooit in Traefik context zien langskomen, ik vraag me af of dat kan.

Waarom heb je per se zoiets nodig? Met een redirect van http naar https (zoals met middleware van poort 80 naar 443, wat je veel voorbij ziet komen) heb je toch veel use cases afgedekt?

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
mithras schreef op zondag 10 mei 2020 @ 13:47:
@Hmmbob ik weet dat nginx dit kan, maar het is een vrij specifieke feature. Ik heb hem nog nooit in Traefik context zien langskomen, ik vraag me af of dat kan.

Waarom heb je per se zoiets nodig? Met een redirect van http naar https (zoals met middleware van poort 80 naar 443, wat je veel voorbij ziet komen) heb je toch veel use cases afgedekt?
Tenzij ik poort 80 helemaal niet open heb staan....

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Hmmbob schreef op zondag 10 mei 2020 @ 13:52:
Tenzij ik poort 80 helemaal niet open heb staan....
In dat geval 1234 en 1235 respectievelijk

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
Matis schreef op zondag 10 mei 2020 @ 14:00:
[...]

In dat geval 1234 en 1235 respectievelijk
Which defeats the purpose: ik heb het over een http request op een non-standard port die https verwacht.

Sometimes you need to plan for coincidence


Acties:
  • +1 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Hmmbob schreef op zondag 10 mei 2020 @ 14:03:
Which defeats the purpose: ik heb het over een http request op een non-standard port die https verwacht.
Dan is het antwoord: nee :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Hmmbob schreef op zondag 10 mei 2020 @ 13:52:
[...]

Tenzij ik poort 80 helemaal niet open heb staan....
Maar je gebruikt sowieso een custom poort, dus je moet al meer intikken dan domeinnaam/pad. Wat let je dan om meteen https:// ervoor te zetten? Vanuit je browser history hoeft dat ook maar eenmalig per device.

Acties:
  • +1 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
mithras schreef op zondag 10 mei 2020 @ 21:45:
[...]
Maar je gebruikt sowieso een custom poort, dus je moet al meer intikken dan domeinnaam/pad. Wat let je dan om meteen https:// ervoor te zetten? Vanuit je browser history hoeft dat ook maar eenmalig per device.
Thanks. Natuurlijk kan dat, maar dat was niet mijn vraag toch? Ik vraag of ik dit af kan vangen met Traefik - "nee" is een prima antwoord, in tegenstelling tot dit antwoord wat geen antwoord is.

Sometimes you need to plan for coincidence


Acties:
  • +1 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 11:02
Hmmbob schreef op donderdag 7 mei 2020 @ 15:33:
Andere vraag: ik gebruik één entrypoint (web-secure) op een custom port (zeg: 1234). Traefik luistert hier naar HTTPS verkeer - ik zou graag willen dat als ik een HTTP verzoek naar die poort stuur, dit opgewaardeerd wordt naar HTTPS. Ik kan 100.000 tutorials vinden voor het doorsturen van een http-poort naar een https-poort, maar dat is dus niet wat ik zoek.

Iemand dit al eens gedaan?
Als ik zo even google: wellicht dat het kan met de nieuwere redirections onder het entrypoint? https://docs.traefik.io/routing/entrypoints/#redirection

Dus iets als:
YAML:
1
2
3
4
5
6
7
8
entryPoints:
  websecure:
    address: :1234
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https

Alhoewel het mij ook niet zou verbazen als dat weer niet werkt omdat de "from" als to hetzelfde zijn.

En anders wellicht met de RedirectScheme middleware: https://docs.traefik.io/middlewares/redirectscheme/

YAML:
1
2
3
4
5
6
http:
  middlewares:
    redirect-https:
      redirectScheme:
        scheme: https
        permanent: true


Wat dan weer valt te combineren met de default middlewares:
code:
1
2
3
4
5
6
entryPoints:
  websecure:
    address: :1234
    http:
      middlewares:
        - redirect-https@file




Die defaults onder het entrypoint is iets wat ik ook nu pas tegen kwam. Die redirections heeft meen ik @lolgast hier al eens vermeld? Maar je kunt dus ook standaard middlewares vastleggen onder het entrypoint (en middlewares onder een router zijn dan additioneel). En hetzelfde voor de TLS config, wat zeer zeker een welkome toevoeging is. Waar je bij 2.0 nog voor elke router de certResolver moest vastleggen kan dat nu dus direct onder het entrypoint, waarbij je ook meteen de domeinen kunt opgeven en je zo snel bv een wildcard kunt maken dat op alle routers wordt toegepast.

Voorbeeld:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
entryPoints:
  websecure:
    address: ':443'
    http:
      middlewares:
        - auth@file
        - strip@file
      tls:
        options: foobar
        certResolver: leresolver
        domains:
          - main: example.com
            sans:
              - foo.example.com
              - bar.example.com
          - main: test.com
            sans:
              - foo.test.com
              - bar.test.com

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
Hmmm, daar kan ik wel eens mee gaan spelen inderdaad. Morgenavond eens testen. Thanks!

Sometimes you need to plan for coincidence


Acties:
  • +1 Henk 'm!

  • lxz
  • Registratie: Februari 2001
  • Laatst online: 10:45

lxz

Hmmbob schreef op donderdag 7 mei 2020 @ 15:32:
[...]

Hoe heb je dit voor elkaar gekregen?
Sorry voor de late reactie, maar ik heb het volgende.

YAML: traefik.yaml
1
2
3
4
5
6
7
8
9
entryPoints:
  websecure:
    address: ":443"
    http:
      middlewares:
        - hsts@file
        - errorhandler@file
      tls:
        certResolver: letsencrypt


en

YAML: rules/middlewares.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
http:
  middlewares:
    errorhandler:
      errors:
        status:
          - 401
          - 403
          - 404
          - 429
          - 500
          - 503
        service: errorhandler@docker
        query: "/{status}.html"


in in mijn compose-file heb ik httpd draaien voor de error-pages:
YAML: docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
  errorhandler:
    image: httpd:alpine
    container_name: errorhandler
    restart: unless-stopped
    ports:
      - 8988:80
    networks:
      - traefik_proxy
    volumes:
      - ${USERDIR}/docker/websites/errors:/usr/local/apache2/htdocs/
    labels:
      - traefik.enable=true
      - traefik.http.routers.errorhandler.rule=Host("error.${DOMAINNAME}")
      - traefik.http.routers.errorhandler.entrypoints=websecure
      - traefik.http.routers.errorhandler.middlewares=errorhandler@file
      - traefik.http.routers.errorhandler.tls.certresolver=letsencrypt
      - traefik.http.services.errorhandler.loadbalancer.server.port=80

Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
Inmiddels ben ik afgestapt van seafile en heb ik ook mijn server geupdate naar ubuntu 20.04.
Nu wil Traefik niet meer werken :( ik kan wel via mijn subdomeinen bij mijn services, maar https werkt niet, browser geeft de enge melding en je kan bij uitzondering door.
Dit terwijl ik toch exact dezelfde stappen heb gevolgd:

traefik.toml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[api]
  dashboard = true
  insecure = true

[providers]
  [providers.docker]
    endpoint = "unix:///var/run/docker.sock"
    watch = true
    exposedbydefault = false

[entryPoints]
  [entryPoints.web]
    address = ":80"
  [entryPoints.websecure]
    address = ":443"

[certificatesResolvers.letsencrypt.acme]
  email = "mijn@emaiiadres.com"
  storage = "acme.json"
  [certificatesResolvers.letsencrypt.acme.httpChallenge]
    entryPoint = "web"


docker-compose.yml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  traefik:
    image: traefik:v2.0
    container_name: traefik
    ports:
      - 8080:8080
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${USERDIR}/docker/traefik/acme.json:/acme.json
      - ${USERDIR}/docker/traefik/traefik.toml:/etc/traefik/traefik.toml
    restart: unless-stopped
#
  syncthing:
    container_name: syncthing
    image: linuxserver/syncthing
    restart: unless-stopped
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK_SET=022
    volumes:
      - ${USERDIR}/docker/syncthing/config:/config
    ports:
      - '8384:8384'
    labels:
      - traefik.enable=true
      - traefik.http.middlewares.syncthing-redirect.redirectscheme.scheme=https
      - traefik.http.routers.syncthing-redirect.entrypoints=web
      - traefik.http.routers.syncthing-redirect.middlewares=syncthing-redirect
      - traefik.http.routers.syncthing-redirect.rule=Host(`sync.mijndomein.xyz`)
      - traefik.http.routers.syncthing.entrypoints=websecure
      - traefik.http.routers.syncthing.rule=Host(`sync.mijndomein.xyz`)
      - traefik.http.routers.syncthing.tls.certresolver=letsencrypt
      - traefik.http.services.syncthing.loadbalancer.server.port=8384


In de Traefik2 webUI staat alles op success. Ik heb 3 services (Filerun, Firefox sync, Syncthing) en zie 6x succes bij Routers, 3x bij services en middlewares.

Netjes volgens de guide van Jean Swart https://blog.jswart.xyz/posts/traefik-routing/ die ik een paar weken geleden ook volgde en het werkte prima.

Hoe kan je dit verder debuggen?
edit: zie dat mijn acme.json file leeg is, 0 bytes. Ik dacht dat hierin certificaat data werd opgeslagen..

Acties:
  • +1 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@Jazco2nd Staan de rechten op je acme.json file goed. Moet uit mijn hoofd 600 zijn

[ Voor 10% gewijzigd door lolgast op 12-05-2020 19:31 ]


Acties:
  • +1 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Jazco2nd schreef op dinsdag 12 mei 2020 @ 17:27:

Hoe kan je dit verder debuggen?
edit: zie dat mijn acme.json file leeg is, 0 bytes. Ik dacht dat hierin certificaat data werd opgeslagen..
Geef anders je output van docker logs traefik. En zet in je config logging aan naar een traefik.log, mount deze via docker (net als je traefik.toml en kijk daar eens in. Over het algemeen heeft traefik wel goede logging om te debuggen.

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
lolgast schreef op dinsdag 12 mei 2020 @ 19:28:
@Jazco2nd Staan de rechten op je acme.json file goed. Moet uit mijn hoofd 600 zijn
Ik gok ook op deze ^^^

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
lxz schreef op dinsdag 12 mei 2020 @ 14:53:
[...]


Sorry voor de late reactie, maar ik heb het volgende.

YAML: traefik.yaml
1
2
3
4
5
6
7
8
9
entryPoints:
  websecure:
    address: ":443"
    http:
      middlewares:
        - hsts@file
        - errorhandler@file
      tls:
        certResolver: letsencrypt


en

YAML: rules/middlewares.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
http:
  middlewares:
    errorhandler:
      errors:
        status:
          - 401
          - 403
          - 404
          - 429
          - 500
          - 503
        service: errorhandler@docker
        query: "/{status}.html"


in in mijn compose-file heb ik httpd draaien voor de error-pages:
YAML: docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
  errorhandler:
    image: httpd:alpine
    container_name: errorhandler
    restart: unless-stopped
    ports:
      - 8988:80
    networks:
      - traefik_proxy
    volumes:
      - ${USERDIR}/docker/websites/errors:/usr/local/apache2/htdocs/
    labels:
      - traefik.enable=true
      - traefik.http.routers.errorhandler.rule=Host("error.${DOMAINNAME}")
      - traefik.http.routers.errorhandler.entrypoints=websecure
      - traefik.http.routers.errorhandler.middlewares=errorhandler@file
      - traefik.http.routers.errorhandler.tls.certresolver=letsencrypt
      - traefik.http.services.errorhandler.loadbalancer.server.port=80
TOP - gelukt met deze settings inderdaad.

Sometimes you need to plan for coincidence


Acties:
  • +1 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
RobertMe schreef op zondag 10 mei 2020 @ 22:11:
[...]

Als ik zo even google: wellicht dat het kan met de nieuwere redirections onder het entrypoint? https://docs.traefik.io/routing/entrypoints/#redirection

Dus iets als:
YAML:
1
2
3
4
5
6
7
8
entryPoints:
  websecure:
    address: :1234
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https

Alhoewel het mij ook niet zou verbazen als dat weer niet werkt omdat de "from" als to hetzelfde zijn.

En anders wellicht met de RedirectScheme middleware: https://docs.traefik.io/middlewares/redirectscheme/

YAML:
1
2
3
4
5
6
http:
  middlewares:
    redirect-https:
      redirectScheme:
        scheme: https
        permanent: true


Wat dan weer valt te combineren met de default middlewares:
code:
1
2
3
4
5
6
entryPoints:
  websecure:
    address: :1234
    http:
      middlewares:
        - redirect-https@file
Nee, dan kom ik in een endless redirect-loop uit helaas, omdat hij al het verkeer op die poort steeds opnieuw redirect naar het https scheme op die poort, en dan nog een keer, en nog een keer, etc etc. Thanks though!

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
mithras schreef op dinsdag 12 mei 2020 @ 19:43:
[...]
Geef anders je output van docker logs traefik. En zet in je config logging aan naar een traefik.log, mount deze via docker (net als je traefik.toml en kijk daar eens in. Over het algemeen heeft traefik wel goede logging om te debuggen.
Ja dom, permissions op acme.json was ik idd vergeten. Helaas, nu wordt die file wel gevuld maar mislukt het proces met letsencrypt nog net zo goed.

Inmiddels zie ik dat ik teveel pogingen heb gedaan waardoor ik geen certificaat meer krijg. Maar het achterliggende probleem nog niet gevonden:

docker logs traefik:
time="2020-05-12T21:47:10Z" level=error msg="Unable to obtain ACME certificate for domains \"sync.wiswaswos.xyz\": unable to generate a certificate for the domains [sync.wiswaswos.xyz]: acme: Error -> One or more domains had a problem:\n[sync.wiswaswos.xyz] acme: error: 400 :: urn:ietf:params:acme:error:connection :: Fetching http://sync.wiswaswos.xyz...ZPRM4Tzq5mR-fJ-xrTtEpvpI: Timeout during connect (likely firewall problem), url: \n" providerName=letsencrypt.acme routerName=syncthing rule="Host(`wiswaswos.obelix.xyz`)"
Morgen maar weer verder uitzoeken.

Acties:
  • +1 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Jazco2nd schreef op dinsdag 12 mei 2020 @ 23:53:
[...]

docker logs traefik:

[...]


Morgen maar weer verder uitzoeken.
Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

Je hoofddomein (example.com) heeft een A DNS record wat verwijst naar een thuis adres van T-Mobile. Je subdomein adres (test.example.com) bestaat helemaal niet als DNS record.

Kijk even goed welke challenge je wil gebruiken en wat daar goed bij aansluit. Bijv een DNS provider die in de DNS challenge wordt ondersteund of een TLS of HTTP challenge waarbij je thuis je poorten wel open moet zetten.

Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
@mithras
Vreemd dat het precies zo een paar weken geleden probleemloos werkte. Het domein example.com heeft een A DNS record naar een MikroTik adres (mijn router heeft ingebouwde dynamic DNS) en de subdomeinen hebben een CNAME verwijzing naar het A DNS record.

Het domein in mijn post is trouwens niet de echte, was maar een voorbeeld.

Ik ga even door de config bij domein provider lopen. De poorten 80 en 443 zijn in elk geval zeker open via port forwarding. Ook met nmap getest.

Acties:
  • +1 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@Jazco2nd Overigens, er is een aparte LE url die je moet gebruiken tijdens je 'test'-periode. Om een lockout te voorkomen. De staging server hieronder
https://docs.traefik.io/https/acme/#caserver

Meer daarover hier: https://letsencrypt.org/docs/staging-environment/

Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
OK Traefik werkt gewoon goed, er is niks mis met de instellingen bij de domein provider.
Ik heb mijn testcases verkleind tot het minimale en simpelste geval: sync.domein.abc naar syncthing docker op poort 8384. Dat gaat goed (geen extra port forwarding, alleen 80 en 443), via https nu.

Heb nu 2 problemen geconstateerd. Een bleek specifiek een fout in firefoxsync-server waardoor deze geen docker IP kreeg, iets wat ik gister over het hoofd heb gezien, in Portainer stond alles groen maar duidelijk geen IP. Dat is nu opgelost dus deze gaat ook goed.

Daarnaast heb ik zitten spelen met poorten, ik wilde 8080 voor een andere container hebben dan Traefik, mogelijk daarin wat foutjes gemaakt. Vandaag mijn hele docker-compose doorlopen en alles "standaard" ingesteld, waar poort conflicten konden optreden heb ik de hele service gewoon uitgecomment. Traefik werkt nu prima.

Enige is dat ik graag binnen mijn netwerk vanuit devices gewoon naar het IP van mijn server wil gaan (poort 80) en daarbij een service wil zien (Heimdall). Poort 80 moet echter gekoppeld zijn aan Traefik container. Dat laat ik dan maar zo.

Acties:
  • 0 Henk 'm!

  • DEN0W
  • Registratie: Augustus 2013
  • Laatst online: 08-09 16:15
Bij het testen van mijn setup kom ik de volgende entrys tegen, klopt dit? Ik maak gebruik van DNS verificatie voor letsencrypt en ik zie bij het aanvragen van de certicaat dat er een txt record wordt aangemaakt maar die verdwijnt vervolgens weer.

Afbeeldingslocatie: https://tweakers.net/i/hYGeG-NV-GUwgYtGXESsp_6rt0M=/800x/filters:strip_exif()/f/image/2AZMjxPs9uZmscvp4pSl36a6.png?f=fotoalbum_large


Edit: Ik heb dus helemaal geen txt records staan alleen een A record en een cname

[ Voor 6% gewijzigd door DEN0W op 14-05-2020 20:09 ]


Acties:
  • 0 Henk 'm!

  • Kerminator
  • Registratie: Augustus 2001
  • Laatst online: 00:24
Ik ben mijn hoofd aan het breken over hoe ik een Unifi Cloud Key achter een Traefik 2 proxy met middlewares krijg. Het probleem is dat (1) Unifi alleen TLS connecties accepteert, en (2) Traefik HTTP services geen TLS verbinding maken.

De oplossing die ik overal *) vind is om een TCP router te gebruiken, maar die werken weer niet met middlewares.

Gewenste uitkomst:
code:
1
[Client] -> http(s) -> [Traefik HTTP Proxy -> [authenticatie middleware] -> [load balancer service]] -> https -> [Cloud Key]

Dit werkt niet omdat de laatste stap altijd plain http is. Gevolg:
code:
1
2
Bad Request
This combination of host and port requires TLS.


Optie 1 - TCP router
code:
1
[Client] -> https -> [Traefik TCP Proxy -> ] -> [TCP service]] -> https -> [Cloud Key]

Het probleem is dan dat ik geen authenticatie krijg. En ik heb geen zin om mijn Cloud Key "onbeveiligd" aan het grote boze internet te hangen.

Optie 2 - dubbele proxy
code:
1
[Client] -> http(s) -> [Traefik Proxy -> [authenticatie middleware] -> [load balancer service]] -> http -> [Nginx http to https proxy] -> https -> [Cloud Key]


Iemand ooit zoiets gemaakt en aan de praat gekregen? Of is er een eenvoudigere oplossing?

Trust me - I'm a lawyer!


Acties:
  • 0 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 11:02
Kerminator schreef op donderdag 14 mei 2020 @ 22:57:
Ik ben mijn hoofd aan het breken over hoe ik een Unifi Cloud Key achter een Traefik 2 proxy met middlewares krijg. Het probleem is dat (1) Unifi alleen TLS connecties accepteert, en (2) Traefik HTTP services geen TLS verbinding maken.

De oplossing die ik overal *) vind is om een TCP router te gebruiken, maar die werken weer niet met middlewares.

Gewenste uitkomst:
code:
1
[Client] -> http(s) -> [Traefik HTTP Proxy -> [authenticatie middleware] -> [load balancer service]] -> https -> [Cloud Key]

Dit werkt niet omdat de laatste stap altijd plain http is. Gevolg:
code:
1
2
Bad Request
This combination of host and port requires TLS.


Optie 1 - TCP router
code:
1
[Client] -> https -> [Traefik TCP Proxy -> ] -> [TCP service]] -> https -> [Cloud Key]

Het probleem is dan dat ik geen authenticatie krijg. En ik heb geen zin om mijn Cloud Key "onbeveiligd" aan het grote boze internet te hangen.

Optie 2 - dubbele proxy
code:
1
[Client] -> http(s) -> [Traefik Proxy -> [authenticatie middleware] -> [load balancer service]] -> http -> [Nginx http to https proxy] -> https -> [Cloud Key]


Iemand ooit zoiets gemaakt en aan de praat gekregen? Of is er een eenvoudigere oplossing?
Traefik kan ook met services verbinden over HTTPS. Enige ding is dat de UniFi controller ook nog eens een invalid certificaat gebruikt waardoor je die check ook uit moet zetten.

Dit is wat ik gebruik:
docker-compose.yaml van UniFi controller/service
YAML:
1
2
3
4
5
6
7
    labels:
      - traefik.enable=true
      - traefik.http.routers.unifi.rule=Host(`unifi.....`)
      - traefik.http.routers.unifi.service=unifi
      - traefik.http.routers.unifi.tls.certResolver=le
      - traefik.http.services.unifi.loadbalancer.server.port=8443
      - traefik.http.services.unifi.loadbalancer.server.scheme=https


traefik.yaml
YAML:
1
2
serversTransport:
  insecureSkipVerify: true

Acties:
  • 0 Henk 'm!

  • Kerminator
  • Registratie: Augustus 2001
  • Laatst online: 00:24
RobertMe schreef op vrijdag 15 mei 2020 @ 08:41:
[...]

Traefik kan ook met services verbinden over HTTPS. Enige ding is dat de UniFi controller ook nog eens een invalid certificaat gebruikt waardoor je die check ook uit moet zetten.

Dit is wat ik gebruik:
docker-compose.yaml van UniFi controller/service
YAML:
1
2
3
4
5
6
7
    labels:
      - traefik.enable=true
      - traefik.http.routers.unifi.rule=Host(`unifi.....`)
      - traefik.http.routers.unifi.service=unifi
      - traefik.http.routers.unifi.tls.certResolver=le
      - traefik.http.services.unifi.loadbalancer.server.port=8443
      - traefik.http.services.unifi.loadbalancer.server.scheme=https
Thanks. Ik heb de volgende in mijn config file. insecureSkipVerify staat op true
app-unifi.toml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[http.routers]
  [http.routers.unifi]
      entryPoints = ["websecure"]
      rule = "Host(`unifi.mijndomein.iets`)"
      service = "unifi-svc"
      middlewares = ["chain-oauth@file"]
      [http.routers.unifi.tls]
        certresolver = "leresolver"
        TLS=true

[http.services]
  [http.services.unifi-svc]
    [http.services.unifi-svc.loadBalancer]
      [[http.services.unifi-svc.loadBalancer.servers]]
        url = "http://192.168.1.9:8443"
        scheme = "https"

Het lijkt erop alsof hij het scheme instructie niet pakt.

Trust me - I'm a lawyer!


Acties:
  • +1 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 11:02
Kerminator schreef op vrijdag 15 mei 2020 @ 19:12:
[...]


Thanks. Ik heb de volgende in mijn config file. insecureSkipVerify staat op true
app-unifi.toml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[http.routers]
  [http.routers.unifi]
      entryPoints = ["websecure"]
      rule = "Host(`unifi.mijndomein.iets`)"
      service = "unifi-svc"
      middlewares = ["chain-oauth@file"]
      [http.routers.unifi.tls]
        certresolver = "leresolver"
        TLS=true

[http.services]
  [http.services.unifi-svc]
    [http.services.unifi-svc.loadBalancer]
      [[http.services.unifi-svc.loadBalancer.servers]]
        url = "http://192.168.1.9:8443"
        scheme = "https"

Het lijkt erop alsof hij het scheme instructie niet pakt.
Misschien een domme vraag, maar waarom heb je bij url http:// staan en niet https://? Dat is toch juist het scheme wat die moet gebruiken O-)

Acties:
  • 0 Henk 'm!

  • Kerminator
  • Registratie: Augustus 2001
  • Laatst online: 00:24
RobertMe schreef op vrijdag 15 mei 2020 @ 19:19:
[...]

Misschien een domme vraag, maar waarom heb je bij url http:// staan en niet https://? Dat is toch juist het scheme wat die moet gebruiken O-)
Oeps... |:( |:( |:( Ja, werkt nu als een zonnetje.

Trust me - I'm a lawyer!


Acties:
  • 0 Henk 'm!

  • Cranx
  • Registratie: Januari 2013
  • Laatst online: 03-09 22:54
Hallo lieve tweakers,

Na een hoop zoekwerk op internet kom ik er niet uit en heb ik jullie hulp nodig. Ik ben redelijk technisch, meer als hobby maar het zelf uitzoeken gaat mij te ver bij de meeste dingen.

Ik probeer traefik v2 draaiend te krijgen op mijn Intel NUC waar docker op draait samen met o.a. Home Assistant. Zojuist heb ik een domein gekocht bij TransIP want dat was de enige "bekende" provider in de lijst van werkende providers met let's encrypt: https://docs.traefik.io/https/acme/

Nou heb ik verschillende tutorials gevonden zoals:
https://www.martinvdm.nl/...stant-and-docker-compose/
https://www.smarthomebeginner.com/traefik-2-docker-tutorial/
https://medium.com/@conta...y-step-guide-e0be0c17cfa5

Allemaal zeggen ze wat anders en bij allen werkt het bij mij niet. Bij de tutorial van martinvdm.nl kwam ik nog het dichtstbij, alleen legt hij niet uit hoe je aan de TRANSIP.KEY bestand komt.

Wie kan mij de juiste richting op sturen met eventueel een tutorial die ik heb gemist of mij er langzaam doorheen kan loodsen?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
darryl12123 schreef op donderdag 28 mei 2020 @ 17:57:

Allemaal zeggen ze wat anders en bij allen werkt het bij mij niet. Bij de tutorial van martinvdm.nl kwam ik nog het dichtstbij, alleen legt hij niet uit hoe je aan de TRANSIP.KEY bestand komt.

Wie kan mij de juiste richting op sturen met eventueel een tutorial die ik heb gemist of mij er langzaam doorheen kan loodsen?
Dat zijn API keys, die maak je aan in je TransIP Control Panel: https://www.transip.nl/cp/account/api/

Sometimes you need to plan for coincidence


Acties:
  • +1 Henk 'm!

  • Cranx
  • Registratie: Januari 2013
  • Laatst online: 03-09 22:54
Hmmbob schreef op donderdag 28 mei 2020 @ 19:56:
[...]

Dat zijn API keys, die maak je aan in je TransIP Control Panel: https://www.transip.nl/cp/account/api/
Ah oké, gevonden. Ik ga het proberen en laat wel weten als het niet lukt, bedankt!

Acties:
  • 0 Henk 'm!

  • Dennisweb
  • Registratie: September 2010
  • Laatst online: 11:17
Ik heb een domeinnaam: sub.domein.nl. Deze staat op een server die xxxx.tld heet. Met andere woorden: ik wil dat Traefik sub.domein.nl actief maakt en als proxy werkt met xxxx.tld als upstream.

Daarvoor heb ik dezelfde docker-compose.yml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '2'
services:
  traefik:
    image: traefik:v1.7
    restart: always
    ports:
      - 80:80
      - 443:443
    networks:
      - proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/traefik/traefik.toml:/traefik.toml
      - /opt/traefik/acme.json:/acme.json
    container_name: traefik
networks:
  proxy:
    external: true


Dit is mijn traefik.toml

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
debug = false
logLevel = "ERROR"
defaultEntryPoints = ["https","http"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
[retry]
[file]
  filename = "nginx.toml"
  watch = true
[acme]
email = "my.mail@mydomain.com"
caServer = "https://acme-v02.api.letsencrypt.org/directory"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"


En dit is mijn nginx.toml

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
[backends]
[backends.backend1]
    [backends.backend1.servers]
      [backends.backend1.servers.server0]
        url = "http://xxxx.tld"
[frontends]
[frontends.frontend1]
  entryPoints = ["http", "https"]
  backend = "backend1"
  passHostHeader = true
[frontends.frontend1.routes]
    [frontends.frontend1.routes.route0]
      rule = "Host:sub.domein.nl"


Helaas krijg ik alleen een 404 not found error als ik naar sub.domein.nl ga. Wat doe ik fout? Ik heb de informatie van deze handleiding. https://medium.com/@rossi...nx-or-docker-a98f6d79626c

Acties:
  • 0 Henk 'm!

  • bart.koppers
  • Registratie: Augustus 2011
  • Laatst online: 01:13
Dennisweb schreef op vrijdag 3 juli 2020 @ 16:42:
Ik heb een domeinnaam: sub.domein.nl. Deze staat op een server die xxxx.tld heet. Met andere woorden: ik wil dat Traefik sub.domein.nl actief maakt en als proxy werkt met xxxx.tld als upstream.
....
En dit is mijn nginx.toml

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
[backends]
[backends.backend1]
    [backends.backend1.servers]
      [backends.backend1.servers.server0]
        url = "http://xxxx.tld"
[frontends]
[frontends.frontend1]
  entryPoints = ["http", "https"]
  backend = "backend1"
  passHostHeader = true
[frontends.frontend1.routes]
    [frontends.frontend1.routes.route0]
      rule = "Host:sub.domein.nl"


Helaas krijg ik alleen een 404 not found error als ik naar sub.domein.nl ga. Wat doe ik fout? Ik heb de informatie van deze handleiding. https://medium.com/@rossi...nx-or-docker-a98f6d79626c
Je hebt de handleiding in ieder geval niet helemaal hetzelfde gevolgd, bv op het punt van nginx.toml
Draait backend server0 op poort 80 op xxxx.tld?

(Kan in de config niet zien waar nginx op draait bij je, dus mss maar deel van de oplossing.)

Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
Ik probeer Traefik werkend te krijgen met wildcard certificaat met de hulp van TransIP.

Ik heb de volgende config gebruikt (mijndomein.nl is niet mijn domein ;)
docker-compose.yaml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  traefik:
    container_name: traefik
    hostname: traefik
    image: traefik:latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Amsterdam
      - PUID=1000
      - PGID=1000
      - TRANSIP_ACCOUNT_NAME=***username***
      - TRANSIP_PRIVATE_KEY_PATH=transip.key
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /docker/traefik/traefik.yml:/etc/traefik/traefik.yml
      - /docker/traefik/rules:/rules
      - /docker/traefik/acme.json:/acme.json
      - /docker/traefik/transip.key:/transip.key
      - /docker/traefik/log/traefik.log:/traefik.log
      - /docker/traefik/log/access.log:/access.log
    ports:
      - 80:80
      - 443:443
      - 8080:8080


traefik.yml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
log:
  level: "DEBUG"
#  filePath: "/traefik.log"

api:
  insecure: true

entryPoints:
  traefik:
    address: ":8080"
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
    watch: true
    network: "proxy_backend"
  file:
    directory: /rules
    watch: true

certificatesResolvers:
  letsencrypt:
    acme:
      email: webmaster@mijndomein.nl
      storage: ./acme.json
      dnsChallenge:
        provider: transip
        delayBeforeCheck: 0
        resolvers: "ns0.transip.net,ns1.transip.nl,ns2.transip.eu"


rules/cert.yaml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
http:
  routers:
    certs:
      entryPoints:
        - http
        - https
      service: service-blank
      rule: Host("about:blank")
      tls:
        certResolver: letsencrypt
        domains:
          - main: "*.mijndomein.nl"
            sans:
              - mijndomein.nl
  services:
    service-blank:
      loadBalancer:
        servers:
          - url: "https://about.blank"


Het probleem is dat het systeem geen certificaat kan aanmaken, zie ook de volgende log:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
time="2020-10-08T09:18:40+02:00" level=debug msg="No ACME certificate generation required for domains [\"*.mijndomein.nl\" \"mijndomein.nl\"]." providerName=letsencrypt.acme
time="2020-10-08T09:18:40+02:00" level=debug msg="Looking for provided certificate(s) to validate [\"*.mijndomein.nl\" \"mijndomein.nl\"]..." providerName=letsencrypt.acme
time="2020-10-08T09:18:40+02:00" level=debug msg="No ACME certificate generation required for domains [\"*.mijndomein.nl\" \"mijndomein.nl\"]." providerName=letsencrypt.acme
time="2020-10-08T09:18:45+02:00" level=debug msg="Using DNS Challenge provider: transip" providerName=letsencrypt.acme
time="2020-10-08T09:18:45+02:00" level=debug msg="legolog: [INFO] [*.mijndomein.nl, mijndomein.nl] acme: Obtaining bundled SAN certificate"
time="2020-10-08T09:18:46+02:00" level=debug msg="legolog: [INFO] [*.mijndomein.nl] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/7746900832"
time="2020-10-08T09:18:46+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/7746900833"
time="2020-10-08T09:18:46+02:00" level=debug msg="legolog: [INFO] [*.mijndomein.nl] acme: use dns-01 solver"
time="2020-10-08T09:18:46+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Could not find solver for: tls-alpn-01"
time="2020-10-08T09:18:46+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Could not find solver for: http-01"
time="2020-10-08T09:18:46+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: use dns-01 solver"
time="2020-10-08T09:18:46+02:00" level=debug msg="legolog: [INFO] [*.mijndomein.nl] acme: Preparing to solve DNS-01"
time="2020-10-08T09:18:48+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Preparing to solve DNS-01"
time="2020-10-08T09:18:50+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Trying to solve DNS-01"
time="2020-10-08T09:18:50+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Checking DNS record propagation using [ns0.transip.net:53 ns1.transip.nl:53 ns2.transip.eu:53]"
time="2020-10-08T09:19:00+02:00" level=debug msg="legolog: [INFO] Wait for propagation [timeout: 10m0s, interval: 10s]"
time="2020-10-08T09:19:00+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Waiting for DNS record propagation."
*
*
*
time="2020-10-08T09:22:32+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Waiting for DNS record propagation."
time="2020-10-08T09:22:42+02:00" level=debug msg="legolog: [INFO] retry due to: acme: error: 400 :: POST :: https://acme-v02.api.letsencrypt.org/acme/chall-v3/7746900833/njx25g :: urn:ietf:params:acme:error:badNonce :: JWS has an invalid anti-replay nonce: \"0101mEtSZ39AgTMoL6KX8oaqs-9Oznct2aQ2rQHZpXKrGcI\", url: "
time="2020-10-08T09:22:49+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] The server validated our request"
time="2020-10-08T09:22:49+02:00" level=debug msg="legolog: [INFO] [*.mijndomein.nl] acme: Cleaning DNS-01 challenge"
time="2020-10-08T09:22:50+02:00" level=debug msg="legolog: [INFO] [mijndomein.nl] acme: Cleaning DNS-01 challenge"
time="2020-10-08T09:22:52+02:00" level=debug msg="legolog: [INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/7746900832"
time="2020-10-08T09:22:52+02:00" level=debug msg="legolog: [INFO] Skipping deactivating of valid auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/7746900833"
time="2020-10-08T09:22:52+02:00" level=error msg="Unable to obtain ACME certificate for domains \"*.mijndomein.nl,mijndomein.nl\" : unable to generate a certificate for the domains [*.mijndomein.nl mijndomein.nl]: error: one or more domains had a problem:\n[*.mijndomein.nl] [*.mijndomein.nl] acme: error presenting token: transip: could not get token from authenticator: could not decode token, invalid base64\n" providerName=letsencrypt.acme


Vooral de fout "could not get token from authenticator: could not decode token, invalid base64" valt mij op.
Tijdens de "DNS record propagation" zie ik wel het text record in mijn TransIP dns omgeving verschijnen.

Weet iemand hoe dit op te lossen is ? :)

Acties:
  • 0 Henk 'm!

  • FireDrunk
  • Registratie: November 2002
  • Laatst online: 09:34
Ik begrijp het niet, heb je nu al een key van TransIP of wil je die via ACME ophalen?

Even niets...


Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
Sorry voor eventuele onduidelijkheid, redelijk nieuw hierin.

De key heb ik al, ik zie namelijk ook de _acme-challenge txt record aangemaakt worden bij TransIP (en automatisch verwijderd worden).

Wat ik nu probeer, is een wildcart cert via ACME aan te vragen.

EDIT:
Ik probeerde het nog een keer en krijg nu de volgende fout te zien:
code:
1
time="2020-10-08T09:54:03+02:00" level=error msg="Unable to obtain ACME certificate for domains \"*.mijndomein.nl,mijndomein.nl\" : unable to generate a certificate for the domains [*.mijndomein.nl mijndomein.nl]: error: one or more domains had a problem:\n[*.mijndomein.nl] acme: error: 400 :: urn:ietf:params:acme:error:dns :: DNS problem: NXDOMAIN looking up TXT for _acme-challenge.mijndomein.nl - check that a DNS record exists for this domain, url: \n" providerName=letsencrypt.acme


wat mij opvalt, is dat hij zoekt naar "acme-challenge.mijndomein.nl", kijk ik echter in TransIP panel, zie ik "acme-challenge" <- dus zonder ".mijndomein.nl"

[ Voor 58% gewijzigd door Chrisiesmit93 op 08-10-2020 09:58 ]


Acties:
  • 0 Henk 'm!

  • FireDrunk
  • Registratie: November 2002
  • Laatst online: 09:34
uh, die snap ik niet. Normaal gesproken genereert Traefik on-the-fly een private key voor elk certificaat wat je aanvraagt. Dus je hoeft zelf helemaal geen key te genereren.

Ook zie ik nergens in je code een referentie naar die private key in /docker/traefik/transip.key.

Even niets...


Acties:
  • 0 Henk 'm!

  • jvwou123
  • Registratie: Maart 2002
  • Laatst online: 11:49
Mijn config waarbij een wildcard werkt:
alle belangrijk config dan, niet volledig
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    environment:
      - TRANSIP_PRIVATE_KEY_PATH=/run/secrets/TR_TOKEN
      - TRANSIP_ACCOUNT_NAME=**Username**
    command:
      - --certificatesresolvers.transip.acme.email=email@domain
      - --certificatesresolvers.transip.acme.dnschallenge=true
      - --certificatesresolvers.transip.acme.dnschallenge.provider=transip
      - --certificatesResolvers.transip.acme.dnsChallenge.resolvers=1.1.1.1:53,1.0.0.1:53
      - --certificatesresolvers.transip.acme.storage=/acme.json
    labels:
      # certificates
      - 'traefik.http.routers.wildcard-certs.tls.certresolver=transip'
      - 'traefik.http.routers.wildcard-certs.tls.domains[0].main=domain.nl'
      - 'traefik.http.routers.wildcard-certs.tls.domains[0].sans=*.domain.nl'


@FireDrunk die key is bij transip nodig om de DNS entries te kunnen maken.

Acties:
  • 0 Henk 'm!

  • FireDrunk
  • Registratie: November 2002
  • Laatst online: 09:34
Aaah, my bad, het is je token, niet je SSL private key.

Even niets...


Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
@FireDrunk correct, token (verwijzing staat in de environment zoals hierboven te zien is), is voor de record aan te maken bij TransIP zodat LE die kan checken.

Wat ik wil bereiken is met 1 wildcard certificaat, meerdere docker containers richting het internet beschikbaar stellen.

@jvwou123 Bedankt voor de snippet! Ik zal eens kijken of ik daarmee verder kom :)

Acties:
  • 0 Henk 'm!

  • jvwou123
  • Registratie: Maart 2002
  • Laatst online: 11:49
nog een kleine opmerking: transip is traag met het toevoegen aan de DNS, dus misschien nog deze regel toevoegen:
code:
1
      - --certificatesresolvers.transip.acme.dnschallenge.delayBeforeCheck=300

dat er tussen het in de dns zetten bij Transip en het checken 5 minuten zit. En zelfs dat is bij TransIP soms te kort.

Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
@jvwou123 ik zie het volgende staat in de log:
code:
1
Wait for propagation [timeout: 10m0s, interval: 10s]"


Dit suggereert mij dat ie 10 min wacht voordat ie verder gaat, dan heb ik die "delayBeforeCheck" niet nodig toch ?

Acties:
  • 0 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 11:02
Chrisiesmit93 schreef op donderdag 8 oktober 2020 @ 10:08:
@jvwou123 ik zie het volgende staat in de log:
code:
1
Wait for propagation [timeout: 10m0s, interval: 10s]"


Dit suggereert mij dat ie 10 min wacht voordat ie verder gaat, dan heb ik die "delayBeforeCheck" niet nodig toch ?
Hoe ik dat lees is dat die 10 minuten lang, elke 10 seconden, heeft gecontroleerd of het acme-challenge record is aangemaakt. Traefik wacht namelijk tot die het record zelf ziet alvorens verder te gaan met de ACME challenge.

Als ik al moet gokken zou ik zeggen dat er iets niet klopt aan je resolvers stukje. En direct gebruik maken van de DNS servers van TransIP vind ik daar raar. Immers bestaat er dan ook een grotere kans dat de server waartegen Traefik checkt het DNS record wel al heeft doorgevoerd, maar de andere twee nog niet. Als je een andere DNS server (zoals 1.1.1.1 of van je ISP) gebruikt lijkt die kans mij ietsje kleiner.

Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
Helder, ga ik dat ook wijzigen.

Het volgende probleem viel mij nog wel op:
code:
1
DNS problem: NXDOMAIN looking up TXT for _acme-challenge.mijndomein.nl - check that a DNS record exists for this domain, url: \n" providerName=letsencrypt.acme


In het TransIP admin panel zie ik alleen _acme-challenge staan, dus zonder ".mijndomein.nl"
Klopt dat, of moet het domein achter de _acme-challenge in een TXT record staan ?

Acties:
  • 0 Henk 'm!

  • jvwou123
  • Registratie: Maart 2002
  • Laatst online: 11:49
Chrisiesmit93 schreef op donderdag 8 oktober 2020 @ 10:21:
Het volgende probleem viel mij nog wel op:
code:
1
DNS problem: NXDOMAIN looking up TXT for _acme-challenge.mijndomein.nl - check that a DNS record exists for this domain, url: \n" providerName=letsencrypt.acme


In het TransIP admin panel zie ik alleen _acme-challenge staan, dus zonder ".mijndomein.nl"
Klopt dat, of moet het domein achter de _acme-challenge in een TXT record staan ?
TransIP zet in de DNS zelf, jou domeinnaam er achter.
Als je bij transip zelf invult:
host.mijndomein.nl dan maakt TransIP daar in de DNS van: host.mijndomein.nl.mijndomein.nl.
Tenzij je host.mijndomein.nl. invult, maar dat is allemaal extra werk.

Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
@jvwou123 Tuurlijk... 8)7
Geen idee wat nu de oplossing is geweest, maar ik zie een certificaat in mijn acme.json staat 8)

Ik heb de genoemde wijzigingen wat betret DNS en delayBeforeCheck doorgevoerd en blijkbaar was dat de oplossing (denk ik haha) :9

Thanks voor het meedenken en helpen! :*)

[ Voor 7% gewijzigd door Chrisiesmit93 op 08-10-2020 10:37 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

@Chrisiesmit93 Je zou, voor de zekerheid een
code:
1
      - TRANSIP_PRIVATE_KEY_PATH=/transip.key

kunnen gebruiken. Ik heb daar namelijk ook een absoluut pad staan.

Hetzelfde geldt voor
[code] storage: /acme.json [code]

In mijn configuratie van traefik heb ik het volgend staan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
entryPoints:
  web:
    address: :80
    http:
      redirections:
        entryPoint:
          to: websecure

  websecure:
    address: :443
    http:
      tls:
        certResolver: letsencrypt
        domains:
          - main: "*.mijndomein.nl"
            sans:
              - mijndomein.nl


Als laatste denk ik dat je goed moet kijken of je PRIVATE KEY wel correct is opgemaakt.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
@Matis Thanks voor de tip, ik heb nu "/transip.key" overal neergezet waar nodig.

*Als het het goed is*, klopt de private key gok ik
Deze heb ik 1 op 1 gecopy paste vanaf de TransIP site naar de transip.key file.
(+ anders had ik geen acme DNS entry in TransIP console) :)

Ander vraagje, kan je ook TLS zaken in de Entrypoint zetten (zodat het globaal voor "alles" geld, of moet het in de middleware staan met dan soort verwijzing of iets dergelijks ?
Had online al wel wat gevonden, maar dat geld alleen voor Traefik v1.x, voor v2.x zie ik zo snel niet iets dergelijks (of ik kijk verkeerd):
https://doc.traefik.io/tr...onfiguration/entrypoints/

Doel is standaard http -> https redirecten (wat ik nu via entrypoint reeds heb) en daarnaast standaard TLS settings meegeven voor "goede veiligheid" / SSL Labs A+ score.

Mocht iemand voorbeelden hebben, is dat natuurlijk ook altijd mooi!

Acties:
  • +1 Henk 'm!

  • Joni
  • Registratie: Oktober 2002
  • Niet online
Ik doe dat met een combinatie van statische en dynamische configuratiebestanden:

Statische config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[entryPoints]
  [entryPoints.web]
    address = ":80"
    [entryPoints.web.http]
      [entryPoints.web.http.redirections]
        [entryPoints.web.http.redirections.entryPoint]
          to = "websecure"
          scheme = "https"

  [entryPoints.websecure]
    address = ":443"
    [entryPoints.websecure.http]
      middlewares = ["secheaders@file"]
      [entryPoints.websecure.http.tls]
        options = "default"
        certResolver = "letransip"


Dynamische config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# traefik_dynamic.toml
# Dynamic configuration
[tls.options]
  [tls.options.default]
    minVersion = "VersionTLS12"
    cipherSuites = ["TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256","TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"]
    curvePreferences = ["secp384r1","secp521r1","x25519"]
    sniStrict = true

[http.middlewares]
  [http.middlewares.secheaders]
    [http.middlewares.secheaders.headers]
      stsPreload = true
      forceSTSHeader = true
      stsSeconds = 31536000
      stsIncludeSubdomains = true
      [http.middlewares.secheaders.headers.customResponseHeaders]
        Server = ""
        Referrer-Policy = "strict-origin"
        Content-Security-Policy = "default-src 'self'"


Ingressroute (Kubernetes CRD):
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
#<knip>
spec:
  entryPoints:
  - websecure
  routes:
  - kind: Rule
    match: #<knip>
    services:
    - name: #<service_name>
      port: 80
  tls:
    certResolver: letransip
    domains:
    - main: '<domain>'

Acties:
  • 0 Henk 'm!

  • Chrisiesmit93
  • Registratie: Februari 2009
  • Laatst online: 11-09 19:27
Iedereen bedankt voor de hulp dusver! _/-\o_

Ik ben weer even met Traefik bezig, maar ik heb een probleem ontdekt in mijn situatie:
wanneer ik Home Assistant via de proxy open, gaat dit goed, open ik echter een add-on van Home Assistant, dan krijg ik binnen Chrome de melding "<sub.domein.nl> heeft de verbinding geweigerd."
(Zie home Assistant zelf wel, maar rechts in het scherm, wat lijkt op een iframe, niet de inhoud van de add-on zelf, daar staat bovenstaande foutmelding.

De link die ik gebruik is https://<sub.domein.nl>core_deconz, intern werkt de link http://<ip adres>/core_deconz wel.

Dit gebruik ik als config:
code:
1
2
3
4
5
6
7
8
9
10
http:
  routers:
    ha-01-rtr:
      rule: Host(`<sub.domein.nl>`)
      service: ha-01-svc
  services:
    ha-01-svc:
      loadBalancer:
        servers:
          - url: http://<ip adres>:8123


Dit staat in mijn traefik.yml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
log:
  level: "ERROR"
  filePath: "/traefik.log"

global:
  checkNewVersion: true
  sendAnonymousUsage: false

serversTransport:
  insecureSkipVerify: true

api:
  dashboard: true

entryPoints:
  http:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: https
          scheme: https
          permanent: true
  https:
    address: ":443"
    http:
      middlewares:
        - hsts@file
        - rate-limit@file
      tls:
        certResolver: letsencrypt
        domains:
          - main: "<*.domein.nl>"
            sans:
              - "<domein.nl>"

certificatesResolvers:
  letsencrypt:
    acme:
      email: webmaster@<domein.nl>
      storage: ./acme.json
      dnsChallenge:
        provider: transip
        resolvers: "ns0.transip.net,ns1.transip.nl,ns2.transip.eu"


providers:
  file:
    directory: /rules
    watch: true

Met de middleware uitgeschakeld (in de hsts zit "frameDeny: true"), werkt het nog steeds niet... :/

Acties:
  • 0 Henk 'm!

  • FireDrunk
  • Registratie: November 2002
  • Laatst online: 09:34
Mogelijk moet je Home Assistant nog vertellen dat het achter een proxy draait. Vaak dmv een setting of een environment variabele.

Even niets...


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
Misschien even in het HA topic op je post wijzen?

Home Assistant: Open source Python3 home automation - deel 3

(Ik gebruik zelf wel HA en Traefik, maar geen add-ons.... Kan je dus ook niet helpen)

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
Traefik (docker) werkte bij mij smooth. Totdat ik het local IP adres van de machine wijzigde . Ik heb het nu al een paar keer geprobeerd met een verse container.. gecheckt of port forwarding nog goed staat (80/443 naar traefik) maar ik blijf dit probleem behouden:

code:
1
time="2020-11-02T19:07:08Z" level=error msg="Unable to obtain ACME certificate for domains \"files.obelix.cloud\": unable to generate a certificate for the domains [files.obelix.cloud]: acme: Error -> One or more domains had a problem:\n[files.obelix.cloud] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: Invalid response from http://files.obelix.cloud/.well-known/acme-challenge/HxTFGCDbWiqbZckHZhqtO9qEBvNWJNbvEWvgwHJTexE [85.144.162.51]: 404, url: \n" rule="Host(`files.obelix.cloud`)" providerName=letsencrypt.acme routerName=filerun


Het kan niet aan mijn configuratie liggen (docker-compose), want ik heb daar niets aan veranderd.
Ik heb voor de grap een nieuwe subdomein aangemaakt bij mijn domein host (file.obelix.cloud naast de bestaande files.obelix.cloud) maar dat geeft dezelfde foutmelding.

Ik snap hier niks van.

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@Jazco2nd Je hebt de portforwards wel aangepast naar het nieuwe IP in je router/firewall neem ik aan? :9

Acties:
  • +1 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
lolgast schreef op maandag 2 november 2020 @ 20:36:
@Jazco2nd Je hebt de portforwards wel aangepast naar het nieuwe IP in je router/firewall neem ik aan? :9
@)#@#* ik had mijn portforwarding wel geupdate maar daarbij is iets misgegaan.
Nu zijn de poorten weldegelijk open. op 1 service na gaat alles goed: de service waarvoor ik tijdelijk file.obelix.cloud had geregistreerd (dat ging goed, nadat de poorten open waren).

Nu ik het weer terugzet naar files.obelix.cloud, krijg ik een 400 error:

code:
1
time="2020-11-02T20:09:23Z" level=error msg="Unable to obtain ACME certificate for domains \"files.obelix.cloud\": unable to generate a certificate for the domains [files.obelix.cloud]: acme: Error -> One or more domains had a problem:\n[files.obelix.cloud] acme: error: 400 :: urn:ietf:params:acme:error:dns :: During secondary validation: No valid IP addresses found for files.obelix.cloud, url: \n" providerName=letsencrypt.acme routerName=filerun rule="Host(`files.obelix.cloud`)"


De andere services werken dus probleemloos 8)7

EDIT:
het werkt, moest gewoon even geduld hebben :)

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@Jazco2nd Dat lijkt me een Nameserver issue, niet zozeer Traefik. Heb je het domein recent aangemaakt? Klopt je CNAME/Wildcard?

Als ik dit zo zie zijn sowieso nog niet alle nameservers op de hoogte van je ip
Afbeeldingslocatie: https://i.imgur.com/pDka2O8.png

Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
lolgast schreef op maandag 2 november 2020 @ 21:18:
@Jazco2nd Dat lijkt me een Nameserver issue, niet zozeer Traefik. Heb je het domein recent aangemaakt? Klopt je CNAME/Wildcard?

Als ik dit zo zie zijn sowieso nog niet alle nameservers op de hoogte van je ip
[Afbeelding]
Ja ik moest gewoon ff wachten en daarna traefik herstarten, weer ff wachten.
Misschien had ik ook ff teveel pogingen gedaan. In elk geval werkt het nu.

Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
Hi, ik ben een Traefik-n00b, en ben aan het stoeien. ik krijg een aantal dingen wel aan de praat, maar niet alles.

Mijn Traefki docker-compose.yml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
version: '3'

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: always
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
    labels:
      - traefik.enable=true
      - traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$aMf12NAg$$B9H7lyu3MNG7Y/LDe5iTV/
      - traefik.http.routers.traefik-secure.service=api@internal
      - traefik.http.routers.traefik-secure.entrypoints=https
      - traefik.http.routers.traefik-secure.rule=Host(`monitor.mydomain.com`)
      - traefik.http.routers.traefik-secure.middlewares=traefik-auth
      - traefik.http.routers.traefik-secure.tls=true
      - traefik.http.routers.traefik-secure.tls.certResolver=default
      - traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
      - traefik.http.routers.http-catchall.entrypoints=http
      - traefik.http.routers.http-catchall.middlewares=redirect-to-https
      - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https

networks:
  proxy:
    external: true


bijbehorende traefik.yml

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
api:
  dashboard: true

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

tls:
  options:
    default:
      sniStrict: true
      minVersion: VersionTLS12

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false

certificatesResolvers:
  default:
    acme:
      email: myemail@gmail.com
      storage: acme.json
      tlsChallenge: {}
      httpChallenge:
        entryPoint: http


Traefik werk prima1

Ik heb ook Portainer draaien emt de volgende docker-compose.yml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
version: '3'

services:
  portainer:
    image: portainer/portainer:latest
    container_name: portainer
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./portainer-data:/data
      - /opt/traefik/data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.portainer.entrypoints=http"
      - "traefik.http.routers.portainer.rule=Host(`portainer.mydomain.com`)"
      - "traefik.http.middlewares.portainer-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.portainer.middlewares=portainer-https-redirect"
      - "traefik.http.routers.portainer-secure.entrypoints=https"
      - "traefik.http.routers.portainer-secure.rule=Host(`portainer.mydomain.com`)"
      - "traefik.http.routers.portainer-secure.tls=true"
      - "traefik.http.routers.portainer-secure.tls.certresolver=default"
      - "traefik.http.routers.portainer-secure.service=portainer"
      - "traefik.http.services.portainer.loadbalancer.server.port=9000"
      - "traefik.docker.network=-proxy"

networks:
  proxy:
    external: true


Portainer werkt ook prima!

Nu wil ik graag Matomo draaien. Ik heb de volgende docker-compose.yml gemaakt. Alle variabelen staan in db.env.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version: '3'

services:
  db:
    image: mariadb
    command: --max-allowed-packet=64MB
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
    env_file:
      - ./db.env

  app:
    image: matomo:fpm-alpine
    restart: always
    links:
      - db
    volumes:
      - ./config:/var/www/html/config:rw
      - ./logs:/var/www/html/logs
      - matomo:/var/www/html
    environment:
      - MATOMO_DATABASE_HOST=db
    env_file:
      - ./db.env

  web:
    image: nginx:alpine
    restart: always
    volumes:
      - matomo:/var/www/html:ro
      - ./matomo.conf:/etc/nginx/conf.d/default.conf:ro
      - /opt/traefik/data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.matomo.entrypoints=http"
      - "traefik.http.routers.matomo.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.middlewares.matomo-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.matomo.middlewares=matomo-https-redirect"
      - "traefik.http.routers.matomo-secure.entrypoints=https"
      - "traefik.http.routers.matomo-secure.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.routers.matomo-secure.tls=true"
      - "traefik.http.routers.matomo-secure.tls.certresolver=default"
      - "traefik.http.routers.matomo-secure.service=matomo"
      - "traefik.http.services.matomo.loadbalancer.server.port=80"
      - "traefik.docker.network=-proxy"
      - "traefik.frontend.headers.STSSeconds=15768000"
    ports:
      - 8585:80

volumes:
  db:
  matomo:

networks:
  proxy:
    external: true


De Matomo instance start zonder foutmeldingen. Traefik detecteert hem keurig;
Afbeeldingslocatie: https://tweakers.net/i/2DbRm8MxhR0D_FfWK72L1tgK218=/800x/filters:strip_exif()/f/image/kPZo4mCRGQXScM3lBmMPhzoe.png?f=fotoalbum_large

Als ik nu naar https://matomo.mydomain.com ga krijg ik de volgende foutmelding: 'Gateway Timeout' : Failed to load resource: the server responded with a status of 504 ()
Het lukt me niet de fout te vinden. kan iemand me op weg helpen?

Thanks!

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@Wtrdk Je hebt je proxy network niet aan de web-container gekoppeld. Traefik heeft dus geen verbinding met die container

Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
lolgast schreef op donderdag 5 november 2020 @ 21:43:
@Wtrdk Je hebt je proxy network niet aan de web-container gekoppeld. Traefik heeft dus geen verbinding met die container
Wow, dat is een snelle reactie! ;-)
Ik heb het gelijk getest, en het volgende toegevoegd in 'web':
code:
1
2
    networks:
      - proxy


Nu krijg ik geen timeout meer maar een 404-error...
Logs in de web-container geven het volgende aan:
code:
1
nginx: [emerg] host not found in upstream "app:9000" in /etc/nginx/conf.d/default.conf:2


Log in de app-container:
code:
1
172.26.0.6 -  05/Nov/2020:20:52:49 +0000 "GET /index.php" 500


DIt lijken me meer docker-issues, maar mocht iemand een tip hebben dan hou ik me aanbevolen!

Acties:
  • 0 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 11:02
Wtrdk schreef op donderdag 5 november 2020 @ 21:56:
[...]

Wow, dat is een snelle reactie! ;-)
Ik heb het gelijk getest, en het volgende toegevoegd in 'web':
code:
1
2
    networks:
      - proxy


Nu krijg ik geen timeout meer maar een 404-error...
Logs in de web-container geven het volgende aan:
code:
1
nginx: [emerg] host not found in upstream "app:9000" in /etc/nginx/conf.d/default.conf:2


Log in de app-container:
code:
1
172.26.0.6 -  05/Nov/2020:20:52:49 +0000 "GET /index.php" 500


DIt lijken me meer docker-issues, maar mocht iemand een tip hebben dan hou ik me aanbevolen!
Nu je de web service in het proxy netwerk hebt geplaatst kan deze niet meer verbinden met de app service :P

Dit is je oplossing:
YAML:
1
2
3
4
5
6
7
8
9
10
# op root niveau
networks:
  default:
  proxy:
    external: true

#op web niveau
  networks:
    - default
    - proxy

De overige services worden automatisch toegekend aan het default netwerk. Alle services zullen dan dus in het default netwerk zitten (web expliciet, de anderen impliciet) en de web service zit daarnaast ook in het proxy netwerk waardoor Traefik ermee kan verbinden.

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
Wat hierboven gezegd wordt inderdaad :)

Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
Helaas nog geen succes... na het aanpassen van de networks krijg ik weer de Gateway Timeout.
ik heb het als volgt aangepast:
code:
1
2
3
4
5
6
7
8
9
10
  web:
    image: nginx:alpine
    restart: always
    networks:
      - default
      - proxy
    volumes:
      - matomo:/var/www/html:ro
      - ./matomo.conf:/etc/nginx/conf.d/default.conf:ro
      - /opt/traefik/data/acme.json:/acme.json


En aan het eind van het bestand:
code:
1
2
3
4
networks:
  default:
  proxy:
    external: true


Ik probeer Traefik icm Docker-compose te doorgronden, maar het lukt me nog niet helemaal 8)7

[ Voor 8% gewijzigd door Wtrdk op 05-11-2020 22:12 ]


Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@Wtrdk Ok. Maar als je naar het IP-adres van je server:8585 gaat werkt de pagina wel? Ik zie zo niet direct iets niet goed staan in je compose

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
@Wtrdk je moet 2 netwerken maken: een waar alle traefik communicatie via verloopt en een waar je matomo app overheen loopt. Ik heb ook Traefik 2 draaien icm Matomo en dat werkt goed. Je moet vooral heel goed opletten naar je virtuele netwerken die je in docker maakt en welke containers je daar aan hangt.

* bridge network: hier koppelt Traefik naar buiten toe over je host, gewoon default docker netwerk waar je de http/https poorten naar buiten toe open zet
* web network: een netwerk dat ik heb gemaakt waar Traefik in zit waar alle containers die Traefik managed in zitten, dus alle websites
* matomo network: een local network waar de matomo webserver, applicatieserver en database server in zitten

De matomo frontend is een nginx webserver. Deze 'exposed' poort 80 naar buiten de container. Deze container zet je in het web network zodat Traefik de exposed poort ziet en hier een domainnaam / certificaat etc aan kan koppelen. Dat is gelijk aan de andere containers die via Traefik lopen.

De matomo frontend wil de php requests via fastcgi doorsturen naar de matomo php applicatie, waar php-fpm draait. Deze twee containers moeten dus ook in eenzelfde netwerk zitten. Dat geldt ook voor de koppeling tussen matomo app en db, deze moeten in een netwerk zitten om de php applicatie de db te laten uitlezen. Om het eenvoudig te maken, heb ik één netwerk waar frontend, app en db in zitten zodat ze elkaar kunnen zien.

Wat ik bij jou zie: je haalt de netwerken door elkaar en de verschillende poorten. Je moet een matomo netwerk creëren waarbij alleen de webserver ook een pootje heeft in het Traefik netwerk. De app en db moeten niet in dat Traefik netwerk zitten, anders zouden die ook van buitenaf bereikbaar kunnen worden. De frontend, app en db van matomo zet je weer in een eigen ander netwerk.

Dan, als je een applicatie via poorten / domeinnamen naar de buitenwereld wil koppelen, dan regel je dat in traefik via je bridge netwerk. Dus geen configuratie aan je matomo frontend container, maar via je labels door traefik laten regelen.

Dan, je moet alle containers die je aan Traefik wil koppelen, in het Traefik net

Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
@lolgast Helaas werkt dat ook niet, dus misschien zit daar het probleem, en niet in Traefik. Ik krijg rechtstreeks op poort 8585 ook een 500 error.

@mithras Ik snap wat je zegt. Ik heb docker-compose.yml als volgt aangepast:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
version: '3'

services:
  db:
    image: mariadb
    command: --max-allowed-packet=64MB
    restart: always
    networks:
     - matomo
    volumes:
      - db:/var/lib/mysql
    env_file:
      - ./db.env
    environment:
      - MYSQL_ROOT_PASSWORD=f4i39N81

  app:
    image: matomo:fpm-alpine
    restart: always
    networks:
      - matomo
    links:
      - db
    volumes:
      - ./config:/var/www/html/config:rw
      - ./logs:/var/www/html/logs
      - matomo:/var/www/html
    environment:
      - MATOMO_DATABASE_HOST=db
    env_file:
      - ./db.env

  web:
    image: nginx:alpine
    restart: always
    depends_on:
      - app
    networks:
      - matomo
      - proxy
    volumes:
      - matomo:/var/www/html:ro
      - ./matomo.conf:/etc/nginx/conf.d/default.conf:ro
      - /opt/traefik/data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.matomo.entrypoints=web"
      - "traefik.http.routers.matomo.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.middlewares.matomo-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.matomo.middlewares=matomo-https-redirect"
      - "traefik.http.routers.matomo-secure.entrypoints=websecure"
      - "traefik.http.routers.matomo-secure.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.routers.matomo-secure.tls=true"
      - "traefik.http.routers.matomo-secure.tls.certresolver=default"
      - "traefik.http.routers.matomo-secure.service=matomo"
      - "traefik.http.services.matomo.loadbalancer.server.port=80"
      - "traefik.docker.network=-proxy"
      - "traefik.frontend.headers.STSSeconds=15768000"
    ports:
      - 8585:80

volumes:
  db:
  matomo:

networks:
  matomo:
    external: false
  proxy:
    external: true


Log van web in docker:
code:
1
2
3
4
2020/11/06 13:06:15 [error] 22#22: *8 open() "/var/www/html/favicon.ico" failed (2: No such file or directory), client: 172.26.0.5, server: , request: "GET /favicon.ico HTTP/1.1", host: "matomo.mydomain.com", referrer: "https://matomo.mydomain.com/"


172.26.0.5 - - [06/Nov/2020:13:06:15 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "https://matomo.mydomain.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36" "mijnIP"



De log van app:
code:
1
2
3
4
[06-Nov-2020 13:00:22] NOTICE: fpm is running, pid 1
[06-Nov-2020 13:00:22] NOTICE: ready to handle connections
172.29.0.4 -  06/Nov/2020:13:05:27 +0000 "GET /index.php" 500
172.29.0.4 -  06/Nov/2020:13:05:28 +0000 "GET /index.php" 500


Ik begin het gevoel te krijgen dat het meer een docker issue is dan Traefik...

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Wtrdk schreef op vrijdag 6 november 2020 @ 14:12:
@lolgast Helaas werkt dat ook niet, dus misschien zit daar het probleem, en niet in Traefik. Ik krijg rechtstreeks op poort 8585 ook een 500 error.

@mithras Ik snap wat je zegt. Ik heb docker-compose.yml als volgt aangepast:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
version: '3'

services:
  db:
    image: mariadb
    command: --max-allowed-packet=64MB
    restart: always
    networks:
     - matomo
    volumes:
      - db:/var/lib/mysql
    env_file:
      - ./db.env
    environment:
      - MYSQL_ROOT_PASSWORD=f4i39N81

  app:
    image: matomo:fpm-alpine
    restart: always
    networks:
      - matomo
    links:
      - db
    volumes:
      - ./config:/var/www/html/config:rw
      - ./logs:/var/www/html/logs
      - matomo:/var/www/html
    environment:
      - MATOMO_DATABASE_HOST=db
    env_file:
      - ./db.env

  web:
    image: nginx:alpine
    restart: always
    depends_on:
      - app
    networks:
      - matomo
      - proxy
    volumes:
      - matomo:/var/www/html:ro
      - ./matomo.conf:/etc/nginx/conf.d/default.conf:ro
      - /opt/traefik/data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.matomo.entrypoints=web"
      - "traefik.http.routers.matomo.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.middlewares.matomo-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.matomo.middlewares=matomo-https-redirect"
      - "traefik.http.routers.matomo-secure.entrypoints=websecure"
      - "traefik.http.routers.matomo-secure.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.routers.matomo-secure.tls=true"
      - "traefik.http.routers.matomo-secure.tls.certresolver=default"
      - "traefik.http.routers.matomo-secure.service=matomo"
      - "traefik.http.services.matomo.loadbalancer.server.port=80"
      - "traefik.docker.network=-proxy"
      - "traefik.frontend.headers.STSSeconds=15768000"
    ports:
      - 8585:80

volumes:
  db:
  matomo:

networks:
  matomo:
    external: false
  proxy:
    external: true


Log van web in docker:
code:
1
2
3
4
2020/11/06 13:06:15 [error] 22#22: *8 open() "/var/www/html/favicon.ico" failed (2: No such file or directory), client: 172.26.0.5, server: , request: "GET /favicon.ico HTTP/1.1", host: "matomo.mydomain.com", referrer: "https://matomo.mydomain.com/"


172.26.0.5 - - [06/Nov/2020:13:06:15 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "https://matomo.mydomain.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36" "mijnIP"



De log van app:
code:
1
2
3
4
[06-Nov-2020 13:00:22] NOTICE: fpm is running, pid 1
[06-Nov-2020 13:00:22] NOTICE: ready to handle connections
172.29.0.4 -  06/Nov/2020:13:05:27 +0000 "GET /index.php" 500
172.29.0.4 -  06/Nov/2020:13:05:28 +0000 "GET /index.php" 500


Ik begin het gevoel te krijgen dat het meer een docker issue is dan Traefik...
Je bent deels goed op weg maar nog niet helemaal. Hieronder:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
web:
    image: nginx:alpine
    restart: always
    depends_on:
      - app
    networks:
      - matomo
      - proxy
    volumes:
      - matomo:/var/www/html:ro
      - ./matomo.conf:/etc/nginx/conf.d/default.conf:ro
      - /opt/traefik/data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.matomo.entrypoints=web"
      - "traefik.http.routers.matomo.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.middlewares.matomo-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.matomo.middlewares=matomo-https-redirect"
      - "traefik.http.routers.matomo-secure.entrypoints=websecure"
      - "traefik.http.routers.matomo-secure.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.routers.matomo-secure.tls=true"
      - "traefik.http.routers.matomo-secure.tls.certresolver=default"
      - "traefik.http.routers.matomo-secure.service=matomo"
      - "traefik.http.services.matomo.loadbalancer.server.port=80"
      - "traefik.docker.network=-proxy"
      - "traefik.frontend.headers.STSSeconds=15768000"
    ports:
      - 8585:80


Dus je zegt tegen Traefik in het label dat de server op poort 80 draait. Maar de docker container map je de interne poort (80, want standaard nginx) map je naar 8585 :? Die docker container heeft standaard (want, nogmaals nginx container) alleen poort 80 aan de buitenkant van de container. Die zal Traefik detecteren en via de labels aan de hostmachine koppelen. In jouw geval, aan matomo.mydomain.com.

Die port mapping die je nu hebt, hernummert eigenlijk de interne docker poort 80 aan de buitenkant van de container naar 8585. Maar toch zeg je tegen Traefik dat deze container bereikt kan worden op zijn poort 80. Dat gaat hem dan niet worden ;)

Volgens mij moet het goed gaan als je de poortmapping eruit haalt en dan kan ook de loadbalancer regel eruit. Als dat niet werkt, moet je even stap voor stap debuggen:

1. Heb je Traefik wel goed draaien? (Bijv check je dashboard)
2. Herkent Traefik de container wel (bijv zie je dat in het dashboard maar ook in de logs)
3. Zitten er foutmeldingen binnen Traefik over het aanmaken van een router of service?
4. Kom je wel in de web container terecht? Bijv probeer een URL naar een statisch bestand van Matomo, een css file ofzo want dat blijft binnen de web container en wordt niet naar de app container gestuurd
5. Check je web container voor foutmeldingen dat bijv nginx niet goed werkt, of check of nginx zeurt over de ontbrekende fpm proxy
6. Check in de app container voor fouten, want onderhand na stap 1-5 lijkt Traefik en je webserver wel te werken

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
mithras schreef op vrijdag 6 november 2020 @ 15:37:
[...]
Dus je zegt tegen Traefik in het label dat de server op poort 80 draait. Maar de docker container map je de interne poort (80, want standaard nginx) map je naar 8585 :? Die docker container heeft standaard (want, nogmaals nginx container) alleen poort 80 aan de buitenkant van de container. Die zal Traefik detecteren en via de labels aan de hostmachine koppelen. In jouw geval, aan matomo.mydomain.com.

Die port mapping die je nu hebt, hernummert eigenlijk de interne docker poort 80 aan de buitenkant van de container naar 8585. Maar toch zeg je tegen Traefik dat deze container bereikt kan worden op zijn poort 80. Dat gaat hem dan niet worden ;)

Volgens mij moet het goed gaan als je de poortmapping eruit haalt en dan kan ook de loadbalancer regel eruit. Als dat niet werkt, moet je even stap voor stap debuggen:

...
Wat je hier zegt is niet waar. Je kunt Traefik naar de interne poort (80) laten verwijzen omdat ze in hetzelfde netwerk zitten. De portmapping 8585 is om de container rechtstreeks via het IP van de host te benaderen, buiten Traefik om. Beide kunnen naast elkaar bestaan.

Het probleem hier zit in de netwerken tussen de db/app/web container. Dat heeft niets met portmappings te maken

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
lolgast schreef op vrijdag 6 november 2020 @ 15:44:
[...]

Beide kunnen naast elkaar bestaan.
Ah dat is wel interessant om te weten. Maar dat gaat dus alleen werken als je een container in een bridged netwerk zet? Als je een local netwerk hebt waarin je (web)containers met traefik communiceren, gaat die poort mapping natuurlijk niet door naar je host. Maar omdat je een container achter traefik in een bridged netwerk zet komt die poort mapping dus wel op de host uit? :)

Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
mithras schreef op vrijdag 6 november 2020 @ 15:37:
[...]


Je bent deels goed op weg maar nog niet helemaal. Hieronder:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
web:
    image: nginx:alpine
    restart: always
    depends_on:
      - app
    networks:
      - matomo
      - proxy
    volumes:
      - matomo:/var/www/html:ro
      - ./matomo.conf:/etc/nginx/conf.d/default.conf:ro
      - /opt/traefik/data/acme.json:/acme.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.matomo.entrypoints=web"
      - "traefik.http.routers.matomo.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.middlewares.matomo-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.matomo.middlewares=matomo-https-redirect"
      - "traefik.http.routers.matomo-secure.entrypoints=websecure"
      - "traefik.http.routers.matomo-secure.rule=Host(`matomo.mydomain.com`)"
      - "traefik.http.routers.matomo-secure.tls=true"
      - "traefik.http.routers.matomo-secure.tls.certresolver=default"
      - "traefik.http.routers.matomo-secure.service=matomo"
      - "traefik.http.services.matomo.loadbalancer.server.port=80"
      - "traefik.docker.network=-proxy"
      - "traefik.frontend.headers.STSSeconds=15768000"
    ports:
      - 8585:80


Dus je zegt tegen Traefik in het label dat de server op poort 80 draait. Maar de docker container map je de interne poort (80, want standaard nginx) map je naar 8585 :? Die docker container heeft standaard (want, nogmaals nginx container) alleen poort 80 aan de buitenkant van de container. Die zal Traefik detecteren en via de labels aan de hostmachine koppelen. In jouw geval, aan matomo.mydomain.com.

Die port mapping die je nu hebt, hernummert eigenlijk de interne docker poort 80 aan de buitenkant van de container naar 8585. Maar toch zeg je tegen Traefik dat deze container bereikt kan worden op zijn poort 80. Dat gaat hem dan niet worden ;)

Volgens mij moet het goed gaan als je de poortmapping eruit haalt en dan kan ook de loadbalancer regel eruit. Als dat niet werkt, moet je even stap voor stap debuggen:

1. Heb je Traefik wel goed draaien? (Bijv check je dashboard)
2. Herkent Traefik de container wel (bijv zie je dat in het dashboard maar ook in de logs)
3. Zitten er foutmeldingen binnen Traefik over het aanmaken van een router of service?
4. Kom je wel in de web container terecht? Bijv probeer een URL naar een statisch bestand van Matomo, een css file ofzo want dat blijft binnen de web container en wordt niet naar de app container gestuurd
5. Check je web container voor foutmeldingen dat bijv nginx niet goed werkt, of check of nginx zeurt over de ontbrekende fpm proxy
6. Check in de app container voor fouten, want onderhand na stap 1-5 lijkt Traefik en je webserver wel te werken
1: volgens mij werkt alles naar behoren. Geen errors, zie afbeelding;
Afbeeldingslocatie: https://tweakers.net/i/2DbRm8MxhR0D_FfWK72L1tgK218=/800x/filters:strip_exif()/f/image/kPZo4mCRGQXScM3lBmMPhzoe.png?f=fotoalbum_large
2. Ik heb geen logging in Traefik. Als ik het aanzet door het toe te voegen in traefik.yml worden er geen logs weggeschreven.
3. Ik zie in de webinterface van Traefik geen meldingen, maar zoals hierboven gezegd heb ik geen logbestanden...
4. Ik kom niet bij Matomo zelf, ik blijf een 500 error krijgen, wat mijn gevoel sterkt dat het aan docker ligt (en een onjuist config, maar wat weet ik niet...)
5. In de webcontainer de volgende meldingen:
code:
1
2
3
4
5
6
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: error: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up


6. Geen fouten:
code:
1
2
[06-Nov-2020 19:55:05] NOTICE: fpm is running, pid 1
[06-Nov-2020 19:55:05] NOTICE: ready to handle connections

Acties:
  • 0 Henk 'm!

  • Jazco2nd
  • Registratie: Augustus 2002
  • Laatst online: 10-09 23:10
Is er eigenlijk een voordeel van het gebruik van (Traefik) labels in je Docker-Compose versus de methode die in dit voorbeeld staat? Hij doet het zonder labels, alle containers gooit hij in een apart Docker netwerk en verder zit alle config in Traefik.yml:

https://github.com/pamendoz/personalDockerCompose

Acties:
  • +1 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
Jazco2nd schreef op zondag 15 november 2020 @ 21:18:
Is er eigenlijk een voordeel van het gebruik van (Traefik) labels in je Docker-Compose versus de methode die in dit voorbeeld staat? Hij doet het zonder labels, alle containers gooit hij in een apart Docker netwerk en verder zit alle config in Traefik.yml:

https://github.com/pamendoz/personalDockerCompose
Qua configuratie is het voorkeur denk ik, beide werken uiteindelijk. Als je labels je docker-compose gebruikt weet Traefik of een container draait en dus of hij moet proberen de backend te bereiken. Stopt de container, haalt Traefik de configuratie weg. Is een stuk dynamischer.

Ik vind het ook fijn dat ik in de docker-compose van bijvoorbeeld Lychee kan zien met welke parameters die in Traefik is ontsloten. Alles van Lychee in 1 config. Als je liever alles van/met/voor Traefik in 1 config wilt, is jouw voorbeeld een oplossing. Met als nadeel dat wanneer je stopt met 1 container je die niet moet vergeten te verwijderen uit ie Traefik config

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
edit: niets, 0,0 gewijzigd en een paar uur later werkt het gewoon. Schiet mij maar lek.... 8)7

Misschien dat jullie me kunnen helpen met een probleempje om meerdere domeinen aan mijn Traefik te hangen. Gisteren heb ik voor de twee kinderen een domein gescoord bij TransIP waar ze zelf wat mee kunnen spelen. Natuurlijk komt dit achter mijn Traefik te hangen, die draaide al prima met mijn hoofddomein en alle domeinen hangen onder dezelfde account in TransIP.

Docker-compose van Traefik:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
services:
  traefik:
    container_name: traefik
    image: traefik:latest
    restart: always
    ports:
      - 80:80
      - 443:443
    networks:
      - webservers
    environment:
      - TRANSIP_ACCOUNT_NAME=xxxxx
      - TRANSIP_PRIVATE_KEY_PATH=/transip.key
    volumes:
      - /home/bob/docker/core/traefik_v2/traefik.yaml:/traefik.yaml:ro
      - /home/bob/docker/core/traefik_v2/access.log:/access1.log
      - /home/bob/docker/core/traefik_v2/acme.json:/acme.json
      - /home/bob/docker/core/traefik_v2/rules:/rules:ro
      - /home/bob/docker/core/traefik_v2/.htpasswd:/.htpasswd:ro
      - /home/bob/docker/core/traefik_v2/transip.key:/transip.key:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/localtime:/etc/localtime:ro
    labels:
      - traefik.enable=true
      - traefik.http.routers.traefik-secure.rule=Host(`traefik.domeinnaam1.nl`)
      - traefik.http.routers.traefik-secure.entrypoints=services
      - traefik.http.routers.traefik-secure.service=api@internal
      - traefik.http.routers.traefik-secure.priority=99
      - traefik.http.routers.traefik-secure.tls=true
      - traefik.http.routers.traefik-secure.tls.certresolver=le
      - traefik.http.routers.traefik-secure.tls.domains[0].main=domeinnaam1.nl
      - traefik.http.routers.traefik-secure.tls.domains[0].sans=*.domeinnaam1.nl
      - traefik.http.routers.traefik-secure.tls.domains[1].main=domeinnaam2.nl
      - traefik.http.routers.traefik-secure.tls.domains[1].sans=*.domeinnaam2.nl
      - traefik.http.routers.traefik-secure.tls.domains[2].main=domeinnaam3.nl
      - traefik.http.routers.traefik-secure.tls.domains[2].sans=*.domeinnaam3.nl

traefik.yaml:
YAML:
1
2
3
4
5
6
7
8
9
10
#Enable acme with dns challenge
certificatesResolvers:
  le:
    acme:
      email: xxxmijnemailxxx
      storage: /acme.json
      dnsChallenge:
        provider: "transip"
        resolvers:
          - "ns0.transip.net,ns1.transip.nl,ns2.transip.eu,1.1.1.1,8.8.8.8"


In acme.json zie ik voor domeinnaam1.nl een certificaat, niet voor 2 en 3.
In de Traefik docker logs zie ik:
code:
1
2
3
time="2020-11-28T09:23:13+01:00" level=error msg="Unable to obtain ACME certificate for domains \"domeinnaam3.nl,*.domeinnaam3.nl\" : unable to generate a certificate for the domains [domeinnaam3.nl *.domeinnaam3.nl]: error: one or more domains had a problem:\n[domeinnaam3.nl] [domeinnaam3.nl] acme: error presenting token: transip: could not get token from authenticator: error requesting token: The label 'gotransip-client-1606551793' is already used in another active access token.\n" providerName=le.acme

time="2020-11-28T09:27:54+01:00" level=error msg="Unable to obtain ACME certificate for domains \"domeinnaam2.nl,*.domeinnaam2.nl\" : unable to generate a certificate for the domains [domeinnaam2.nl *.domeinnaam2.nl]: error: one or more domains had a problem:\n[*.domeinnaam2.nl] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: During secondary validation: Incorrect TXT record \"0whi1TLqqBTVA-B91QW3ZI81VMpiAbbLZAyukLGuWPU\" (and 1 more) found at _acme-challenge.domeinnaam2.nl, url: \n" providerName=le.acme`

Label van dat token zie ik inderdaad ook in de TransIP backend.

Wat doe ik mis?

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • B2
  • Registratie: April 2000
  • Laatst online: 06:01

B2

wa' seggie?

Ik ben sinds een tijdje over van Traefik 1 naar 2, maar mis in 2 eigenlijk een globale regel om verkeer wat op http binnen komt te redirecten naar https. Klopt het dat die er niet is en je dit per service in moet stellen?

Acties:
  • +1 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 11:02
B2 schreef op zondag 29 november 2020 @ 15:08:
Ik ben sinds een tijdje over van Traefik 1 naar 2, maar mis in 2 eigenlijk een globale regel om verkeer wat op http binnen komt te redirecten naar https. Klopt het dat die er niet is en je dit per service in moet stellen?
Neen, dit klopt niet meer. Bij 2.0 moest dit inderdaad wel per router. Sinds 2.2 of 2.3 of zo kun je dit onder het entrypoint vast leggen.

Mocht je hier niet genoeg aanknopingspunten aan hebben kan ik later mijn config wel even nakijken en hier plaatsen.

Edit:
Intussen toch even opgezocht. Hier staat het in de documentatie. En dit is mijn config:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
entryPoints:
  web:
    address: ":8080"
    http:
      redirections:
        entryPoint:
          to: ":443"
          scheme: https

  web-secure:
    address: ":8443"
    http:
      tls:
        certResolver: le

[ Voor 26% gewijzigd door RobertMe op 29-11-2020 15:45 ]


Acties:
  • +1 Henk 'm!

  • B2
  • Registratie: April 2000
  • Laatst online: 06:01

B2

wa' seggie?

RobertMe schreef op zondag 29 november 2020 @ 15:25:
[...]

Neen, dit klopt niet meer. Bij 2.0 moest dit inderdaad wel per router. Sinds 2.2 of 2.3 of zo kun je dit onder het entrypoint vast leggen.

Mocht je hier niet genoeg aanknopingspunten aan hebben kan ik later mijn config wel even nakijken en hier plaatsen.

Edit:
Intussen toch even opgezocht. Hier staat het in de documentatie. En dit is mijn config:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
entryPoints:
  web:
    address: ":8080"
    http:
      redirections:
        entryPoint:
          to: ":443"
          scheme: https

  web-secure:
    address: ":8443"
    http:
      tls:
        certResolver: le
Top, met je hint was het inderdaad al gelukt :)

Acties:
  • 0 Henk 'm!

  • UTMachine
  • Registratie: Juli 2000
  • Nu online
Ik probeer naar 2.3.x te upgraden, maar ik krijg de onderstaande errors ... Maar ik zie niet waarom het niet werkt :-(

code:
1
2
time="2020-12-08T17:46:36Z" level=error msg="middleware \"hsts@file\" does not exist" entryPointName=https routerName=dsmr-secured@docker
time="2020-12-08T19:08:18Z" level=error msg="middleware \"redirect@file\" does not exist" entryPointName=http routerName=http_catchall@docker


Ik heb "/rules/middleware.yaml" geconfigureerd als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
http:
  middlewares:
    redirect:
      redirectScheme:
        scheme: https
        permanent: true

    ipwhitelist:
      ipWhiteList:
        sourceRange:
          - "192.168.1.0/24"
        ipStrategy:
          depth: 0

    hsts:
      headers:
        sslRedirect: true
        stsPreload: true
        stsSeconds: 315360000
        stsIncludeSubdomains: true


En in mijn "docker-compose.yaml" ziet eruit als voor bv dsmr:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  dsmr:
    hostname: dsmr
    container_name: dsmr
    image: ualex73/dsmr-reader-docker:4.9.0
    restart: unless-stopped
    environment:
      - DB_HOST=db-dsmr
      - DSMR_USER=dsmrreader
      - DSMR_EMAIL=root@localhost
      - DSMR_PASSWORD=password
    volumes:
      - /etc/localtime:/etc/localtime:ro
    networks:
      - net-traefik
    labels:
      - traefik.enable=true
      - traefik.docker.network=net-traefik
      - traefik.http.routers.dsmr-secured.rule=Host(`dsmr.domain.nl`)
      - traefik.http.routers.dsmr-secured.entrypoints=https
      - traefik.http.routers.dsmr-secured.middlewares=hsts@file
      - traefik.http.routers.dsmr-secured.tls=true
      - traefik.http.services.dsmr.loadbalancer.server.port=80

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@UTMachine Ik heb hetzelfde gehad. Het kwam bij mij door een niet meer bestaande middleware volgens mij. Kan ook in een van je andere bestanden zitten natuurlijk die geladen wordt, want hij voegt bij opstarten alles samen.

Is helaas net te lang geleden, ik weet niet meer welke setting het was bij mij.

Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 11:56
Ik krijg die ook voor mijn file based middle wares, maar die werken uiteindelijk toch. Is dat bij jou ook zo?

Misschien dat de docker config eerder geladen is/wordt dan de file config?

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

  • UTMachine
  • Registratie: Juli 2000
  • Nu online
lolgast schreef op dinsdag 8 december 2020 @ 20:45:
@UTMachine Ik heb hetzelfde gehad. Het kwam bij mij door een niet meer bestaande middleware volgens mij. Kan ook in een van je andere bestanden zitten natuurlijk die geladen wordt, want hij voegt bij opstarten alles samen.

Is helaas net te lang geleden, ik weet niet meer welke setting het was bij mij.
Nog iets verder gezocht, en ik had een deprecated optie in de "/rules" staan hierdoor werd dus alle andere dingen in "/rules" niet verwerkt :'( :'( :'( Da's geen vooruitgang qua configuratie.

Acties:
  • 0 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
@UTMachine Maar je hebt het dus wel gevonden?

Acties:
  • 0 Henk 'm!

  • UTMachine
  • Registratie: Juli 2000
  • Nu online
Klopt, ik kreeg ook de volgende melding:
Cannot start the provider *file.Provider: /rules/hass.yaml: field not found, node: passTLSCert

De optie passTLSCert is dus deprecated en in 2.2 ignored die dus die melding, maar in 2.3 stopt die met verwerken van alle andere opties (in andere files).

Acties:
  • +1 Henk 'm!

  • lolgast
  • Registratie: November 2006
  • Nu online
Dat was hem! Die had ik er ook instaan inderdaad ja :/

Acties:
  • 0 Henk 'm!

  • UTMachine
  • Registratie: Juli 2000
  • Nu online
Hmmbob schreef op dinsdag 8 december 2020 @ 21:09:
Ik krijg die ook voor mijn file based middle wares, maar die werken uiteindelijk toch. Is dat bij jou ook zo?

Misschien dat de docker config eerder geladen is/wordt dan de file config?
Nee, met die foutmelding werkt er eigenlijk weinig (tot niets) in Traefik.

  • joost308
  • Registratie: Februari 2010
  • Laatst online: 08:45
Hier ook een probleem met upgrade van 2.2.x naar 2.3.x
code:
1
2
3
level=error msg="Cannot start the provider *file.Provider: /rules/autodiscover.yml: field not found, node: middelwares"
level=error msg="middleware \"redirect@file\" does not exist" routerName=nextcloud@docker entryPointName=web
level=error msg="middleware \"hsts@file\" does not exist" entryPointName=websecure routerName=nextcloud-secured@docker

Ik heb een docker-compose.yml file om de zooi te starten. Config is redelijk basis met daarin een fileprovider (directory)
code:
1
2
3
4
providers:
  file:
    directory: /rules
    watch: true

en in de /rules folder die in de container ro gemount wordt in de root een paar bestanden voor hosts maar ook met default settings (volgens mij een keer in dit forum gevonden)
hij valt blijkbaar over mijn middlewares.yml. Ik heb gezocht op internet, dit forum en de docs maar kan het niet vinden :'(
code:
1
2
3
4
5
6
7
8
9
10
11
http:
  middlewares:
    redirect:
      redirectScheme:
        scheme: https
    hsts:
      headers:
        sslRedirect: true
        stsPreload: true
        stsSeconds: 315360000
        stsIncludeSubdomains: true

'k hoop dat iemand hier mij de goede kant op kan helpen.

  • lolgast
  • Registratie: November 2006
  • Nu online
@joost308 Zowel bij mij als bij UTmachine ging het om de config van ‘passTLSCert’ in een van de bestanden. Grote kans dat dat bij jou ook het geval is. Even zoeken in alle bestanden :)
Pagina: 1 2 3 4 Laatste