Sometimes you need to plan for coincidence
Homeassistant krijg ik niet aan de gang, maar esphome wel. Ik raad je wel aan dat je de docker-compose files apart houdt. Dus eentje voor traefik zelf en voor bv esphome. Vergeet je DNS records niet of edit (C:\Windows\System32\drivers\etc\hosts) als je geen DNS server hebt.JorisV schreef op dinsdag 28 december 2021 @ 23:12:
Ik ben weer een klein stapje verder! Ik moest het root certificaat installeren in windows en android en nu heb een geaccepteerde https://rpi4/whoami.
Mijn doel is uiteindelijk om home assistant in https te krijgen. Daarvoor heb ik nu:
Ten eerste had ik een certificaat gemaakt voor *.home.arpa. Had je dit eerder uitgelegd hoe je dit doet.
traefik's docker-compose.yml:
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
| version: '3.3'
networks:
traefik:
external: true
services:
traefik:
image: traefik:2.5
container_name: traefik
command:
# Docker als provider
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.file.directory=/etc/traefik/dynamic"
# Entrypoint -> is a front-end named "web" on HTTP Port 80
- "--entrypoints.web.address=:80"
# Entrypoint -> is a front-end named "web-secure" on HTTPS Port 443
- "--entrypoints.web-secure.address=:443"
ports:
- 80:80
- 443:443
networks:
- traefik
restart: unless-stopped
volumes:
- ./dynamic-config.yml:/etc/traefik/dynamic/config.yml:ro
- ./certs:/etc/certs:ro
- /var/run/docker.sock:/var/run/docker.sock:ro |
dynamic-config.yml:
1
2
3
4
| tls:
certificates:
- certFile: /etc/certs/local-cert.pem
keyFile: /etc/certs/local-key.pem |
esphome's docker-compose.yml:
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
| version: "3"
networks:
traefik:
external: true
esphomenetwork:
services:
esphome:
image: esphome/esphome
container_name: esphome2
volumes:
- ./esphome-config:/config:rw
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
networks:
- traefik
- esphomenetwork
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.esphome-secure.entrypoints=web-secure"
- "traefik.http.routers.esphome-secure.rule=Host(`esphome.home.arpa`)"
- "traefik.http.routers.esphome-secure.tls=true"
- "traefik.http.services.esphome-secure.loadbalancer.server.port=6052" |
Ik heb een vraag omtrent het gebruik van Traefik binnen een netwerk.
Ik heb een Proxmox Node (2 totaal) met daarin een LXC container waarop docker --> Traefik draait.
Wat zijn de mogelijkheden om een 2e node toe te voegen an traefik? (de lxc containers daarop dus)
Zit ik dan aan n docker swarm of cluster proxmox (of tweede instance Traefik) vast?
Of is er wel een optie om Docker containers van een andere node toe te voegen binnen Traefik?
Daar ben ik nu al enige tijd mee aan t prutsen.. maar kom er niet uit (ligt vast aan mij)..lolgast schreef op donderdag 10 februari 2022 @ 09:52:
@Koepert Je kunt sowieso de 'file' functie van Traefik gebruiken natuurlijk
Vooral ook omdat ik diverse berichten tegenkom over wel of niet werkend (en welke labels wel of niet)..
- Node 1 met FireflyIII
- Node 2 met Traefik en Authelia
Werkt prima met Docker containers van node 2, werkt prima met entries uit de file. maar niet met Fireflyiii. Zeker niet in combi met Authelia. Wat juist volgens mij een mooie combinatie oplevert.
Voor de volledigheid:
Maar ik krijg dus OF een niet werkende pagina OF een "Fatal error: "The Remote-User (REMOTE_USER) header was unexpectedly empty.""In mijn .env
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 TRUSTED_PROXIES=** # It's also possible to change the way users are authenticated. You could use Authelia for example. # Authentication via the REMOTE_USER header is supported. Change the value below to "remote_user_guard". # # This will also allow Windows SSO. # # If you do this please read the documentation for instructions and warnings: # https://docs.firefly-iii.org/advanced-installation/authentication # # This function is available in Firefly III v5.3.0 and higher. ##AUTHENTICATION_GUARD=web AUTHENTICATION_GUARD=remote_user_guard # If the guard is changed, Firefly III uses the 'REMOTE_USER' header as per RFC 3875. # You can also use another header, like AUTH_USER when using Windows SSO. # Some systems use X-Auth headers. In that case, use HTTP_X_AUTH_USERNAME or HTTP_X_AUTH_EMAIL # Depending on your system, REMOTE_USER may need to be changed to HTTP_REMOTE_USER # # Firefly III won't be able to send emails when the header you use isn't an email address. # AUTHENTICATION_GUARD_HEADER=HTTP_REMOTE_USER
in mijn firefly container:
code:
1 2 3 4 5 6- "traefik.enable=true" - "traefik.http.routers.firefly_iii.rule=Host(`myserver.com`)" - "traefik.http.routers.firefly_iii.entrypoints=https" - "traefik.http.routers.firefly_iii.middlewares=authelia@docker" - "traefik.http.routers.firefly_iii.tls=true" - "traefik.http.services.firefly_iii.loadbalancer.server.port=8080"
In Authelia
code:
1 2 3 4 5 6 7- "traefik.enable=true" - "traefik.http.routers.authelia.rule=Host(`login.myserver.com`)" - "traefik.http.routers.authelia.entrypoints=websecure" - "traefik.http.routers.authelia.tls=true" - "traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://login.myserver.com/" - "traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true" - "traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups"
Met uiteraard overal mn eigen/juiste domein.
[ Voor 63% gewijzigd door Koepert op 10-02-2022 12:06 ]
Hoe ziet een file voorbeeld eruit van je? Want ik gebruik hier file voor o.a. de verbinding naar Home Assistant (draait op een andere VM) of services op andere LXC containers en dat werkt prima.
Ja dat had ik ook wel verwacht iddlolgast schreef op donderdag 10 februari 2022 @ 20:33:
@Koepert Maar die Traefik draait dus in een andere Docker omgeving dan je Firefly? Want dan hebben labels geen zinLabels kunnen alleen uitgelezen worden van de Docker omgeving waar je Traefik mee verbind en ik gok even dat dat de standaar config is endpoint: "unix:///var/run/docker.sock"
Mijn traefik bestaat uit n docker-compose.yml uiteraard, een traefik.yml (met api etc settings) en een config.yml met daarin (oa)Hoe ziet een file voorbeeld eruit van je? Want ik gebruik hier file voor o.a. de verbinding naar Home Assistant (draait op een andere VM) of services op andere LXC containers en dat werkt prima.
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
| routers; bla bla blabla firefly: entryPoints: - "https" rule: "Host(`firefly.domein.adres`)" middlewares: - default-headers - authelia tls: {} service: firefly services bla bla firefly: loadBalancer: servers: - url: "http://IPADRESZONDERPOORTEN" passHostHeader: true middlewares blabla bla default-headers: headers: frameDeny: true sslRedirect: true browserXssFilter: true contentTypeNosniff: true forceSTSHeader: true stsIncludeSubdomains: true stsPreload: true stsSeconds: 15552000 customFrameOptionsValue: SAMEORIGIN customRequestHeaders: X-Forwarded-Proto: https authelia: forwardAuth: address: blalbla url/domain.. |
Dat is t wel eigenlijk. Ik heb in die config.yml dus meerdere staan (proxmox, jellyfin en home assistant) en dat werkt allemaal van zowel host 1 als host 2.
Traefik op Node 2
Firefly op Node 1
Proxmox werkt via de file-config van Traefik?
Werkt Firefly wel als je die benaderd op zijn IP?
Heeel strikt genomen andersomlolgast schreef op donderdag 10 februari 2022 @ 20:55:
Ok, dus even op een rijtje voor mij:
Traefik op Node 2
Firefly op Node 1
Proxmox werkt via de file-config van Traefik?
Werkt Firefly wel als je die benaderd op zijn IP?
Node 1 = Proxmox host -> werkt met file-config van traefik (zowel intern als extern en zowel url als ip benaderbaar, traefik alleen op url) Werkt tevens met Authelia.
LXCcontainers:
- Pihole (werkt met traefik en authelia, als test)
- Traefik & Authelia op 1 container
VM:
- Home Assistant (werkt met Traefik, geen Authelia want 2FA in Home Assistant, via File config)
Node 2 = Proxmox2 host --> werkt met file-config van traefik (zowel intern als extern en zowel url als ip benaderbaar, traefik alleen op url) Werkt tevens met Authelia.
LXContainers:
- Pihole 2 (passive bu van 1, werkt met traefik en authelia, wederom als test)
- Jellyfin (werkt met Traefik, geen authelia toegevoegd wederom via file)
- Firefly (werkt NIET met Traefik NOCH Authelia) --> Benaderbaar via Intern DNS op firefly.domein en IP-adres. zodra HTTPS://firefly.domein probeer krijg ik OF site reageert niet (zonder alle labels ed) of Header = empty (authelia).
rule: Host("proxmox.domain.nl")
Geen idee hoe dat ontstaan islolgast schreef op donderdag 10 februari 2022 @ 21:10:
@Koepert Het valt me nu op dat je de quotes van 'rule' in mijn ogen heel apart hebt, alsof je een SNI wilt gebruiken. Ik gebruik ze zo
rule: Host("proxmox.domain.nl")
Ik snap dan even niet waarom je Firefly intern wel zou kunnen benaderen op http://IP maar waarom je dat niet zou kunnen laten werken via Traefik. Daar is precies niets voor nodig, behalve wat je hebt gepost.
Ja.. dat dus.. Ik ga wel ff verder zoeken.. Er zal ergens iets niet goed zitten.. maar weet nog niet wat.. Blij om te lezen dat in de file van traefik iig in principe niets meer hoeft te staan.. Dat was me niet 100% bekend, ik kom vooral voorbeelden tegen van Fireflyiii + Authelia + Traefik op 1 host/container.. dus het is soms even puzzelen wat er uit kan en wat niet.lolgast schreef op donderdag 10 februari 2022 @ 21:17:
@Koepert
Ik snap dan even niet waarom je Firefly intern wel zou kunnen benaderen op http://IP maar waarom je dat niet zou kunnen laten werken via Traefik. Daar is precies niets voor nodig, behalve wat je hebt gepost.
ZUCHT... T helpt.. als je de INTERNE DNS eerst op de firefly-container richt.. je die vervolgens wel op de traefik container richt..
Authelia.. is nu ook soort van werkend... geloof ik.. k kreeg net nog n bad gateway NA de Authelia inlog..maar nu lijkt t goed te gaan..
Als ik authelia wil toevoegen krijg ik op https nog steeds niets en bij http dit:
Oeps! Er is een fout opgetreden.
Helaas was deze fout niet te herstellen
The guard header was unexpectedly empty. See the logs.
Dus ook dat is niet ' zo simpel ' .. maar ik puzzel wel ff door en dank iig voor de hulp
Wat ik dan weer irritant vind: https://docs.firefly-iii....tallation/authentication/
Hier staat dat je deze setting op remote_user_guard moet zetten.. dan werkt het NIET bij web juist WEL..dus de commented regels zijn de bedoeling bij authelia en de eerste werkt..alleen niet met SSO
1
2
3
| AUTHENTICATION_GUARD=web #AUTHENTICATION_GUARD=remote_user_guard #AUTHENTICATION_GUARD_HEADER=HTTP_REMOTE_USER |
[ Voor 43% gewijzigd door Koepert op 10-02-2022 21:55 ]
[code]dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:38134->127.0.0.11:53: i/o timeout" providerName=dns.acme[/code]
Het lijkt er dus op dat er een DNS-fout is, echter kom ik er niet uit. Veel oplossingen verwijzen naar [code=yaml]network_mode: host[/code], maar dat lijkt niets op te lossen. Verder heb diverse configuraties, zoals van TechnoTim, Smarthomelab en TechJunky geprobeerd. Met mijn provider TransIP krijg ik het niet werkend, maar ook met Cloudflare niet. Het lijkt dus echt een intern stukje te zijn.
Relevant:
[list]
• Ik maak gebruik van een UDM Pro en heb (behalve updates) daar geen veranderingen in gemaakt.
• Daarnaast gebruik ik AdGuard Home als DNS blokker, ook daar zijn geen veranderingen in gemaakt.
[/list]
Edit:
Een aantal avonden bezig geweest, ik stuur dit en heb een helder moment:
1
| /etc/resolv.conf |
Er gaat hier iets mis. Nu mijn router toegevoegd en het werkt
[ Voor 8% gewijzigd door bes-r op 15-12-2022 12:48 ]
[ Voor 98% gewijzigd door martinvdm op 24-12-2022 20:40 ]
He who laughs last thinks slowest! | ▶️ Youtube | 🌐 TechJunky.nl | ☀️ 3000Wp PV | Ford Explorer EV Ext
Was al gelukt, thanks. Ben maar veranderd naar labels. Heb jij trouwens nog een backup van jou traefik2 ergens? Bij mij zeurt ie nog over een about.blank, ik kan me herinneren dit vanuit jou blog/config ooit gehaald te hebben.lolgast schreef op zaterdag 24 december 2022 @ 21:05:
@martinvdm Heb je een foutmelding in je log? Mijn eerste ingeving is een typfout ergens in de config. Ik ben even niet in de gelegenheid om je config te kopieren naar een dummy URL, maar zodra dat kan test ik even wat er bij mij gebeurd
He who laughs last thinks slowest! | ▶️ Youtube | 🌐 TechJunky.nl | ☀️ 3000Wp PV | Ford Explorer EV Ext
Nu heb ik de volgende config eigenlijk simpelweg gedownload vanuit de Traefik website, maar desondanks krijgt het /letsencrypt/acme.json geen certificaat. Ik wil graag de DNS challenge gebruiken, zodat ik een wildcard certificaat kan verkrijgen via Lets Encrypt. De provider die ik gebruik is TransIP, walwaar ik mijn .nl domein afneem..
De config die ik heb is als volgt:
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
| version: "3.3"
services:
traefik:
image: "traefik:v2.9"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.dnschallenge=true"
- "--certificatesresolvers.myresolver.acme.dnschallenge.provider=transip"
#- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=oeps@mail.tld"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
- "8080:8080"
environment:
- "TRANSIP_ACCOUNT_NAME=usert"
- "TRANSIP_PRIVATE_KEY_PATH=/path/naar/private/key"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
whoami:
image: "traefik/whoami"
container_name: "simple-service"
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.cptchaos.nl`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls.certresolver=myresolver" |
Ik hoef dan trouwens alleen cptchaos.nl en *.cptchaos.nl in het certificaat te hebben.
[ Voor 2% gewijzigd door CH4OS op 09-02-2023 00:31 . Reden: emailadres verwijderd ]
Misschien best even je mailadres weghalenCH4OS schreef op woensdag 8 februari 2023 @ 23:32:
De config die ik heb is als volgt:
Heb je de relevante containers ook gelabeled voor Traefik?
[ Voor 13% gewijzigd door Slonzo op 08-02-2023 23:52 ]
Scherp, dank!
Ik wil eerst dit werkend krijgen, dit geeft namelijk ook geen TLS-certificaat, ondanks dat dit bijna direct uit de documentatie komt. Dan kijk ik daarna verder naar de andere Docker containers.Heb je de relevante containers ook gelabeled voor Traefik?
Online zijn er vervolgens ook genoeg guides te vinden, maar geen enkele heeft een vruchtbaar effect.
Ik hoef dan trouwens alleen cptchaos.nl en *.cptchaos.nl in het certificaat te hebben.
[ Voor 39% gewijzigd door CH4OS op 09-02-2023 00:15 ]
De file wordt door de container zelf aangemaakt, het certificate deel erin blijft echter null als waarde krijgen.lolgast schreef op donderdag 9 februari 2023 @ 06:45:
@CH4OS Heb je de acme.json file de juiste rechten (600) gegeven?
Als hij niet bestaat maakt hij hem zelf omdat hij moet bestaan, maar je moet echt zelf de rechten regelen.CH4OS schreef op donderdag 9 februari 2023 @ 07:32:
[...]
De file wordt door de container zelf aangemaakt, het certificate deel erin blijft echter null als waarde krijgen.
https://doc.traefik.io/tr...iguration/acme/#as-a-file
[ Voor 8% gewijzigd door lolgast op 09-02-2023 07:47 ]
Ik zal de juiste rechten moeten checken, maar dat heeft denk ik niets te maken met het wegschrijven van het certificaat. De file krijgt perfect inhoud, net het certificaat niet. Wanneer ik de file (die via een volume mount in een map in een home dir komt, kan niet iedereen er zomaar al bij. Gezien de file aangemaakt wordt lijken de rechten het probleem niet. Ik zit daarnaast op Traefik v2.9 (maar op 3 gebeurd hetzelfde) en gebruik ik dus 1.7 niet, waar je nu naar linkt.lolgast schreef op donderdag 9 februari 2023 @ 07:44:
[...]
Als hij niet bestaat maakt hij hem zelf omdat hij moet bestaan, maar je moet echt zelf de rechten regelen.
https://doc.traefik.io/tr...iguration/acme/#as-a-file
Probeer eens te downgraden naar traefik 2.5?
Ok, dan ga ik het anders proberen:CH4OS schreef op donderdag 9 februari 2023 @ 07:51:
[...]
Ik zal de juiste rechten moeten checken, maar dat heeft denk ik niets te maken met het wegschrijven van het certificaat. De file krijgt perfect inhoud, net het certificaat niet. Wanneer ik de file (die via een volume mount in een map in een home dir komt, kan niet iedereen er zomaar al bij. Gezien de file aangemaakt wordt lijken de rechten het probleem niet. Ik zit daarnaast op Traefik v2.9 (maar op 3 gebeurd hetzelfde) en gebruik ik dus 1.7 niet, waar je nu naar linkt.
Wat zegt je log van Traefik?
Check ik vanavond even, maar eergisteren was het niet echt expliciet in wat er precies mis ging. Het kwam niet verder dan iets in de trant van 'error on creating certificate for sub.domain.tld', het werd mij in elk geval niet duidelijk wat er aan stokte.lolgast schreef op donderdag 9 februari 2023 @ 08:18:
[...]
Ok, dan ga ik het anders proberen:
Wat zegt je log van Traefik?
Really? Wat heb je bij TransIP staan dan? Zowel domein als nameservers ed?jvwou123 schreef op donderdag 9 februari 2023 @ 08:08:
Bij mij werkt sinds traefik 2.9 (of misschien eerder al) de DNS challenge met transip niet meer.
Probeer eens te downgraden naar traefik 2.5?
Want ik heb mn domeinnaam wel bij TIP, maar de nameservers naar die van cloudflare gewijzigd. Mijn config is echter relatief statisch, dus als dit zo is, merk ik t niet snel zeg maar.
Ik heb die twee domeinen ook opgenomen in mijn labels van de traefik container:CH4OS schreef op woensdag 8 februari 2023 @ 23:32:
Ik ben weer met een poging bezig om mijn Nginx reverse proxy te vervangen voor Treafik, zodat ik wat resources beschikbaar krijg op mijn PC in mijn voorraadkast die dienst doet als homelab server.
Nu heb ik de volgende config eigenlijk simpelweg gedownload vanuit de Traefik website, maar desondanks krijgt het /letsencrypt/acme.json geen certificaat. Ik wil graag de DNS challenge gebruiken, zodat ik een wildcard certificaat kan verkrijgen via Lets Encrypt. De provider die ik gebruik is TransIP, walwaar ik mijn .nl domein afneem..
De config die ik heb is als volgt:
code:Ja, ik weet dat ik de Docker socket nu (weer) even direct mount in de container, maar ik wil eerst dit werkend hebben voor ik de boel verder dicht timmer.
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 38version: "3.3" services: traefik: image: "traefik:v2.9" container_name: "traefik" command: #- "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.myresolver.acme.dnschallenge=true" - "--certificatesresolvers.myresolver.acme.dnschallenge.provider=transip" #- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" - "--certificatesresolvers.myresolver.acme.email=oeps@mail.tld" - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" - "8080:8080" environment: - "TRANSIP_ACCOUNT_NAME=usert" - "TRANSIP_PRIVATE_KEY_PATH=/path/naar/private/key" volumes: - "./traefik/letsencrypt:/letsencrypt" - "/var/run/docker.sock:/var/run/docker.sock:ro" whoami: image: "traefik/whoami" container_name: "simple-service" labels: - "traefik.enable=true" - "traefik.http.routers.whoami.rule=Host(`whoami.cptchaos.nl`)" - "traefik.http.routers.whoami.entrypoints=websecure" - "traefik.http.routers.whoami.tls.certresolver=myresolver"
Ik hoef dan trouwens alleen cptchaos.nl en *.cptchaos.nl in het certificaat te hebben.
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
| version: "3" services: traefik: container_name: traefik image: traefik:latest restart: always ports: - 80:80 - 443:443 healthcheck: test: traefik healthcheck --ping environment: - TRANSIP_ACCOUNT_NAME=mijnaccountnaam - TRANSIP_PRIVATE_KEY_PATH=/transip.key volumes: - /home/bob/docker/core/traefik_v2/traefik.yaml:/traefik.yaml:ro - /home/bob/docker/core/traefik_v2/acme.json:/acme.json - /home/bob/docker/core/traefik_v2/transip.key:/transip.key:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /etc/localtime:/etc/localtime:ro labels: - traefik.enable=true - traefik.http.routers.traefik-secure.rule=Host(`traefik.mijndomein.nl`) - traefik.http.routers.traefik-secure.tls=true - traefik.http.routers.traefik-secure.tls.certresolver=le - traefik.http.routers.traefik-secure.tls.domains[0].main=mijndomein.nl - traefik.http.routers.traefik-secure.tls.domains[0].sans=*.mijndomein.nl |
In traefik.yaml staat het volgende voor de cert-resolver:
1
2
3
4
5
6
7
8
9
10
11
12
| #Enable acme with dns challenge certificatesResolvers: le: acme: email: mijn@email.com storage: /acme.json dnsChallenge: provider: "transip" resolvers: - ns0.transip.net - ns1.transip.nl - ns2.transip.eu |
Sometimes you need to plan for coincidence
Ik heb idd domeinen, en de DNS bij TransIP.Koepert schreef op donderdag 9 februari 2023 @ 08:29:
[...]
Really? Wat heb je bij TransIP staan dan? Zowel domein als nameservers ed?
Want ik heb mn domeinnaam wel bij TIP, maar de nameservers naar die van cloudflare gewijzigd. Mijn config is echter relatief statisch, dus als dit zo is, merk ik t niet snel zeg maar.
Ik weet even niet exact meer wat er fout gaat, het had dacht ik te maken met Lego die geupdate is in traefik, en die werkt niet meer samen met de transip intergratie. Er is daar iets stuk.
Wat ik gedaan heb is op basis van de acme.sh container een container gemaakt die de certificaten ophaalt met een DNS verificatie, en dan met een custom script deze in traefik injecteert. En traefik doet dan zelf een hot reload van de config.
Ik heb meer vertrouwen in acme.sh qua stabiel certificaten ophalen dan in traefik waar constant alles gewijzigd wordt.
Ik heb in de log gekeken, daarin zie ik onder andere dit soort meldingen voorbij komen, bij een eerdere poging althans:lolgast schreef op donderdag 9 februari 2023 @ 08:18:
[...]
Ok, dan ga ik het anders proberen:
Wat zegt je log van Traefik?
1
| 2023-02-08T23:12:40+01:00 ERR Unable to obtain ACME certificate for domains error="unable to generate a certificate for the domains [radarr.cptchaos.nl]: error: one or more domains had a problem:\n[radarr.cptchaos.nl] [radarr.cptchaos.nl] acme: error presenting token: transip: Internal error occurred, please contact our support\n" acmeCA=https://acme-v02.api.letsencrypt.org/directory domains=["radarr.cptchaos.nl"] providerName=letsencrypt.acme routerName=https-radarr@docker rule=Host(`radarr.cptchaos.nl`) |
Ik zal nog even met de huidige setup een nieuwe log maken. De rechten op acme.json staan alleen op rw voor de huidige gebruiker, als ik het mij goed herinner, is dat 0600, toch?
EDIT:
Ik heb nu ook de logging maar even op debug logging gezet. Om de een of andere reden komt dat niet in de log file, dus dan maar even attachen met de container. Dan krijg ik onder andere dit soort dingen:
1
| traefik | time="2023-02-09T21:03:25Z" level=error msg="Unable to obtain ACME certificate for domains \"petio.cptchaos.nl\": unable to generate a certificate for the domains [petio.cptchaos.nl]: error: one or more domains had a problem:\n[petio.cptchaos.nl] [petio.cptchaos.nl] acme: error presenting token: transip: Internal error occurred, please contact our support\n" rule="Host(`petio.cptchaos.nl`)" routerName=petio@docker ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=myresolver.acme |
[ Voor 29% gewijzigd door CH4OS op 09-02-2023 22:06 ]
Dit heb ik ook net geprobeerd, maar mocht helaas ook niet baten, als ik de acme.json verwijder, wordt deze wel opnieuw aangemaakt, maar met totaal geen inhoud.Hmmbob schreef op donderdag 9 februari 2023 @ 08:42:
[...]
Ik heb die twee domeinen ook opgenomen in mijn labels van de traefik container:
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 version: "3" services: traefik: container_name: traefik image: traefik:latest restart: always ports: - 80:80 - 443:443 healthcheck: test: traefik healthcheck --ping environment: - TRANSIP_ACCOUNT_NAME=mijnaccountnaam - TRANSIP_PRIVATE_KEY_PATH=/transip.key volumes: - /home/bob/docker/core/traefik_v2/traefik.yaml:/traefik.yaml:ro - /home/bob/docker/core/traefik_v2/acme.json:/acme.json - /home/bob/docker/core/traefik_v2/transip.key:/transip.key:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /etc/localtime:/etc/localtime:ro labels: - traefik.enable=true - traefik.http.routers.traefik-secure.rule=Host(`traefik.mijndomein.nl`) - traefik.http.routers.traefik-secure.tls=true - traefik.http.routers.traefik-secure.tls.certresolver=le - traefik.http.routers.traefik-secure.tls.domains[0].main=mijndomein.nl - traefik.http.routers.traefik-secure.tls.domains[0].sans=*.mijndomein.nl
In traefik.yaml staat het volgende voor de cert-resolver:
YAML:
1 2 3 4 5 6 7 8 9 10 11 12 #Enable acme with dns challenge certificatesResolvers: le: acme: email: mijn@email.com storage: /acme.json dnsChallenge: provider: "transip" resolvers: - ns0.transip.net - ns1.transip.nl - ns2.transip.eu
Ook zojuist v2.5 geprobeerd, maar no cigar, helaas. Gek trouwens dat ik hierover in de GitHub issue tracker van Traefik niets erover vind. Zou dan verwachten dat er een closed issue is, maar dat is er (sinds 2019) ook niet.jvwou123 schreef op donderdag 9 februari 2023 @ 08:08:
Bij mij werkt sinds traefik 2.9 (of misschien eerder al) de DNS challenge met transip niet meer.
Probeer eens te downgraden naar traefik 2.5?
[ Voor 21% gewijzigd door CH4OS op 09-02-2023 22:51 ]
Hier lijkt inderdaad iets mee te zijn, er zijn meerdere DNS providers die nu issues hebben, lijkt het op in elk geval. Ik kwam althans dit issue tegen op de Github van Traefik: https://github.com/traefik/traefik/issues/9680jvwou123 schreef op donderdag 9 februari 2023 @ 08:52:
Ik weet even niet exact meer wat er fout gaat, het had dacht ik te maken met Lego die geupdate is in traefik, en die werkt niet meer samen met de transip intergratie. Er is daar iets stuk.
Zou iemand zijn werkende config helemaal willen delen?
Dit is Tweakers. Wij doen niet aan werkende oplossingen aanbiedenzAo schreef op zondag 19 maart 2023 @ 09:02:
Na allerlei tutorials gebruikt te hebben als inspiratie, heb ik nog steeds geen werkende config voor traefik + compose + TransIp.
Zou iemand zijn werkende config helemaal willen delen?
Als je nu je eigen config deelt kunnen anderen je waarschijnlijk wel een zetje in de juiste richting geven.
Haha, touchéRobertMe schreef op zondag 19 maart 2023 @ 09:09:
[...]
Dit is Tweakers. Wij doen niet aan werkende oplossingen aanbieden
Als je nu je eigen config deelt kunnen anderen je waarschijnlijk wel een zetje in de juiste richting geven.
Ik heb nu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # rules/certs.yaml
http:
routers:
certs:
entryPoints:
- http
- https
service: service-blank
rule: Host("about:blank")
tls:
certResolver: letsencrypt
domains:
- main: "*.mydomain.nl"
sans:
- mydomain.nl
services:
service-blank:
loadBalancer:
servers:
- url: "https://about.blank" |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # rules/middlewares.yaml
http:
middlewares:
redirect:
redirectScheme:
scheme: https
ipwhitelist:
ipWhiteList:
sourceRange:
- "192.168.1.0/24"
ipStrategy:
depth: 0
hsts:
headers:
sslRedirect: true
stsPreload: true
stsSeconds: 315360000
stsIncludeSubdomains: true |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| # rules/tls.yaml
tls:
options:
TLSv13:
minVersion: VersionTLS13
cipherSuites:
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
sniStrict: true
default:
minVersion: VersionTLS12
cipherSuites:
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
sniStrict: true |
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
| # traefik.yaml
log:
level: error
entryPoints:
http:
address: ":80"
https:
address: ":443"
traefik:
address: ":8181"
api:
insecure: true
dashboard: true
serversTransport:
insecureSkipVerify: true
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: traefik_ingress
file:
directory: /rules
watch: true
certificatesResolvers:
letsencrypt:
acme:
email: me@protonmail.com
storage: ./acme.json
dnsChallenge:
provider: transip
delayBeforeCheck: 0 |
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
| # docker-compose.yaml
version: "3"
services:
traefik:
container_name: traefik
image: traefik
restart: always
ports:
- 80:80
- 443:443
- 8181:8181
networks:
- traefik_ingress
environment:
- TRANSIP_ACCOUNT_NAME=me
- TRANSIP_PRIVATE_KEY_PATH=transipkey.pem
volumes:
- ${PWD}/traefik.yaml:/etc/traefik/traefik.yaml:ro
- ${PWD}/acme/acme.json:/acme.json
- ${PWD}/rules:/rules:ro
- ${PWD}/transipkey.pem:/transipkey.pem:ro
- /var/run/docker.sock:/var/run/docker.sock
networks:
traefik_ingress:
external: true |
Als ik traefik start, dan klaagt hij over duplicate domains:
1
2
3
4
| [+] Running 1/1 ⠿ Container traefik Started 1.0s traefik | time="2023-03-18T20:25:16Z" level=info msg="Configuration loaded from file: /etc/traefik/traefik.yaml" traefik | time="2023-03-18T20:25:28Z" level=error msg="Unable to obtain ACME certificate for domains \"*.mydomain.nl,mydomain.nl\"" error="unable to generate a certificate for the domains [*.mydomain.nl mydomain.nl]: error: one or more domains had a problem:\n[*.mydomain.nl] [*.mydomain.nl] acme: error presenting token: transip: this exact record already exists.: _acme-challenge 10 TXT PGXvidvMxt8DiBtKUJMHmRa6BtIeAh_WnWHGY_ScYII\n[mydomain.nl] [mydomain.nl] acme: error presenting token: transip: this exact record already exists.: _acme-challenge 10 TXT 6XmkGMJpUQbVp7Dr28RQtf6hYYA7MT6mLKh8uZ-MXhI\n" providerName=letsencrypt.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" routerName=certs@file rule="Host(\"about:blank\")" |
Na het een nacht te laten gaan, de boel te herstarten (voor de 10e keer
Als ik dit aan een container toevoeg, gebeurt er alleen niets; geen log in de traefik container, geen wijzigingen in TransIp. Wat mis ik hier?
1
2
3
4
5
6
7
8
9
10
11
| labels:
- traefik.enable=true
- traefik.docker.network=traefik_ingress
- traefik.http.routers.navidrome.rule=Host(`muziek.myside.nl`)
- traefik.http.routers.navidrome.entrypoints=http
- traefik.http.routers.navidrome.middlewares=redirect@file
- traefik.http.routers.navidrome-secured.rule=Host(`muziek.myside.nl`)
- traefik.http.routers.navidrome-secured.entrypoints=https
- traefik.http.routers.navidrome-secured.middlewares=hsts@file
- traefik.http.routers.navidrome-secured.tls=true
- traefik.http.services.navidrome.loadbalancer.server.port=4533 |
Niks? Met default logging zie je niks als er een container wel of niet bij komt. En bij TransIP hoor je helemaal niks te zien.zAo schreef op zondag 19 maart 2023 @ 10:49:
Als ik dit aan een container toevoeg, gebeurt er alleen niets; geen log in de traefik container, geen wijzigingen in TransIp. Wat mis ik hier?
Wat gebeurt er als je gewoon naar die URL navigeert in de browser? Krijg je dan een 404? Een certificate error? Na lang wachten een gateway timeout? Of gewoon de pagina te zien die je zou moeten zien?
Dat ik niet aan debug log heb gedachtRobertMe schreef op zondag 19 maart 2023 @ 11:27:
[...]
Niks? Met default logging zie je niks als er een container wel of niet bij komt. En bij TransIP hoor je helemaal niks te zien.
Wat gebeurt er als je gewoon naar die URL navigeert in de browser? Krijg je dan een 404? Een certificate error? Na lang wachten een gateway timeout? Of gewoon de pagina te zien die je zou moeten zien?
Het subdomein lijkt niet aangemaakt te worden, dus ik krijg NXDOMAIN.
Ik probeer een navidrone container te exposen met de volgende labels:
1
2
3
4
5
6
7
8
9
10
11
12
| ports:
- 4533:4533
labels:
- traefik.enable=true
- traefik.docker.network=traefik_ingress
- traefik.http.routers.navidrome.rule=Host(`muziek.domein.online`)
- traefik.http.routers.navidrome.entrypoints=http
- traefik.http.routers.navidrome.middlewares=redirect@file
- traefik.http.routers.navidrome-secured.rule=Host(`muziek.domein.online`)
- traefik.http.routers.navidrome-secured.entrypoints=https
- traefik.http.routers.navidrome-secured.middlewares=hsts@file
- traefik.http.routers.navidrome-secured.tls=true |
De log van Traefik laat dan netjes zien dat die wordt opgepikt:
1
2
3
4
5
6
7
8
9
10
| traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating load-balancer" routerName=navidrome-secured@docker serviceName=navidrome-navidrome entryPointName=https
traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating server 0 http://172.27.0.3:4533" serviceName=navidrome-navidrome serverName=0 entryPointName=https routerName=navidrome-secured@docker
traefik | time="2023-03-19T12:21:39Z" level=debug msg="child http://172.27.0.3:4533 now UP"
traefik | time="2023-03-19T12:21:39Z" level=debug msg="Propagating new UP status"
traefik | time="2023-03-19T12:21:39Z" level=debug msg="Added outgoing tracing middleware navidrome-navidrome" entryPointName=https routerName=navidrome-secured@docker middlewareName=tracing middlewareType=TracingForwarder
traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating middleware" entryPointName=https routerName=navidrome-secured@docker middlewareName=hsts@file middlewareType=Headers
traefik | time="2023-03-19T12:21:39Z" level=warning msg="SSLRedirect is deprecated, please use entrypoint redirection instead." middlewareName=hsts@file middlewareType=Headers entryPointName=https routerName=navidrome-secured@docker
traefik | time="2023-03-19T12:21:39Z" level=debug msg="Setting up secureHeaders from {map[] map[] false [] [] [] [] [] 0 false [] [] true false map[] false 315360000 true true false false false false false}" middlewareName=hsts@file middlewareType=Headers entryPointName=https routerName=navidrome-secured@docker
traefik | time="2023-03-19T12:21:39Z" level=debug msg="Adding tracing to middleware" middlewareName=hsts@file entryPointName=https routerName=navidrome-secured@docker
traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating middleware" entryPointName=https routerName=certs@file serviceName=service-blank middlewareName=pipelining middlewareType=Pipelining |
Iets later zie ik alleen wel dit:
1
2
| traefik | time="2023-03-19T12:21:39Z" level=debug msg="Looking for provided certificate(s) to validate [\"*.domein.online\" \"domein.online\"]..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=letsencrypt.acme traefik | time="2023-03-19T12:21:39Z" level=debug msg="No ACME certificate generation required for domains [\"*.domein.online\" \"domein.online\"]." providerName=letsencrypt.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" |
Hierna wordt er geen DNS entry gemaakt bij TransIP.
Als ik een curl op mijn public IP doe en de host overschrijf naar het navidrone sudomein (muziek.domein.online), dan gaat dat alsnog mis:
1
| curl -H "Host: muziek.domein.online" -v https://my.ip |
In Traefik zie ik dan:
1
2
| traefik | time="2023-03-19T12:20:43Z" level=debug msg="Serving default certificate for request: \"\"" traefik | time="2023-03-19T12:20:43Z" level=debug msg="http: TLS handshake error from my.ip: EOF" |
Waarschijnlijk is het heel obvious, maar ik zie het niet
Als je verwachting is dat Traefik automatisch voor jou DNS regelt: dat is dus niet zo. Je moet zelf de juiste A / AAAA records regelen. Enige dat Traefik met TransIP doet is het uitvoeren van de DNS ACME challenge door heel strict de specificatie te volgen in de zin van "ACME server stuurt een challenge die in een DNS record geplaatst moet worden zodat de ACME server / certificate authority weet dat jij eigenaar van het domein bent". Traefik gaat verder niet automatisch DNS records aanmaken. Sterker nog: de domeinen waarop ik de DNS challenge toepas is in 90% van de gevallen voor een domeinnaam die ik alleen intern / binnenshuis gebruik. Waarbin PiHole de DNS verzorgt en ik met het handje daarin de DNS records opvoer. Mijn Home Assistant bv hoeft niet vanaf het grote boze internet benaderbaar te zijn.zAo schreef op zondag 19 maart 2023 @ 13:27:
[...]
Dat ik niet aan debug log heb gedacht![]()
Het subdomein lijkt niet aangemaakt te worden, dus ik krijg NXDOMAIN.
Ik probeer een navidrone container te exposen met de volgende labels:
code:
1 2 3 4 5 6 7 8 9 10 11 12ports: - 4533:4533 labels: - traefik.enable=true - traefik.docker.network=traefik_ingress - traefik.http.routers.navidrome.rule=Host(`muziek.domein.online`) - traefik.http.routers.navidrome.entrypoints=http - traefik.http.routers.navidrome.middlewares=redirect@file - traefik.http.routers.navidrome-secured.rule=Host(`muziek.domein.online`) - traefik.http.routers.navidrome-secured.entrypoints=https - traefik.http.routers.navidrome-secured.middlewares=hsts@file - traefik.http.routers.navidrome-secured.tls=true
De log van Traefik laat dan netjes zien dat die wordt opgepikt:
code:
1 2 3 4 5 6 7 8 9 10traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating load-balancer" routerName=navidrome-secured@docker serviceName=navidrome-navidrome entryPointName=https traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating server 0 http://172.27.0.3:4533" serviceName=navidrome-navidrome serverName=0 entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="child http://172.27.0.3:4533 now UP" traefik | time="2023-03-19T12:21:39Z" level=debug msg="Propagating new UP status" traefik | time="2023-03-19T12:21:39Z" level=debug msg="Added outgoing tracing middleware navidrome-navidrome" entryPointName=https routerName=navidrome-secured@docker middlewareName=tracing middlewareType=TracingForwarder traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating middleware" entryPointName=https routerName=navidrome-secured@docker middlewareName=hsts@file middlewareType=Headers traefik | time="2023-03-19T12:21:39Z" level=warning msg="SSLRedirect is deprecated, please use entrypoint redirection instead." middlewareName=hsts@file middlewareType=Headers entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="Setting up secureHeaders from {map[] map[] false [] [] [] [] [] 0 false [] [] true false map[] false 315360000 true true false false false false false}" middlewareName=hsts@file middlewareType=Headers entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="Adding tracing to middleware" middlewareName=hsts@file entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating middleware" entryPointName=https routerName=certs@file serviceName=service-blank middlewareName=pipelining middlewareType=Pipelining
Iets later zie ik alleen wel dit:
code:
1 2 traefik | time="2023-03-19T12:21:39Z" level=debug msg="Looking for provided certificate(s) to validate [\"*.domein.online\" \"domein.online\"]..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=letsencrypt.acme traefik | time="2023-03-19T12:21:39Z" level=debug msg="No ACME certificate generation required for domains [\"*.domein.online\" \"domein.online\"]." providerName=letsencrypt.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
Hierna wordt er geen DNS entry gemaakt bij TransIP.
En voor domeinen die publiekelijk toegankelijk zijn hoef je natuurlijk niet de DNS challenge te gebruiken. De TLS challenge werkt dan zelfs beter (vereist geen configuratie en werkt sneller doordat er geen DNS record verspreid hoeft te worden). Enige uitzondering is als je wildcard certificaten wilt gebruiken, die kunnen alleen aangevraagd worden via de DNS challenge. Immers moet je dan bewijzen dat het hele domein ook daadwerkelijk van jou is, i.p.v. alleen bewijzen dat jij aan de andere kant van een specifiek (sub)domein zit.
Waarschijnlijk komt dat doordat je niet via SNI aangeeft welk domein je wilt opvragen. Daardoor geeft Traefik het default certificate terug. Immers wordt de TLS verbinding op gezet voordat de HTTP headers verstuurd worden. Dus Traefik moet al een certificaat gebruiken terwijl die niet weet welke Host header je gaat sturen. Daarvoor is SNI bedacht zodat de client in de TLS negotiation al de Server Name kan opgeven.Als ik een curl op mijn public IP doe en de host overschrijf naar het navidrone sudomein (muziek.domein.online), dan gaat dat alsnog mis:
code:
1 curl -H "Host: muziek.domein.online" -v https://my.ip
In Traefik zie ik dan:
code:
1 2 traefik | time="2023-03-19T12:20:43Z" level=debug msg="Serving default certificate for request: \"\"" traefik | time="2023-03-19T12:20:43Z" level=debug msg="http: TLS handshake error from my.ip: EOF"
Waarschijnlijk is het heel obvious, maar ik zie het niet
Maar als je met het handje de DNS hebt aangemaakt komt dat vanzelf goed. Dan kun je gewoon naar muziek.domein.online gaan en weet de browser dat die tijdens de TLS negotiation SNI moet gebruiken om muziek.domein.online "te gebruiken". Waarna Traefik dus het juiste certificaat kan toepassen.
Ik was inderdaad in de veronderstelling dat DNS gedaan zou worden door Traefik omdat ik dat in het verleden met duckdns werkend had.
Ik heb nu een A aangemaakt en naar mijn public IP laten verwijzen, waarna ik het verkeer -uiteraard- zie binnenkomen in traefik als ik met een browser de url open. Heel behulpzaam is de log alleen niet:
1
| traefik | time="2023-03-19T13:04:49Z" level=debug msg="http: TLS handshake error from myip:63737: read tcp 172.27.0.2:443->myip:63737: read: connection reset by peer" |
Het 172.27.0.2 adres is het docker-ip van traefik.
Kijkend naar de rest van de log, dan ziet het er toch goed uit.
1
2
3
4
5
6
7
8
9
| traefik | time="2023-03-19T13:15:01Z" level=debug msg="Creating middleware" serviceName=navidrome-navidrome middlewareName=pipelining middlewareType=Pipelining entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T13:15:01Z" level=debug msg="Creating load-balancer" entryPointName=https routerName=navidrome-secured@docker serviceName=navidrome-navidrome traefik | time="2023-03-19T13:15:01Z" level=debug msg="Creating server 0 http://172.27.0.3:4533" serviceName=navidrome-navidrome serverName=0 entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T13:15:01Z" level=debug msg="child http://172.27.0.3:4533 now UP" traefik | time="2023-03-19T13:15:01Z" level=debug msg="Propagating new UP status" traefik | time="2023-03-19T13:15:01Z" level=debug msg="Adding tracing to middleware" entryPointName=https routerName=navidrome-secured@docker middlewareName=hsts@file traefik | time="2023-03-19T13:15:01Z" level=debug msg="Adding route for muziek.domein.online with TLS options default" entryPointName=https traefik | time="2023-03-19T13:15:01Z" level=debug msg="Looking for provided certificate(s) to validate [\"*.domein.online\" \"domein.online\"]..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=letsencrypt.acme traefik | time="2023-03-19T13:15:01Z" level=debug msg="No ACME certificate generation required for domains [\"*.domein.online\" \"domein.online\"]." providerName=letsencrypt.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory" |
Dat 172.27.0.3 adres, is het adres van de navidrome container, welke samen met traefik in een docker netwerk zit.
Duwtje?
1
| - traefik.http.services.navidrome.loadbalancer.server.port=4533 |
Thanks. Hoewel ik deze specifiek niet meer kan achterhalen (ben naar een simpele setup gegaan om de basis goed te krijgen), blijkt het aan NAT Loopback / Hairpinning te liggen van mijn Delta modem.lxz schreef op maandag 20 maart 2023 @ 12:04:
heb je nu wel de loadbalancer server port regel in je compose file staan? Die zie ik in je voor-laatste post niet staan:
code:
1 - traefik.http.services.navidrome.loadbalancer.server.port=4533
Al working now. Dank voor het meedenken!
Ik heb sinds een paar dagen precies hetzelfde probleem. Hoe heb jij het precies opgelost / issue gevonden?zAo schreef op dinsdag 21 maart 2023 @ 11:44:
[...]
Thanks. Hoewel ik deze specifiek niet meer kan achterhalen (ben naar een simpele setup gegaan om de basis goed te krijgen), blijkt het aan NAT Loopback / Hairpinning te liggen van mijn Delta modem.![]()
Al working now. Dank voor het meedenken!
Ik draai een Blocky container die mijn domein resolved naar mijn lokale ips.Djankie schreef op woensdag 19 april 2023 @ 15:34:
[...]
Ik heb sinds een paar dagen precies hetzelfde probleem. Hoe heb jij het precies opgelost / issue gevonden?
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
| [http]
[http.middlewares]
[http.middlewares.appname-redirect.redirectScheme]
scheme = "https"
[http.middlewares.test-auth.basicAuth]
users = [
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
]
[http.routers.appname-redirect]
entrypoints = ["web"]
rule = "Host(`appname.domein.nl`)"
middlewares = ["appname-redirect"]
service = "appname"
[http.routers.appname]
entrypoints = ["websecure"]
rule = "Host(`appname.domein.nl`)"
service = "appname"
[http.routers.appname.tls]
certResolver = "letsencrypt"
[http.services]
[http.services.appname.loadbalancer]
[[http.services.appname.loadBalancer.servers]]
url = "http://lokaalipadres:portnumber" |
Je past de basic auth middleware niet toe (zoals je wel doet met de redirect middleware op de andere route).JBS schreef op maandag 22 mei 2023 @ 14:54:
Ik probeer BasicAuth toe te voegen aan een toml rule bestand, maar ik zie vermoedelijk iets over het hoofd, want het werkt niet. Althans, ik krijg geen pop-up voor het invoeren van gebruikersnaam en wachtwoord. Heb het voorbeeld van https://doc.traefik.io/traefik/middlewares/http/basicauth/ toegepast in een bestaand (en werkend) toml bestand, maar zonder succes. Iemand een tip?
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[http] [http.middlewares] [http.middlewares.appname-redirect.redirectScheme] scheme = "https" [http.middlewares.test-auth.basicAuth] users = [ "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/", "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0", ] [http.routers.appname-redirect] entrypoints = ["web"] rule = "Host(`appname.domein.nl`)" middlewares = ["appname-redirect"] service = "appname" [http.routers.appname] entrypoints = ["websecure"] rule = "Host(`appname.domein.nl`)" service = "appname" [http.routers.appname.tls] certResolver = "letsencrypt" [http.services] [http.services.appname.loadbalancer] [[http.services.appname.loadBalancer.servers]] url = "http://lokaalipadres:portnumber"
Dank voor je tip. Een poging daartoe hieronder, maar vermoedelijk ga ik nog ergens de mist in, aangezien het nog niet resulteert in een pop-up voor gebruikersnaam/wachtwoord.RobertMe schreef op maandag 22 mei 2023 @ 15:24:
[...]
Je past de basic auth middleware niet toe (zoals je wel doet met de redirect middleware op de andere route).
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
| [http]
[http.middlewares]
[http.middlewares.appname-redirect.redirectScheme]
scheme = "https"
[http.middlewares.test-auth.basicAuth]
users = [
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
]
[http.routers.appname-redirect]
entrypoints = ["web"]
rule = "Host(`appname.domein.nl`)"
middlewares = ["appname-redirect"]
service = "appname"
[http.routers.test-auth]
entrypoints = ["web"]
rule = "Host(`appname.domein.nl`)"
middlewares = ["test-auth"]
service = "appname"
[http.routers.appname]
entrypoints = ["websecure"]
rule = "Host(`appname.domein.nl`)"
service = "appname"
[http.routers.appname.tls]
certResolver = "letsencrypt"
[http.services]
[http.services.appname.loadbalancer]
[[http.services.appname.loadBalancer.servers]]
url = "http://lokaalipadres:portnumber" |
De koppeling met de TransIP API werkt niet lekker en is volgens mij ook al even stuk. Paar maanden terug ben ik daar ook heel veel mee bezig geweest. Uiteindelijk besloten om de DNS via CloudFlare te doen en die API te gebruiken, dat werkt wel. Ik heb het echter wel alleen nodig voor het wildcard certificaat, omdat ik ook voor de subdomeinen een soort van wildcard op DNS niveau heb ingesteld.zAo schreef op zondag 19 maart 2023 @ 13:27:
[...]
Dat ik niet aan debug log heb gedacht![]()
Het subdomein lijkt niet aangemaakt te worden, dus ik krijg NXDOMAIN.
Ik probeer een navidrone container te exposen met de volgende labels:
code:
1 2 3 4 5 6 7 8 9 10 11 12ports: - 4533:4533 labels: - traefik.enable=true - traefik.docker.network=traefik_ingress - traefik.http.routers.navidrome.rule=Host(`muziek.domein.online`) - traefik.http.routers.navidrome.entrypoints=http - traefik.http.routers.navidrome.middlewares=redirect@file - traefik.http.routers.navidrome-secured.rule=Host(`muziek.domein.online`) - traefik.http.routers.navidrome-secured.entrypoints=https - traefik.http.routers.navidrome-secured.middlewares=hsts@file - traefik.http.routers.navidrome-secured.tls=true
De log van Traefik laat dan netjes zien dat die wordt opgepikt:
code:
1 2 3 4 5 6 7 8 9 10traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating load-balancer" routerName=navidrome-secured@docker serviceName=navidrome-navidrome entryPointName=https traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating server 0 http://172.27.0.3:4533" serviceName=navidrome-navidrome serverName=0 entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="child http://172.27.0.3:4533 now UP" traefik | time="2023-03-19T12:21:39Z" level=debug msg="Propagating new UP status" traefik | time="2023-03-19T12:21:39Z" level=debug msg="Added outgoing tracing middleware navidrome-navidrome" entryPointName=https routerName=navidrome-secured@docker middlewareName=tracing middlewareType=TracingForwarder traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating middleware" entryPointName=https routerName=navidrome-secured@docker middlewareName=hsts@file middlewareType=Headers traefik | time="2023-03-19T12:21:39Z" level=warning msg="SSLRedirect is deprecated, please use entrypoint redirection instead." middlewareName=hsts@file middlewareType=Headers entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="Setting up secureHeaders from {map[] map[] false [] [] [] [] [] 0 false [] [] true false map[] false 315360000 true true false false false false false}" middlewareName=hsts@file middlewareType=Headers entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="Adding tracing to middleware" middlewareName=hsts@file entryPointName=https routerName=navidrome-secured@docker traefik | time="2023-03-19T12:21:39Z" level=debug msg="Creating middleware" entryPointName=https routerName=certs@file serviceName=service-blank middlewareName=pipelining middlewareType=Pipelining
Iets later zie ik alleen wel dit:
code:
1 2 traefik | time="2023-03-19T12:21:39Z" level=debug msg="Looking for provided certificate(s) to validate [\"*.domein.online\" \"domein.online\"]..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=letsencrypt.acme traefik | time="2023-03-19T12:21:39Z" level=debug msg="No ACME certificate generation required for domains [\"*.domein.online\" \"domein.online\"]." providerName=letsencrypt.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
Hierna wordt er geen DNS entry gemaakt bij TransIP.
Als ik een curl op mijn public IP doe en de host overschrijf naar het navidrone sudomein (muziek.domein.online), dan gaat dat alsnog mis:
code:
1 curl -H "Host: muziek.domein.online" -v https://my.ip
In Traefik zie ik dan:
code:
1 2 traefik | time="2023-03-19T12:20:43Z" level=debug msg="Serving default certificate for request: \"\"" traefik | time="2023-03-19T12:20:43Z" level=debug msg="http: TLS handshake error from my.ip: EOF"
Waarschijnlijk is het heel obvious, maar ik zie het niet
EDIT:
Whups, ik zie nu pas dat dit een 2 maanden oude post is, mea culpa!
He? Ik heb nog nooit echt problemen gehad met TransIP. Die keren datveen wildcard cert niet vernieuwd werd kwam dat door een IP whitelist op de TransIP API en dat ik een nieuw IP hadCH4OS schreef op maandag 22 mei 2023 @ 15:45:
[...]
De koppeling met de TransIP API werkt niet lekker en is volgens mij ook al even stuk. Paar maanden terug ben ik daar ook heel veel mee bezig geweest. Uiteindelijk besloten om de DNS via CloudFlare te doen en die API te gebruiken, dat werkt wel. Ik heb het echter wel alleen nodig voor het wildcard certificaat, omdat ik ook voor de subdomeinen een soort van wildcard op DNS niveau heb ingesteld.
Zet de middlewares config eens onder de route waar die bij hoort i.p.v. een nieuwe route makenJBS schreef op maandag 22 mei 2023 @ 15:40:
[...]
Dank voor je tip. Een poging daartoe hieronder, maar vermoedelijk ga ik nog ergens de mist in, aangezien het nog niet resulteert in een pop-up voor gebruikersnaam/wachtwoord.
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[http] [http.middlewares] [http.middlewares.appname-redirect.redirectScheme] scheme = "https" [http.middlewares.test-auth.basicAuth] users = [ "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/", "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0", ] [http.routers.appname-redirect] entrypoints = ["web"] rule = "Host(`appname.domein.nl`)" middlewares = ["appname-redirect"] service = "appname" [http.routers.test-auth] entrypoints = ["web"] rule = "Host(`appname.domein.nl`)" middlewares = ["test-auth"] service = "appname" [http.routers.appname] entrypoints = ["websecure"] rule = "Host(`appname.domein.nl`)" service = "appname" [http.routers.appname.tls] certResolver = "letsencrypt" [http.services] [http.services.appname.loadbalancer] [[http.services.appname.loadBalancer.servers]] url = "http://lokaalipadres:portnumber"
Ik kreeg in elk geval de TransIP API niet aan de praat icm Traefik, ondanks dat ik al jaren hetzelfde IP-adres heb en ik mijn IP-adres had gewhitelist in die API. Toen ik switchte naar CloudFlare DNS werkte het verkrijgen van wildcard certificaten als een zonnetje.RobertMe schreef op maandag 22 mei 2023 @ 15:57:
He? Ik heb nog nooit echt problemen gehad met TransIP. Die keren datveen wildcard cert niet vernieuwd werd kwam dat door een IP whitelist op de TransIP API en dat ik een nieuw IP had
Wellicht werd de API key niet goed door Docker aan de container doorgegeven of zo. Ik gebruik namelijk geen TOML files voor configuratie, enkel configuratie via diverse docker-compose.yml bestanden.
[ Voor 16% gewijzigd door CH4OS op 22-05-2023 16:29 ]
Geloof niet dat ik je hint helemaal begrijp. Staat de test-auth.basicAuth middleware verkeerd, of juist de verwijzing ernaar bij de route? Hoe moet het totaalplaatje van de toml eruit zien volgens jou?RobertMe schreef op maandag 22 mei 2023 @ 15:58:
[...]
Zet de middlewares config eens onder de route waar die bij hoort i.p.v. een nieuwe route maken
[ Voor 7% gewijzigd door JBS op 22-05-2023 16:15 ]
* RobertMe heeft de API key in een file staan. Kan niks mis mee gaan. Anders staat die als value in een env. variable en krijg je idd bv quirks met $ want docker-compose interpreteert het dan als het lezen van een env variable.CH4OS schreef op maandag 22 mei 2023 @ 16:11:
Wellicht werd de API key niet goed door Docker aan de container doorgegeven of zo. Ik gebruik namelijk geen TOML files voor configuratie, enkel configuratie via diverse docker-compose.yml bestanden.
Dit dus:JBS schreef op maandag 22 mei 2023 @ 16:15:
[...]
Geloof niet dat ik je hint helemaal begrijp. Staat de test-auth.basicAuth middleware verkeerd, of juist de verwijzing ernaar bij de route? Hoe moet het totaalplaatje van de toml eruit zien volgens jou?
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
| [http]
[http.middlewares]
[http.middlewares.appname-redirect.redirectScheme]
scheme = "https"
[http.middlewares.test-auth.basicAuth]
users = [
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
]
[http.routers.appname-redirect]
entrypoints = ["web"]
rule = "Host(`appname.domein.nl`)"
middlewares = ["appname-redirect"]
service = "appname"
[http.routers.appname]
entrypoints = ["websecure"]
rule = "Host(`appname.domein.nl`)"
middlewares = ["test-auth"]
service = "appname"
[http.routers.appname.tls]
certResolver = "letsencrypt"
[http.services]
[http.services.appname.loadbalancer]
[[http.services.appname.loadBalancer.servers]]
url = "http://lokaalipadres:portnumber" |
Ik gebruikte er Docker secrets voor.RobertMe schreef op maandag 22 mei 2023 @ 16:38:
[...]
* RobertMe heeft de API key in een file staan. Kan niks mis mee gaan. Anders staat die als value in een env. variable en krijg je idd bv quirks met $ want docker-compose interpreteert het dan als het lezen van een env variable.
Ik heb de users als string bij de docker labels: (ik gebruik dus geen toml, maar docker labels)RobertMe schreef op maandag 22 mei 2023 @ 16:39:
[...]
Dit dus:
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[http] [http.middlewares] [http.middlewares.appname-redirect.redirectScheme] scheme = "https" [http.middlewares.test-auth.basicAuth] users = [ "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/", "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0", ] [http.routers.appname-redirect] entrypoints = ["web"] rule = "Host(`appname.domein.nl`)" middlewares = ["appname-redirect"] service = "appname" [http.routers.appname] entrypoints = ["websecure"] rule = "Host(`appname.domein.nl`)" middlewares = ["test-auth"] service = "appname" [http.routers.appname.tls] certResolver = "letsencrypt" [http.services] [http.services.appname.loadbalancer] [[http.services.appname.loadBalancer.servers]] url = "http://lokaalipadres:portnumber"
1
2
3
| - 'traefik.http.routers.traefik.middlewares=authtraefik'
# password maken: echo $(htpasswd -nb user password )| sed -e s/\\$/\\$\\$/g
- 'traefik.http.middlewares.authtraefik.basicauth.users=user1:PASSHASS,user2:PASSHASS' |
Zie je verder nog foutmeldingen van traefik?
Voor een aantal andere docker containers heb ik basic auth inderdaad ook via labels in docker compose, voor deze specifieke container heb ik een los toml bestand. Op basis van het voorbeeld van @RobertMe werkt basic auth daar nu ook voorjvwou123 schreef op maandag 22 mei 2023 @ 16:44:
[...]
Ik heb de users als string bij de docker labels: (ik gebruik dus geen toml, maar docker labels)
code:
1 2 3- 'traefik.http.routers.traefik.middlewares=authtraefik' # password maken: echo $(htpasswd -nb user password )| sed -e s/\\$/\\$\\$/g - 'traefik.http.middlewares.authtraefik.basicauth.users=user1:PASSHASS,user2:PASSHASS'
Zie je verder nog foutmeldingen van traefik?
Van de Traefik website begrijp ik dat service discovery net een belangrijke feature is. Die integratie is er voor o.a. docker maar dus niet meteen voor LXC containers begrijp ik.
Is het nog steeds handig om naar Traefik te kijken voor mijn beoogde (manuele) gebruik of ben je dan beter af met bijvoorbeeld NGINX?
Traefik kan, moet je het alleen handmatig configureren. Geen idee of het bij Nginx (proxy manager?) wel automatisch kan. En wellicht voordeeltje van Traefik is dat als je (een van de) dynamische config files (met handmatige "route" dan) aanpast of een nieuwe aanmaakt dat automatisch die route wordt toegevoegd (/gewijzigd) zonder dat je moet reloaden / restarten.sloth schreef op woensdag 12 juli 2023 @ 12:31:
Nieuw met Traefik. Ik probeer te begrijpen of Traefik een goede match is als reverse proxy in een Proxmox setup met services in LXC containers.
Van de Traefik website begrijp ik dat service discovery net een belangrijke feature is. Die integratie is er voor o.a. docker maar dus niet meteen voor LXC containers begrijp ik.
Is het nog steeds handig om naar Traefik te kijken voor mijn beoogde (manuele) gebruik of ben je dan beter af met bijvoorbeeld NGINX?
1
| --providers.docker.defaultRule=Host(`{{ trimPrefix `/` .Name }}.mijndomein.nl`) |
Dit levert een naam op dat er als volgt uit ziet: containernaam-dockernetwerk.mijndomein.nl. Maar jullie raden het vast al: ik wil gewoon containernaam.mijndomein.nl hebben. Maar ik heb geen idee hoe dat te fixen.
Ik kan ook niet zeggen om trimSuffix '-dockernetwork' .Name te doen, omdat ik meerdere containers heb, verspreid over meerdere (Docker) "netwerken".
EDIT:
En voor alsnog opgelost! Ik gebruik nu het volgende als regel:
1
| --providers.docker.defaultRule=Host(`{{ index .Labels "com.docker.compose.service" }}.mijndomein.nl`) |
[ Voor 25% gewijzigd door CH4OS op 18-11-2023 19:24 ]
Ben onlangs begonnen met het implementeren van Traefik en ik moet zeggen, als je de materie eenmaal een beetje door hebt, dan kan er veel mee.
Inmiddels al wat PowerShell scripts geschreven waarmee ik on the fly configs aan kan maken voor services die niet in de docker instance van Traefik zelf draaien. Ik heb echter één issue:
Ik krijg een site met Windows Authentication net niet helemaal lekker aan de praat.
Ik heb inmiddels begrepen dat daar een TCP router voor nodig is omdat, vermoedelijk, het oppikken van de windows auth nog vóór het http/https verkeer plaatsvindt.
Ik heb het wel werkend gezien in mijn omgeving, maar om de een of andere reden verdwijnt de functionaliteit ook weer en wordt er bij het aanroepen van de router in Traefik een 404 teruggegeven.
In de logging kan ik er niets over terug vinden.
Als ik de traefik container dan een keer stop en start dan werkt het weer voor een minuut of zo, maar dan springt het beeld weer op zwart, vreemd genoeg.
Ik heb twee configuraties geprobeerd (zie hieronder) maar beide lijken dit euvel te hebben (of ik kan er de vinger niet op leggen waarom het stuk gaat en dit heeft er niets mee te maken
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| ## appconfiguration
tcp:
routers:
app:
entryPoints:
- https
service: app
rule: "HostSNI(`app.domein.locall`)" #hier heb ik ook al HostSNI(`*`) geprobeerd. Echter dan vallen alle andere sites om, ivm de manier waarop TCP vs HTTPS behandeld wordt in Traefik
tls:
options: default
passthrough: true
services:
app:
loadBalancer:
servers:
- address: "192.168.0.1:443" |
Het ip adres is benaderbaar. Als ik van Traefik een 404 krijg en ik ga handmatig in de browser naar dit adres, dan krijg ik wel netjes de vraag om een Windows wachtwoord.
Als ik de container stop en start, dan krijg ik kort zelfs van Traefik bij het aanroepen van app.domein.local een ww prompt (ook echt een Windows auth prompt). Ik kan dan zelfs inloggen en de achterliggende site gebruiken. Maar dan na een minuut of vijf, stopt het met werken en krijg ik weer een 404.
Ik heb al rond lopen struinen op de Reddits en Traefik fora, maar zie daar erg weinig informatie. Wel veel gelijkende vragen, maar daar komt bijna nooit antwoord op. Ik vermoed, omdat het wel op een gegeven moment moet lukken, maar niemand meldt de oplossing terug.
In de logging, zelfs met debugging aan zie ik geen duidelijke reden voorbij komen wat er veranderd als Traefik weer een 404 begint terug te geven. Bij opstarten van Traefik zie ik wel netjes dat de config opgepikt wordt en de route wordt opgebouwd en het end-point als UP aangemerkt wordt.
Heeft iemand hier er hier ervaring mee? Of doet iederen met Traefik voornamelijk alles met containers?
Ik heb andere, non-containerized http(s) services wel netjes kunnen plaatsen achter Traefik. Dit is echter de eerste Windows Auth applicatie die ik probeer te migreren.
-UPDATE-
Uiteraard is dit zoiets waar je niet na kan laten om aan te blijven krabben, maar het lijkt er op dat net na de reboot de TCP router voorrang krijgt op ale andere routers, want dat vergat ik te vermelden, als het werkt voor de Windows Auth site, dan is de kans groot dat alle andere sites niet meer werken. Sterker nog, nu ik de melding krijg dat die andere sites het niet doen en ik ros daar herhaaldelijk op F5, dan krijg ik een IIS auth failed scherm en de vraag om in te loggen!
Lijkt er dus op dat AL het verkeer over de TCP router loopt in eerste instantie. Daar zal ik nog eens verder in duiken.
-UPDATE 2-
Ik denk dat ik al wel wat verder ben. Het venijn lijkt bij Traefik toch wel in de 'kleine' lettertjes te zitten. De documentatie is doorspekt met mitsen en maaren. Zoals, nu ik eens goed aan het lezen ben, het advies om een TCP router specifiek op een eigen entrypoint te configureren.
Ik denk dat ik er verder wel uit ga komen zo. Dank u allen voor het meedenken
[ Voor 17% gewijzigd door ElCondor op 26-04-2024 09:28 ]
Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)
Hoop er dit weekend wat meer containers achter te zetten en probeer me dan meer te verdiepen in de middleware mogelijkheden.
Waar ik destijds veel inspiratie uit heb gehaald: https://www.smarthomebegi...ocker-compose-guide-2024/
GB Aorus Elite | AMD 3700X | 32GB 3733C16 | GTX 1070 Ti
Zijn er hier mensen die op dit moment succesvol TransIP gebruiken voor de DNS challange?
[ Voor 90% gewijzigd door JBS op 15-02-2025 15:51 ]
Ik heb deze gebruikt prive (intussen staat DNS bij DeSEC) en gebruik deze nog steeds op mijn werk laptop. 0 problemen mee gehad in al die jaren (denk zeker 5). Als een cert al verliep kwam dat door IP whitelist op de API en een nieuw IP adres, maar niet door onbetrouwbare DNS (API).JBS schreef op zaterdag 15 februari 2025 @ 15:19:
Tijdens het opzetten van Traefik 3 als vervanger van 2, wil ik direct de DNS challenge via TransIP laten verlopen. Ik lees hier zo her en der echter problemen met TransIP voor deze DNS challange.
Zijn er hier mensen die op dit moment succesvol TransIP gebruiken voor de DNS challange?
In mijn NUC heb ik even een nieuwe SSD gestopt en daarop een verse installatie van Ubuntu Server gedaan. Op basis van https://www.simplehomelab...ocker-compose-guide-2024/ heb ik vervolgens Traefik 3 (3.3.3.) geïnstalleerd, inclusief DNS challenge deze keer via TransIP.RobertMe schreef op zaterdag 15 februari 2025 @ 16:01:
[...]
Ik heb deze gebruikt prive (intussen staat DNS bij DeSEC) en gebruik deze nog steeds op mijn werk laptop. 0 problemen mee gehad in al die jaren (denk zeker 5). Als een cert al verliep kwam dat door IP whitelist op de API en een nieuw IP adres, maar niet door onbetrouwbare DNS (API).
Het Traefik dashboard is lokaal bereikbaar (zonder SSL), maar nog niet via traefik.domeinnaam.nl.
In de Traefik log zie ik dat het verkrijgen van certificaten nog niet lukt waardoor ie terugvalt op het certificaat voor hass.domeinnaam.nl, een certificaat dat Traefik 2 draaiende op de verwijderde SSD verkregen heeft.
Dit subdomein is op geen enkele manier bekend in deze verse installatie, maar toch weet Traefik 3 draaiende op de nieuwe SSD er kennelijk van.
Hoe kan dit? En, waarom gebeurt dit?
Ja, werkt gewoon zonder problemen hier.JBS schreef op zaterdag 15 februari 2025 @ 15:19:
Tijdens het opzetten van Traefik 3 als vervanger van 2, wil ik direct de DNS challenge via TransIP laten verlopen. Ik lees hier zo her en der echter problemen met TransIP voor deze DNS challange.
Zijn er hier mensen die op dit moment succesvol TransIP gebruiken voor de DNS challange?
Dit is het relevante stukje in mijn traefik.yaml:
1
2
3
4
5
6
7
8
9
10
11
| certificatesResolvers: le: acme: email: ****@**** storage: /acme.json dnsChallenge: provider: "transip" resolvers: - ns0.transip.net - ns1.transip.nl - ns2.transip.eu |
en in mijn docker-compose.yaml:
1
2
3
| environment: - TRANSIP_ACCOUNT_NAME=****** - TRANSIP_PRIVATE_KEY_PATH=/transip.key |
Sometimes you need to plan for coincidence
Goed te lezen dat 't gewoon zou moeten werken.Hmmbob schreef op zaterdag 15 februari 2025 @ 18:36:
[...]
Ja, werkt gewoon zonder problemen hier.
Dit is het relevante stukje in mijn traefik.yaml:
YAML:
1 2 3 4 5 6 7 8 9 10 11 certificatesResolvers: le: acme: email: ****@**** storage: /acme.json dnsChallenge: provider: "transip" resolvers: - ns0.transip.net - ns1.transip.nl - ns2.transip.eu
en in mijn docker-compose.yaml:
YAML:
1 2 3 environment: - TRANSIP_ACCOUNT_NAME=****** - TRANSIP_PRIVATE_KEY_PATH=/transip.key
Op basis van welke docs heb jij je Traefik 3 omgeving opgezet? Wat je post, wijkt namelijk behoorlijk af van mijn traefik.yaml structuur.
Wat wijkt er dan behoorijk af? ik deel echt een ienie-mini stukje net - als dat al zoveel afwijkt
[ Voor 14% gewijzigd door Hmmbob op 15-02-2025 18:41 ]
Sometimes you need to plan for coincidence
[ Voor 11% gewijzigd door JBS op 15-02-2025 22:18 ]
Ik vind het eigenlijk best wel gek dat je schijnbaar issues hebt met de Traefik 3 upgrade. Ik draai, eigenlijk van alle Docker images/containers, gewoon latest. En de Traefik 3 update kwam ik pas achter dat ik die gedaan had toen bleek dat wat heel specifieke routing rules niet werkte. En enige wat ik dus heb gedaan is voor die specifieke container de rule aangepast. Waarbij op zijn minst op VPS ik meen de TLS challenge en thuis de DNS challenge (met DeSEC) gewoon prima bleef werken dus.JBS schreef op zaterdag 15 februari 2025 @ 22:14:
Nu Traefik 3.x me weer teveel tijd gaat kosten, is dit een mooi moment voor de overstap naar een Cloudflare Tunnel.
Aangezien zowel m'n Ubuntu Server als Docker omgeving behoorlijk verouderd is (en ik daarbij destijds best wel gerommeld heb met diverse spullen buiten docker containers om die nu niet meer in gebruik zijn),vond ik wat wat tricky om dat allemaal te upgraden en op te ruimen en heb ik ervoor gekozen een schone installatie op een andere SSD te doen.RobertMe schreef op zaterdag 15 februari 2025 @ 22:30:
[...]
Ik vind het eigenlijk best wel gek dat je schijnbaar issues hebt met de Traefik 3 upgrade. Ik draai, eigenlijk van alle Docker images/containers, gewoon latest. En de Traefik 3 update kwam ik pas achter dat ik die gedaan had toen bleek dat wat heel specifieke routing rules niet werkte. En enige wat ik dus heb gedaan is voor die specifieke container de rule aangepast. Waarbij op zijn minst op VPS ik meen de TLS challenge en thuis de DNS challenge (met DeSEC) gewoon prima bleef werken dus.
Traefik 3 was daarom geen upgrade voor mij, maar ook een schone installatie.
[ Voor 8% gewijzigd door JBS op 15-02-2025 22:34 ]
Nouja, ook dan, werkt waarschijnlijk een 2.x config (die je dus al had) best wel heel erg prima op 3.x. En die 2.x config had je ook voor elkaar gekregen.JBS schreef op zaterdag 15 februari 2025 @ 22:32:
[...]
Aangezien zowel m'n Ubuntu Server als Docker omgeving behoorlijk verouderd is (en ik daarbij destijds best wel gerommeld heb met diverse spullen buiten docker containers om die nu niet meer in gebruik zijn),vond ik wat wat tricky om dat allemaal te upgraden en op te ruimen en heb ik ervoor gekozen een schone installatie op een andere SSD te doen.
Traefik 3 was daarom geen upgrade voor mij, maar ook een schone installatie.
Heb ervoor gekozen om opnieuw te beginnen, en deze gevolgd https://www.simplehomelab...ocker-compose-guide-2024/RobertMe schreef op zaterdag 15 februari 2025 @ 22:35:
[...]
Nouja, ook dan, werkt waarschijnlijk een 2.x config (die je dus al had) best wel heel erg prima op 3.x. En die 2.x config had je ook voor elkaar gekregen.
Helaas niet met een werkend geheel, wat ongetwijfeld aan mezelf ligt. Het is gewoon allemaal net wat te complex voor iemand die niet erg in deze netwerk wereld thuis is. Althans, dat vind ik, zeker nu ik een Cloudflare Tunnel gezien heb
Sometimes you need to plan for coincidence
Heb het prima werkend gekregen met alle docker service met traefik labels .
Maar mijn eigen service die niet in docker draaien of geen labels hebben die krijg ik maar half werkend.
De pagina's laden soms maar half (zonder plaatjes) of werken maar half.
Iemand de tip om mij om weg te helpen?
Dit is mijn config.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| http: middlewares: default-security-headers: headers: browserXssFilter: true # X-XSS-Protection=1; mode=block contentTypeNosniff: true # X-Content-Type-Options=nosniff forceSTSHeader: true # Add the Strict-Transport-Security header even when the connection is HTTP frameDeny: false # X-Frame-Options=deny referrerPolicy: "strict-origin-when-cross-origin" stsIncludeSubdomains: true # Add includeSubdomains to the Strict-Transport-Security header stsPreload: true # Add preload flag appended to the Strict-Transport-Security header stsSeconds: 3153600 # Set the max-age of the Strict-Transport-Security header (63072000 = 2 years) contentSecurityPolicy: "default-src 'self'" customRequestHeaders: X-Forwarded-Proto: https https-redirectscheme: redirectScheme: scheme: https permanent: true routers: web: entryPoints: - "https" rule: "Host(`homarr.domein.nl`)" middlewares: - default-security-headers - https-redirectscheme tls: {} service: web dsmr: entryPoints: - "https" rule: "Host(`dsmr.domein.nl`)" middlewares: - default-security-headers - https-redirectscheme tls: {} service: dsmr services: web: loadBalancer: servers: - url: "http://ip:8180" passHostHeader: true dsmr: loadBalancer: servers: - url: "http://ip:8123" passHostHeader: true |
Gewoon een # teken op regels 27 en 36 van je voorbeeld zou voldoende moeten zijn
[ Voor 27% gewijzigd door Hmmbob op 16-02-2025 18:13 ]
Sometimes you need to plan for coincidence
All my posts are provided as-is. They come with NO WARRANTY at all.
Dat helpt nu laden de pagina's goed, snap alleen niet dat het via de docker labels dan wel goed gaat.Hmmbob schreef op zondag 16 februari 2025 @ 18:11:
Probeer het eens zonder je default-seceurity-headers - bij "halve pagina's" gok ik op een van die regels die iets in de war gooit.
Gewoon een # teken op regels 27 en 36 van je voorbeeld zou voldoende moeten zijn
Daar worden geen middleware regels toegepast zag ik wel dus dat zal het wel zijn.
Klinkt valide.ComTech schreef op zondag 16 februari 2025 @ 19:05:
[...]
Dat helpt nu laden de pagina's goed, snap alleen niet dat het via de docker labels dan wel goed gaat.
Daar worden geen middleware regels toegepast zag ik wel dus dat zal het wel zijn.
Sometimes you need to plan for coincidence
Of het direct met traefik te maken heeft weet ik niet zeker.
Ik heb beide domein namen via cloudflare dns lopen.
Op beide heb ik Proxied aanstaan.
Op domein1 werkt alles prima op domein2 krijg ik een foutmelding to many redirects.
Als ik de proxied uitzet dan werkt het wel goed terwijl op domein1 de proxy wel aanstaat en daar werkt het wel goed met dezelfde service.
Iemand een idee ?
De service van domein2 heeft eerst in een cloudflare tunnel gedraaid dat heb ik allemaal opgeruimd ook in de DNS records.
In mijn docker compose maak ik gebruik van CLI arguments om de container te starten (deze tutorial)
Dat het met CLI moet zint me eigenlijk niet. Aan de ene kant om dat al het andere in YAML is maar des te meer omdat bij het starten of stoppen van docker de volgende error in de logs komt:
1
2
3
4
5
6
| 2025-04-09T14:58:40+02:00 ERR error="accept tcp [::]:80: use of closed network connection" entryPointName=http 2025-04-09T14:58:40+02:00 ERR error="close tcp [::]:80: use of closed network connection" entryPointName=http 2025-04-09T14:58:40+02:00 ERR error="accept tcp [::]:8080: use of closed network connection" entryPointName=traefik 2025-04-09T14:58:40+02:00 ERR error="close tcp [::]:8080: use of closed network connection" entryPointName=traefik 2025-04-09T14:58:40+02:00 ERR error="accept tcp [::]:443: use of closed network connection" entryPointName=https 2025-04-09T14:58:40+02:00 ERR error="close tcp [::]:443: use of closed network connection" entryPointName=https |
Deze bron zegt dat dat door CLI komt.
Heeft er iemand een suggestie waarmee ik mijn config kan omzetten naar YAML, met behoud van de werking? De reden waarom het in de eerstgenoemde tutorial niet gedaan werd, was omdat er variabelen hard gecodeerd moeten worden. Nu staan ze netjes in een separate .env.
Voor zover ik het begrijp kan je dus met YAML geen aparte .env variabelen gebruiken.
Maar het kan zijn dat ik er geen biet van snap.
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
71
72
73
74
| # Traefik 3 - Reverse Proxy traefik3: <<: *common-keys-core # See EXTENSION FIELDS at the top container_name: traefik3 image: traefik:v3.3 command: # CLI arguments - --global.checkNewVersion=false - --global.sendAnonymousUsage=true - --entryPoints.http.address=:80 - --entryPoints.https.address=:443 # Allow these IPs to set the X-Forwarded-* headers - Cloudflare IPs: https://www.cloudflare.com/ips/ - --entrypoints.https.forwardedHeaders.trustedIPs=$CLOUDFLARE_IPS,$LOCAL_IPS - --entryPoints.traefik.address=:8080 - --api=true - --api.dashboard=true - --log=true - --log.filePath=/logs/traefik3.log - --log.level=ERROR # (Default: error) DEBUG, INFO, WARN, ERROR, FATAL, PANIC - --accessLog=true - --accessLog.filePath=/logs/access3.log - --accessLog.bufferingSize=100 # Configuring a buffer of 100 lines - --providers.docker=true - --providers.docker.endpoint=unix:///var/run/docker.sock # Use Docker Socket Proxy instead for improved security - --providers.docker.exposedByDefault=false - --entrypoints.https.http.tls.options=tls-opts@file - --entrypoints.https.http.tls.certresolver=dns-cloudflare - --entrypoints.https.http.tls.domains[0].main=$DOMAINNAME1 - --entrypoints.https.http.tls.domains[0].sans=*.$DOMAINNAME1 - --providers.docker.network=t2_proxy - --providers.file.directory=/rules # Load dynamic configuration from one or more .toml or .yml files in a directory - --providers.file.watch=true # Only works on top level files in the rules folder - --certificatesResolvers.dns-cloudflare.acme.email=$CLOUDFLARE_EMAIL - --certificatesResolvers.dns-cloudflare.acme.storage=/acme.json - --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.provider=cloudflare - --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.resolvers=1.1.1.1:53,1.0.0.1:53 - --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.delayBeforeCheck=90 # To delay DNS check and reduce LE hitrate ports: - target: 80 published: 80 protocol: tcp mode: host - target: 443 published: 443 protocol: tcp mode: host volumes: - $DOCKERDIR/appdata/traefik3/rules:/rules # file provider directory - /var/run/docker.sock:/var/run/docker.sock:ro # If you use Docker Socket Proxy, comment this line out - $DOCKERDIR/appdata/traefik3/acme/acme.json:/acme.json - $DOCKERDIR/logs/traefik3:/logs # for fail2ban or crowdsec - $DOCKERDIR/shared:/shared environment: - TZ=$TZ - CF_API_EMAIL=$CLOUDFLARE_EMAIL - CF_API_KEY=$CLOUDFLARE_API_KEY - DOMAINNAME1 # Passing the domain name to the traefik container to be able to use the variable in rules. labels: - "traefik.enable=true" # HTTP-to-HTTPS Redirect - "traefik.http.routers.http-catchall.entrypoints=http" - "traefik.http.routers.http-catchall.rule=HostRegexp(`{host:.+}`)" - "traefik.http.routers.http-catchall.middlewares=redirect-to-https" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" # HTTP Routers - "traefik.http.routers.traefik3-rtr.entrypoints=https" - "traefik.http.routers.traefik3-rtr.rule=Host(`traefik.$DOMAINNAME1`)" - "traefik.http.routers.traefik3-rtr.tls=true" # Some people had 404s without this # "traefik.http.routers.traefik3-rtr.tls.certresolver=dns-cloudflare" # Comment out this line after first run of traefik to force the use of wildcard certs - "traefik.http.routers.traefik3-rtr.tls.domains[0].main=$DOMAINNAME1" - "traefik.http.routers.traefik3-rtr.tls.domains[0].sans=*.$DOMAINNAME1" ## Services - API - "traefik.http.routers.traefik3-rtr.service=api@internal" ## Middlewares - "traefik.http.routers.traefik3-rtr.middlewares=chain-authelia@file" |
B.v. de eerste 2 items:
1
2
| - --global.checkNewVersion=false - --global.sendAnonymousUsage=true |
Wordt dan:
1
2
3
| global: checkNewVersion: false sendAnonymousUsage: true |
dus iedereen punt in de parameter naam is een niveau dieper in de yaml
Dat klopt toch? Dan ga ik het binnenkort eens omzetten naar YAML
Ik gebruik Traefik met een YAML config en krijg dezelfde "error" bij het stoppen van de container. Daarnaast staat dit ook vermeld in de thread waar je zelf naar linkt. Ik zou dus vooral niet gaan omschrijven naar YAML om deze "error" te fixen, want je hebt geen enkele indicatie, laat staan garantie, dat het dan is opgelost.badkuip schreef op woensdag 9 april 2025 @ 19:51:
De afgelopen dagen heb ik besteed aan de upgrade van Traefik v2 naar Traefik v3.
In mijn docker compose maak ik gebruik van CLI arguments om de container te starten (deze tutorial)
Dat het met CLI moet zint me eigenlijk niet. Aan de ene kant om dat al het andere in YAML is maar des te meer omdat bij het starten of stoppen van docker de volgende error in de logs komt:
code:
1 2 3 4 5 6 2025-04-09T14:58:40+02:00 ERR error="accept tcp [::]:80: use of closed network connection" entryPointName=http 2025-04-09T14:58:40+02:00 ERR error="close tcp [::]:80: use of closed network connection" entryPointName=http 2025-04-09T14:58:40+02:00 ERR error="accept tcp [::]:8080: use of closed network connection" entryPointName=traefik 2025-04-09T14:58:40+02:00 ERR error="close tcp [::]:8080: use of closed network connection" entryPointName=traefik 2025-04-09T14:58:40+02:00 ERR error="accept tcp [::]:443: use of closed network connection" entryPointName=https 2025-04-09T14:58:40+02:00 ERR error="close tcp [::]:443: use of closed network connection" entryPointName=https
Deze bron zegt dat dat door CLI komt.
Heeft er iemand een suggestie waarmee ik mijn config kan omzetten naar YAML, met behoud van de werking? De reden waarom het in de eerstgenoemde tutorial niet gedaan werd, was omdat er variabelen hard gecodeerd moeten worden. Nu staan ze netjes in een separate .env.
Voor zover ik het begrijp kan je dus met YAML geen aparte .env variabelen gebruiken.
Maar het kan zijn dat ik er geen biet van snap.
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 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 71 72 73 74 # Traefik 3 - Reverse Proxy traefik3: <<: *common-keys-core # See EXTENSION FIELDS at the top container_name: traefik3 image: traefik:v3.3 command: # CLI arguments - --global.checkNewVersion=false - --global.sendAnonymousUsage=true - --entryPoints.http.address=:80 - --entryPoints.https.address=:443 # Allow these IPs to set the X-Forwarded-* headers - Cloudflare IPs: https://www.cloudflare.com/ips/ - --entrypoints.https.forwardedHeaders.trustedIPs=$CLOUDFLARE_IPS,$LOCAL_IPS - --entryPoints.traefik.address=:8080 - --api=true - --api.dashboard=true - --log=true - --log.filePath=/logs/traefik3.log - --log.level=ERROR # (Default: error) DEBUG, INFO, WARN, ERROR, FATAL, PANIC - --accessLog=true - --accessLog.filePath=/logs/access3.log - --accessLog.bufferingSize=100 # Configuring a buffer of 100 lines - --providers.docker=true - --providers.docker.endpoint=unix:///var/run/docker.sock # Use Docker Socket Proxy instead for improved security - --providers.docker.exposedByDefault=false - --entrypoints.https.http.tls.options=tls-opts@file - --entrypoints.https.http.tls.certresolver=dns-cloudflare - --entrypoints.https.http.tls.domains[0].main=$DOMAINNAME1 - --entrypoints.https.http.tls.domains[0].sans=*.$DOMAINNAME1 - --providers.docker.network=t2_proxy - --providers.file.directory=/rules # Load dynamic configuration from one or more .toml or .yml files in a directory - --providers.file.watch=true # Only works on top level files in the rules folder - --certificatesResolvers.dns-cloudflare.acme.email=$CLOUDFLARE_EMAIL - --certificatesResolvers.dns-cloudflare.acme.storage=/acme.json - --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.provider=cloudflare - --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.resolvers=1.1.1.1:53,1.0.0.1:53 - --certificatesResolvers.dns-cloudflare.acme.dnsChallenge.delayBeforeCheck=90 # To delay DNS check and reduce LE hitrate ports: - target: 80 published: 80 protocol: tcp mode: host - target: 443 published: 443 protocol: tcp mode: host volumes: - $DOCKERDIR/appdata/traefik3/rules:/rules # file provider directory - /var/run/docker.sock:/var/run/docker.sock:ro # If you use Docker Socket Proxy, comment this line out - $DOCKERDIR/appdata/traefik3/acme/acme.json:/acme.json - $DOCKERDIR/logs/traefik3:/logs # for fail2ban or crowdsec - $DOCKERDIR/shared:/shared environment: - TZ=$TZ - CF_API_EMAIL=$CLOUDFLARE_EMAIL - CF_API_KEY=$CLOUDFLARE_API_KEY - DOMAINNAME1 # Passing the domain name to the traefik container to be able to use the variable in rules. labels: - "traefik.enable=true" # HTTP-to-HTTPS Redirect - "traefik.http.routers.http-catchall.entrypoints=http" - "traefik.http.routers.http-catchall.rule=HostRegexp(`{host:.+}`)" - "traefik.http.routers.http-catchall.middlewares=redirect-to-https" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" # HTTP Routers - "traefik.http.routers.traefik3-rtr.entrypoints=https" - "traefik.http.routers.traefik3-rtr.rule=Host(`traefik.$DOMAINNAME1`)" - "traefik.http.routers.traefik3-rtr.tls=true" # Some people had 404s without this # "traefik.http.routers.traefik3-rtr.tls.certresolver=dns-cloudflare" # Comment out this line after first run of traefik to force the use of wildcard certs - "traefik.http.routers.traefik3-rtr.tls.domains[0].main=$DOMAINNAME1" - "traefik.http.routers.traefik3-rtr.tls.domains[0].sans=*.$DOMAINNAME1" ## Services - API - "traefik.http.routers.traefik3-rtr.service=api@internal" ## Middlewares - "traefik.http.routers.traefik3-rtr.middlewares=chain-authelia@file"
Ow, dan heb ik je vraag verkeerd begrepen. In de yaml kun je volgens mij idd geen variablen kwijt. Je kunt wel variable gebruiken ipv yaml regels: https://doc.traefik.io/tr...static-configuration/env/badkuip schreef op woensdag 9 april 2025 @ 20:36:
@jvwou123 Ok, dat snap ik. Als ik het ook goed begrijp gaat dat ook werken voor variabelen die vastgelegd zijn in een ander .env bestand. Dus dan kan ik op de door jou aangegeven wijze nog steeds gebruik blijven maken van $DOMAINNAME1 of bijvoorbeeld $CLOUDFLARE_EMAIL.
Dat klopt toch? Dan ga ik het binnenkort eens omzetten naar YAML
Sorry voor de late reactie. Ik laat het dan maar zo. De inspanning om het om te bouwen weegt niet af tegen de moeite die ik erin moet steken.jvwou123 schreef op woensdag 9 april 2025 @ 21:17:
[...]
Ow, dan heb ik je vraag verkeerd begrepen. In de yaml kun je volgens mij idd geen variablen kwijt. Je kunt wel variable gebruiken ipv yaml regels: https://doc.traefik.io/tr...static-configuration/env/
Een andere vraag over treafik, en dan de logs. De logs zijn er wel maar er wordt geen output gestuurd naar docker logs.
Inhoud /home/user/docker/logs/traefik/treafik.log
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
| 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:08:54+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:08:54+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:09:01+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:03+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:45 > Request has been aborted [141.101.76.104:48402 - /api/hosts/c4a28df9-9cf5-41e5-a663-ca7b10fc1e38/containers/421e0f707a0d/logs/stream?stdout=1&stderr=1&levels=info&levels=debug&levels=warn&levels=error&levels=fatal&levels=trace&levels=unknown]: net/http: abort Handler middlewareName=traefik-internal-recovery middlewareType=Recovery 2025-04-17T10:09:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:32+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:41+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:42+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:09:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:10:01+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:10:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:11:01+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:11:04+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:11:04+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:11:14+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:45 > Request has been aborted [141.101.76.104:48396 - /api/hosts/c4a28df9-9cf5-41e5-a663-ca7b10fc1e38/containers/8457a480dbf4/logs/stream?stdout=1&stderr=1&levels=info&levels=debug&levels=warn&levels=error&levels=fatal&levels=trace&levels=unknown]: net/http: abort Handler middlewareName=traefik-internal-recovery middlewareType=Recovery 2025-04-17T10:11:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:11:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:11:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 |
Docker logs (middels Dozzle, maart ook portainer is leeg).
:strip_exif()/f/image/Hdo0fKTnK9AchDOCIvDVIJ3k.jpg?f=fotoalbum_large)
Het zou me fijn lijken om de logoutput in docker logs te laten lopen. Maakt het raadplegen van de logs makkelijker (dus niet meer een 'cat' of 'tail' te hoeven op de prompt of te hoeven raadplegen in vs code.
Al mijn andere containers loggen nu al netjes naar docker logs zonder enige extra config van mijn hand.
Als ik het goed begrijp moet ik voor de traefik container een log driver configureren en dan zou het werken.
Hoe langer ik erover nadenk, hoe meer ik mezelf afvraag of het eigenlijk wel verstandig is.
Misschien hebben de makers van traefik een hele goede reden om niet default de logs te outputten naar docker logs.
Iemand een idee, mening, of ervaring hierover/hiermee?
Hier komt het gewoon in de console binnen, met de laatste versie van Traefik en de volgende config. Ik gebruik wel podman ipv docker maar dat zou niet veel uit moeten maken.badkuip schreef op donderdag 17 april 2025 @ 10:26:
[...]
Sorry voor de late reactie. Ik laat het dan maar zo. De inspanning om het om te bouwen weegt niet af tegen de moeite die ik erin moet steken.
Een andere vraag over treafik, en dan de logs. De logs zijn er wel maar er wordt geen output gestuurd naar docker logs.
Inhoud /home/user/docker/logs/traefik/treafik.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 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:08:53+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:08:54+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:08:54+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:09:01+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:03+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:45 > Request has been aborted [141.101.76.104:48402 - /api/hosts/c4a28df9-9cf5-41e5-a663-ca7b10fc1e38/containers/421e0f707a0d/logs/stream?stdout=1&stderr=1&levels=info&levels=debug&levels=warn&levels=error&levels=fatal&levels=trace&levels=unknown]: net/http: abort Handler middlewareName=traefik-internal-recovery middlewareType=Recovery 2025-04-17T10:09:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:32+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:41+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:42+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:09:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:09:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:10:01+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:10:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:10:50+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:11:01+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:11:04+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/compress/compress.go:143 > Unable to parse MIME type error="mime: no media type" middlewareName=middlewares-compress@file middlewareType=Compress 2025-04-17T10:11:04+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.5:8080 2025-04-17T10:11:14+02:00 DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:45 > Request has been aborted [141.101.76.104:48396 - /api/hosts/c4a28df9-9cf5-41e5-a663-ca7b10fc1e38/containers/8457a480dbf4/logs/stream?stdout=1&stderr=1&levels=info&levels=debug&levels=warn&levels=error&levels=fatal&levels=trace&levels=unknown]: net/http: abort Handler middlewareName=traefik-internal-recovery middlewareType=Recovery 2025-04-17T10:11:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:11:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80 2025-04-17T10:11:31+02:00 DBG github.com/traefik/traefik/v3/pkg/server/service/loadbalancer/wrr/wrr.go:213 > Service selected by WRR: http://192.168.34.6:80
Docker logs (middels Dozzle, maart ook portainer is leeg).
[Afbeelding]
Het zou me fijn lijken om de logoutput in docker logs te laten lopen. Maakt het raadplegen van de logs makkelijker (dus niet meer een 'cat' of 'tail' te hoeven op de prompt of te hoeven raadplegen in vs code.
Al mijn andere containers loggen nu al netjes naar docker logs zonder enige extra config van mijn hand.
Als ik het goed begrijp moet ik voor de traefik container een log driver configureren en dan zou het werken.
Hoe langer ik erover nadenk, hoe meer ik mezelf afvraag of het eigenlijk wel verstandig is.
Misschien hebben de makers van traefik een hele goede reden om niet default de logs te outputten naar docker logs.
Iemand een idee, mening, of ervaring hierover/hiermee?
1
| --log.level=DEBUG |
Ik heb in Crowdsec de AppSec configuratie aangemaakt in de acquis.d map:
appsec.yaml
1
2
3
4
5
6
| listen_addr: 0.0.0.0:7422 appsec_config: crowdsecurity/appsec-default name: localAppSec source: appsec labels: type: appsec |
En daarna in de Traefik CrowdSec plugin AppSec aangezet:
crowdsec.yaml
1
2
3
4
5
6
7
8
9
| http: middlewares: crowdsec: plugin: bouncer: enabled: true crowdsecAppsecEnabled: true crowdsecAppsecHost: crowdsec:7422 crowdsecAppsecPath: "/" |
Dat was het. Ik gebruik in Crowdsec o.a. de volgende collections:
- crowdsecurity/appsec-generic-rules
- crowdsecurity/appsec-virtual-patching
- crowdsecurity/appsec-crs
- crowdsecurity/appsec-crs-inband
- crowdsecurity/base-http-scenarios
- crowdsecurity/home-assistant
- crowdsecurity/http-cve
- crowdsecurity/http-dos
- crowdsecurity/http-extended-context
- crowdsecurity/plex
- crowdsecurity/traefik
- crowdsecurity/whitelist-good-actors
alex@LeeTower:~# docker exec traefik-crowdsec cscli metrics +-------------------------------------------------------------------------------------------------------------------------------------------+ | Acquisition Metrics | +-------------------------------------------------+------------+--------------+----------------+------------------------+-------------------+ | Source | Lines read | Lines parsed | Lines unparsed | Lines poured to bucket | Lines whitelisted | +-------------------------------------------------+------------+--------------+----------------+------------------------+-------------------+ | appsec:appsec | 92 | 92 | - | 89 | - | | file:/var/log/home-assistant/home-assistant.log | 498 | - | 498 | - | - | | file:/var/log/traefik/access.log | 80.56k | 80.56k | - | 2.43k | 81.88k | +-------------------------------------------------+------------+--------------+----------------+------------------------+-------------------+ +-------------------------------------+ | Appsec Metrics | +---------------+-----------+---------+ | Appsec Engine | Processed | Blocked | +---------------+-----------+---------+ | localAppSec | 3.90k | 40 | +---------------+-----------+---------+ ... +----------------------------------------------------------------------------------------------------------+ | Scenario Metrics | +--------------------------------------------+---------------+-----------+--------------+--------+---------+ | Scenario | Current Count | Overflows | Instantiated | Poured | Expired | +--------------------------------------------+---------------+-----------+--------------+--------+---------+ | crowdsecurity/appsec-native | - | - | 1 | 1 | 1 | | crowdsecurity/appsec-vpatch | - | 1 | 35 | 36 | 34 | | crowdsecurity/crowdsec-appsec-outofband | - | 2 | 22 | 52 | 20 | | crowdsecurity/http-admin-interface-probing | - | 2 | 7 | 14 | 5 | | crowdsecurity/http-backdoors-attempts | - | - | 1 | 1 | 1 | | crowdsecurity/http-bad-user-agent | - | 2 | 5 | 7 | 3 | | crowdsecurity/http-crawl-non_statics | - | - | 876 | 1.03k | 876 | | crowdsecurity/http-dos-swithcing-ua | - | - | 852 | 883 | 852 | | crowdsecurity/http-probing | - | 10 | 206 | 356 | 196 | | crowdsecurity/http-sensitive-files | - | 2 | 102 | 114 | 100 | | crowdsecurity/http-wordpress-scan | - | 3 | 7 | 16 | 4 | | crowdsecurity/jira_cve-2021-26086 | - | 3 | 3 | - | - | +--------------------------------------------+---------------+-----------+--------------+--------+---------+
Ok. Die is identiekalex3305 schreef op zaterdag 11 oktober 2025 @ 15:16:
@Mars Warrior Even voortgezet uit het Docker topic...
Ik heb in Crowdsec de AppSec configuratie aangemaakt in de acquis.d map:
appsec.yaml
YAML:
1 2 3 4 5 6 listen_addr: 0.0.0.0:7422 appsec_config: crowdsecurity/appsec-default name: localAppSec source: appsec labels: type: appsec
Hmmm. Ik neem aan dat je de rest hebt weggelaten, zoals de LapiURl en LapiKey. Zonder start het bij mij niet op.En daarna in de Traefik CrowdSec plugin AppSec aangezet:
crowdsec.yaml
YAML:
1 2 3 4 5 6 7 8 9 http: middlewares: crowdsec: plugin: bouncer: enabled: true crowdsecAppsecEnabled: true crowdsecAppsecHost: crowdsec:7422 crowdsecAppsecPath: "/"
Hmm. Ja, het zou allemaal in één keer moeten werken, maar bij mij dus nog niet.Dat was het. Ik gebruik in Crowdsec o.a. de volgende collections:En volgens cscli metrics werkt dit ook:
- crowdsecurity/appsec-generic-rules
- crowdsecurity/appsec-virtual-patching
- crowdsecurity/appsec-crs
- crowdsecurity/appsec-crs-inband
- crowdsecurity/base-http-scenarios
- crowdsecurity/home-assistant
- crowdsecurity/http-cve
- crowdsecurity/http-dos
- crowdsecurity/http-extended-context
- crowdsecurity/plex
- crowdsecurity/traefik
- crowdsecurity/whitelist-good-actors
alex@LeeTower:~# docker exec traefik-crowdsec cscli metrics +-------------------------------------------------------------------------------------------------------------------------------------------+ | Acquisition Metrics | +-------------------------------------------------+------------+--------------+----------------+------------------------+-------------------+ | Source | Lines read | Lines parsed | Lines unparsed | Lines poured to bucket | Lines whitelisted | +-------------------------------------------------+------------+--------------+----------------+------------------------+-------------------+ | appsec:appsec | 92 | 92 | - | 89 | - | | file:/var/log/home-assistant/home-assistant.log | 498 | - | 498 | - | - | | file:/var/log/traefik/access.log | 80.56k | 80.56k | - | 2.43k | 81.88k | +-------------------------------------------------+------------+--------------+----------------+------------------------+-------------------+ +-------------------------------------+ | Appsec Metrics | +---------------+-----------+---------+ | Appsec Engine | Processed | Blocked | +---------------+-----------+---------+ | localAppSec | 3.90k | 40 | +---------------+-----------+---------+ ... +----------------------------------------------------------------------------------------------------------+ | Scenario Metrics | +--------------------------------------------+---------------+-----------+--------------+--------+---------+ | Scenario | Current Count | Overflows | Instantiated | Poured | Expired | +--------------------------------------------+---------------+-----------+--------------+--------+---------+ | crowdsecurity/appsec-native | - | - | 1 | 1 | 1 | | crowdsecurity/appsec-vpatch | - | 1 | 35 | 36 | 34 | | crowdsecurity/crowdsec-appsec-outofband | - | 2 | 22 | 52 | 20 | | crowdsecurity/http-admin-interface-probing | - | 2 | 7 | 14 | 5 | | crowdsecurity/http-backdoors-attempts | - | - | 1 | 1 | 1 | | crowdsecurity/http-bad-user-agent | - | 2 | 5 | 7 | 3 | | crowdsecurity/http-crawl-non_statics | - | - | 876 | 1.03k | 876 | | crowdsecurity/http-dos-swithcing-ua | - | - | 852 | 883 | 852 | | crowdsecurity/http-probing | - | 10 | 206 | 356 | 196 | | crowdsecurity/http-sensitive-files | - | 2 | 102 | 114 | 100 | | crowdsecurity/http-wordpress-scan | - | 3 | 7 | 16 | 4 | | crowdsecurity/jira_cve-2021-26086 | - | 3 | 3 | - | - | +--------------------------------------------+---------------+-----------+--------------+--------+---------+
Op het moment dat ik enabled: true zet, dan gaan alle interne sites op 403, toegang geweigerd.
Maar ik krijg inmiddels al een hint waar het fout gaat. Ondanks dat ik overal infra-crowdsec heb staan, blijft "iets" crowdsec zoeken, die bestaat natuurlijk niet, en blijkbaar gaat het dan fout.
1
2
3
4
5
6
| DEBUG: CrowdsecBouncerTraefikPlugin: 2025/10/11 16:47:44 handleRemediationServeHTTP ip:168.119.123.75 remediation:t DEBUG: CrowdsecBouncerTraefikPlugin: 2025/10/11 16:48:03 ServeHTTP ip:18.193.252.127 isTrusted:false DEBUG: CrowdsecBouncerTraefikPlugin: 2025/10/11 16:48:03 cache:Get key:18.193.252.127 DEBUG: CrowdsecBouncerTraefikPlugin: 2025/10/11 16:48:03 ServeHTTP:Get ip:18.193.252.127 isBanned:false cache:miss DEBUG: CrowdsecBouncerTraefikPlugin: 2025/10/11 16:48:03 ServeHTTP:handleNoStreamCache ip:18.193.252.127 isBanned:t crowdsecQuery:unreachable url:http://crowdsec:8080/v1/decisions?ip=18.193.252.127 Get "http://crowdsec:8080/v1/decisions?ip=18.193.252.127": dial tcp: lookup crowdsec on 127.0.0.11:53: no such host DEBUG: CrowdsecBouncerTraefikPlugin: 2025/10/11 16:48:03 handleRemediationServeHTTP ip:18.193.252.127 remediation:t |
Ik zoek dus ff verder waar dat nu door komt!
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs
Ik had in de plugin def van de bouncer dit staan. Geen idee waar ik dat vandaan heb gehaald
1
| crowdsecLapiUrl: "http://infra-crowdsec:8080/" |
Dat moet dit zijn. Ik kreeg verder geen foutmeldingen dat ik ongeldige velden heb gebruikt.
1
| crowdsecLapiHost: infra-crowdsec:8080 |
Maar nu werkt alles dus
Het resultaat is dat het gemiddelde CPU verbruik met 0,3% is gedaald (op een schaal van 0..100%). Een aantal backed applicaties zie ik nu ook minder verbruiken. Niet veel, maar het telt weer leuk aan.
Wat ik wilde is dus gelukt: minder belasting van de backends, naast veiliger natuurlijk.
Dit is wel allemaal nog via de bouncer. Vraag me af of dat nog beter wordt met de firewall die iptables/nftables doet voor de bekende ip adressen.
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs
:strip_exif()/f/image/5nXDK659W0XSjGZgpacrxwnn.png?f=user_large)
Je wordt hierdoor ook "gestraft" doordat je in dit soort gevallen de "Lite" blocklist krijgt (max 3k IP's), en niet de volledige omdat je nu niks meer bijdraagt door het gebrek aan alerts. Dus ze schroeven de beveiliging omlaag zodat er weer alerts kunnen komen
Ze gaan er natuurlijk ook standaard vanuit dat je een ban van 4h doet. Bij mij zijn ze (bijna altijd) permanent, dus daarmee ook geen last van terugkerende alerts en dus decisions. Immers, botjes leren niet van een straf, die gaan gewoon door.
En custom AppSec collections/parsers/scenario's/alerts tellen niet, want die kunnen ze niet verifieren...
Ik heb dus wel een aantal van die custom dingen draaien om bijv. Wordfence blocks in de access log door te zetten naar CrowdSec. Het is nu enkel wachten op een onverlaat die weer een poging doet om in te loggen met "admin" of een andere logische gebruikersnaam
Al met al dus na 4 dagen een mooi resultaat: ik zie bijna geen 4** status codes meer in de logs voorbijkomen. Alles is een stuk rustiger. Voorlopig dus ook geen noodzaak om de hele lijst van ThreatHive (126.000 IPs) toe te passen.
EDIT #1
Er was blijkbaar een communicatie probleem met CrowdSec, al heb ik geen idee wat dan, maar sinds een uurtje heb ik plotseling weer stapels alerts en zijn alle alerts sinds zaterdagochtend binnengekomen: gemiddeld zo'n 100 per dag
Ik heb lokaal zitten kijken, en zag met "cscli alerts list" bergen met alerts. Toen ik daarna in de CrowdSec console ging kijken, kwamen ze vervolgens allemaal binnen
Dus dat ik bijna geen 4** status codes meer voorbij zie komen dat klopt, maar CrowdSec alert zich nog helemaal suf elke dag. Mijn custom alerts doen het nog niet, dus daar moet ik nog naar kijken...
EDIT #2
Nou. Zolang ik:
- Niet de lijst van Emerging Threats gebruik (https://rules.emergingthr...es/emerging-Block-IPs.txt) om als decision aan CrowdSec toe te voegen
- Een korte ban tijd (4 uur nu ff) gebruik
/f/image/JP63HfB9LfT456xbqBs52lzG.png?f=fotoalbum_large)
Maar ja, dan wel dus rond de 100 alerts per dag. Ik weet ff niet wat nu verstandiger is
Dezelfde IP adressen komen nu meerdere malen per dag langs. Met een bantijd van 24h isdat al flink minder natuurlijk.
Het wordt denk ik beetje laveren tussen een langere bantijd, toepassing van de emerging threats lijst (update 1x per dag, 24h bantijd, lijst van ca 1.500 ip blokken) en het verlies van de 15k community blocklist die dan de "lite" variant van 3k wordt.
Als voorbeeld:
Je ziet een heel IP bereik elke dag terugkomen. Dag in dag uit exact dezelfde probes, alerts en blocks.
In de emerging threats lijst staat dit bereik (78.153.140.0/24) gewoon geblokkeerd...
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
| │ 415 │ Ip:78.153.140.203 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-14T22:37:25Z │ │ 414 │ Ip:78.153.140.203 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-14T22:37:25Z │ │ 267 │ Ip:78.153.140.203 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-13T12:32:31Z │ │ 266 │ Ip:78.153.140.203 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-13T12:32:31Z │ │ 252 │ Ip:78.153.140.151 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-13T09:17:57Z │ │ 251 │ Ip:78.153.140.151 │ crowdsecurity/http-admin-interface-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-13T09:17:58Z │ │ 250 │ Ip:78.153.140.151 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-13T09:17:57Z │ │ 249 │ Ip:78.153.140.123 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-13T09:01:45Z │ │ 248 │ Ip:78.153.140.123 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-13T09:01:45Z │ │ 160 │ Ip:78.153.140.203 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T13:56:53Z │ │ 159 │ Ip:78.153.140.203 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T13:56:53Z │ │ 146 │ Ip:78.153.140.123 │ crowdsecurity/http-admin-interface-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T08:39:51Z │ │ 145 │ Ip:78.153.140.123 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T08:39:50Z │ │ 144 │ Ip:78.153.140.123 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T08:39:50Z │ │ 106 │ Ip:78.153.140.224 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T02:59:35Z │ │ 105 │ Ip:78.153.140.224 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T02:59:35Z │ │ 100 │ Ip:78.153.140.179 │ crowdsecurity/http-admin-interface-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T02:05:31Z │ │ 99 │ Ip:78.153.140.179 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T02:05:29Z │ │ 98 │ Ip:78.153.140.179 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T02:05:29Z │ │ 93 │ Ip:78.153.140.151 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T01:49:40Z │ │ 92 │ Ip:78.153.140.151 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-12T01:49:40Z │ │ 54 │ Ip:78.153.140.203 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-11T14:35:09Z │ │ 53 │ Ip:78.153.140.203 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-11T14:35:09Z │ │ 49 │ Ip:78.153.140.224 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-11T13:24:26Z │ │ 48 │ Ip:78.153.140.224 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-11T13:24:26Z │ │ 45 │ Ip:78.153.140.179 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-11T10:51:04Z │ │ 44 │ Ip:78.153.140.179 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-11T10:51:04Z │ │ 11 │ Ip:78.153.140.203 │ crowdsecurity/http-probing │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-10T16:39:13Z │ │ 10 │ Ip:78.153.140.203 │ crowdsecurity/http-sensitive-files │ GB │ 202306 Hostglobal.plus Ltd │ ban:1 │ 2025-10-10T16:39:13Z │ |
EDIT #3
Ja hoor, En dan heb ik Alerts, krijg ik dit weer:
/f/image/7dR1VHmOSXlVakhbD8rg6EPj.png?f=fotoalbum_large)
Afijn: Geen Alerts is niet goed, maar teveel ook niet. Ik heb die Emerging Threats lijst er nu maar ingezet, en ga de bantijd verlengen. Pfff. Het is 15 oktober en ik zit op 406 van de 500 voor de hele maand
Ik neem aan dat alles lokaal gewoon blijft werken, zelfs als ik over die 500 ga.
[ Voor 114% gewijzigd door Mars Warrior op 15-10-2025 18:37 ]
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs
De Alerts blijven komen overigens. Ik zit nu vanzelfsprekend ruim over de limiet van 500, maar dat zal me een zorg zijn. De Alerts zorgen ervoor dat er nieuwe - en langere - bans worden uitgedeeld. Zou je de bans in een firewall zetten, dan werkt dat niet omdat die IP adressen worden tegengehouden. En als die ban verloopt, dan komen alle botjes weer van voren af aan je backends verstoren. Nu ik ze nog steeds afvang in Traefik/CrowdSec, worden de bans dus elke keer verlengd.
Het enige dat ik niet kan vinden is hoevaak de database wordt opgeschoond, dus dat verlopen decisions worden verwijderd.
De minimale bantijd van 24u is eigenlijk nog net te kort voor een enkele ban: de meeste botjes komen bijna elke dag rond dezelfde tijd langs. Het bannen van minder dan 24h heeft dus ook geen enkele zin: ze komen toch niet meer langs in die tijd. De standaard 4u van CrowdSec vind ik dan ook vreemd overkomen, immers dat helpt bij mij helemaal niets.
Door de werking van CrowdSec (Alerts --> Nieuwe decision gebaseerd op eerdere decisions) krijgen botjes die regelmatig langs komen feitelijk een "permanente" ban: de bantijd wordt immers elke keer verlengd. Precies wat mijn doel was.
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs
Ik heb in Traefik yaml gewoon de header velden op keep staan. Ik zie namelijk wel de user agent in de logs. Maar het domein is gewoon niet ingevuld.
Is dat een config fout aan mijn kant of een eigenschap van Traefik?
Anders moet ik namelijk de router name gaan vertalen naar het domein om inzicht per domein te krijgen in mijn Metabase dashboards.
De AppSec module meldt wel zelf het domein. Maar dat komt niet uit de access log.
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs
Met deze "custom manager" (in de Renovate config) herkent en update Renovate deze plugins:
1
2
3
4
5
6
7
8
9
10
11
| "customManagers": [ { "customType": "jsonata", "fileFormat": "yaml", "managerFilePatterns": ["/traefik.ya?ml/"], "matchStrings": [ "experimental.plugins.*.{\"depName\": $substringAfter(moduleName, \"/\"), \"currentValue\": version, \"packageName\": \"https://\" & moduleName}" ], "datasourceTemplate": "git-tags" } ] |
Voorbeeld van een resultaat:
/f/image/EnotzeIWJ8YRffeXJO7LwO2c.png?f=fotoalbum_large)
:strip_exif()/f/image/NpONIORNNvboOW1KqiT9zMMQ.png?f=user_large)
En tegen mijn verwachting in..., en geen idee hoe Renovate het doet, maar het werkt ook goed als je meerdere plugins zou hebben met dezelfde versie.
Als in, als test had ik dit in mijn Traefik.yaml gezet:
1
2
3
4
5
6
7
8
| experimental: plugins: traefik-oidc-auth: moduleName: "github.com/sevensolutions/traefik-oidc-auth" version: "v0.16.0" foo: moduleName: "github.com/foo/bar" version: "v0.16.0" |
En ook in dat geval deed Renovate prima alleen de version regel bij de oidc plugin updaten
Daarnaast ondersteund de JSONata custom manager niet alleen JSON, maar ook yaml en toml met automatische conversie (anders werkte mijn voorbeeld sowieso al niet