Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Nu online
Mars Warrior schreef op dinsdag 7 oktober 2025 @ 18:19:
Thanx voor de "heads up".
Ik draai - zoals vaker - nog heel wat oude versies in mijn setup. Ik update niet zo vaak.
Als de L4 plugin nu kapot is, dan ga ik daar ook veel last van krijgen. Dat is niet de bedoeling. Nu kun je met Docker gewoon weer de oude container starten, maar ik zit niet te wachten op dit soort gezeik na een update.
:Y Het is niet dat ik mensen vraag om mij te volgen, maar ik vind het wel leuk om mijn motieven hier te delen :). De L4 plugin werkt of zal binnenkort wel weer werken, maar ik vind nogal gaar om in Forgejo Actions een compleet irrelevante stack trace voor m'n giechel te krijgen als ik net een component heb toegevoegd:
code:
1
2
3
4
5
6
7
8
9
10
11
 > [builder 2/2] RUN GOTOOLCHAIN=go1.24.1 xcaddy build     --with github.com/caddy-dns/cloudflare     --with github.com/greenpau/caddy-security     --with github.com/hslatman/caddy-crowdsec-bouncer/http     --with github.com/hslatman/caddy-crowdsec-bouncer/layer4     --with github.com/hslatman/caddy-crowdsec-bouncer/appsec     --with github.com/lucaslorentz/caddy-docker-proxy/v2     --with github.com/mholt/caddy-l4     --with github.com/mholt/caddy-dynamicdns     --with github.com/WeidiDeng/caddy-cloudflare-ip:
124.4 go: added github.com/joho/godotenv v1.5.1
124.4 go: added github.com/lucaslorentz/caddy-docker-proxy/v2 v2.10.0
124.4 2025/08/19 10:48:01 [INFO] exec (timeout=0s): /usr/local/go/bin/go get -v github.com/mholt/caddy-l4 github.com/caddyserver/caddy/v2@v2.10.0 
124.5 go: downloading github.com/mholt/caddy-l4 v0.0.0-20250814163833-b0a5a508a938
124.8 go: accepting indirect upgrade from github.com/cloudflare/circl@v1.6.0 to v1.6.1
124.8 go: accepting indirect upgrade from github.com/quic-go/quic-go@v0.50.1 to v0.54.0
124.8 go: github.com/mholt/caddy-l4@v0.0.0-20250814163833-b0a5a508a938 requires
124.8   github.com/caddyserver/caddy/v2@v2.10.1-0.20250720214045-8ba7eefd0767, but v2.10.0 is requested
124.8 go: github.com/mholt/caddy-l4@upgrade (v0.0.0-20250814163833-b0a5a508a938) requires github.com/caddyserver/caddy/v2@v2.10.1-0.20250720214045-8ba7eefd0767, not github.com/caddyserver/caddy/v2@v2.10.0
124.8 2025/08/19 10:48:01 [FATAL] exit status 1


En dan heb ik net te weinig kaas gegeten van de moderne Go toolchain om daar chocola van te maken. Buiten dat ik ook gewoon geen zin heb in dit soort vage issues. Het versionen, en als dat maar met 0.0.1, vind ik dan een kleine moeite en voorkomt dit soort problemen.

Ik vond Traefik aan de praat krijgen best wel straight forward. Toegegeven ik ken geen grote of populaire reverse proxy waar ik geen (professionele) ervaring mee heb. Dus dat helpt wel enorm, maar kort door de bocht:

Docker Compose
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
services:
  traefik:
    container_name: traefik
    image: traefik:v3.5.3
    restart: on-failure:10
    networks:
      ingress:
      ipvlan:
        ipv4_address: 192.168.1.4
        ipv6_address: aaaa:aaaa:aaaa:1:b00b::135
      monitoring:
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /opt/appdata/traefik/traefik.yaml:/traefik.yaml:ro
      - /opt/appdata/traefik/config:/configs:ro
      - /opt/appdata/traefik/certs/acme.json:/acme.json:rw
      - logs:/logs:rw
    security_opt:
      - no-new-privileges=true
    cpus: 1

networks:
  ingress:
    name: swarm-overlay
    external: true

  ipvlan:
    name: br0
    external: true

  monitoring:
    name: monitoring
    external: true

volumes:
  logs:
    name: traefik-logs


traefik.yaml
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
75
76
api:
  dashboard: True
  insecure: True

entryPoints:
  web:
    address: ":80"

    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
          permanent: true

  websecure:
    address: ":443"
    asDefault: true
    http:
      tls:
        certResolver: letsEncrypt
        domains:
          - main: "example.com"
            sans:
              - "*.example.com"

      middlewares:
        - traefik-real-ip@file
        - security-headers@file
        - rate-limit@file

    http3:
      advertisedPort: 443

    forwardedHeaders:
      trustedIPs:
        - 127.0.0.1/32
        - 192.168.0.0/16
        - 172.16.0.0/12
        - 10.0.0.0/8
        # Cloudflare IPs kunnen hier

  dns-over-tls:
      address: :853/tcp
  mqtt-over-tls:
      address: :8883/tcp
  smtp-over-tls:
      address: :465/tcp
  ssh:
      address: :22/tcp

providers:
  providersThrottleDuration: 15s

  file:
    directory: "/configs"

  docker:
    watch: true
    exposedByDefault: false
    network: "swarm-overlay"

certificatesResolvers:
  letsEncrypt:
    acme:
      email: alex3305@tweakers.net
      storage: /acme.json
      dnsChallenge:
        # Provider credentials should be stored in environment variables.
        provider: cloudflare
        resolvers:
          - "1.1.1.1:53"
          - "1.0.0.1:53"

metrics:
  prometheus: {}


configs/middlewares.yaml
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
http:
  middlewares:
    traefik-real-ip:
      plugin:
        traefik-real-ip: {}

    local-ips-allowed:
      ipAllowList:
        sourceRange:
          - 192.168.0.0/16
          - 172.16.0.0/12
          - 10.0.0.0/8

    security-headers:
      headers:
        customResponseHeaders:
          browserXssFilter: true
          contentTypeNosniff: true
          frameDeny: true

    rate-limit:
      rateLimit:
        average: 100
        period: 1
        burst: 100
Ik heb eerder / vaker met Treafik gespeeld en gewerkt, maar vind dat nog steeds een enorm waterhoofd.
Ik heb hier wat ik geknipt, maar mijn basis Caddyfile was ook gewoon 190 regels ;). Zoveel doet dit dus niet voor elkaar onder.
De reden dat ik aan het experimentern was/ben met Traefik voor thuis is dat ik geen Cloudflare heb (veel docker services hangen aan verschillende subdomeinen en toplevel domeinen, die vanzelfsprekend extern worden beheerd). Nu gebruik ik wel wat WAFjes, maar ik wil eigenlijk het gros van het botverkeer met Anubis en Crowdsec eruit filteren, eigenlijk dus volgens jouw plaatje.

Caddy heeft icm Anubis meerdere lagen/instanties nodig, terwijl Traefik dat netjes met middlewares kan afhandelen.
Yes. Dat zit er dus echt nét in :). Met Caddy moest ik het e.e.a. doorverwijzen, terwijl ik het nu als middleware kan configureren. Ik ben daar echt blij mee. Ik gebruik dat voor mijn Forgejo instantie.

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
services:
  forgejo:
    container_name: forgejo
    image: codeberg.org/forgejo/forgejo:12.0.4
    networks:
      internal:
      ingress:
      forgejo:
    labels:
      traefik.enable: true
      traefik.http.routers.forgejo.rule: "Host(`example.com`)"
      traefik.http.routers.forgejo.middlewares: "forgejo-anubis@docker"
      traefik.http.services.forgejo.loadbalancer.server.port: "80"
      traefik.tcp.routers.forgejo-ssh.entrypoints: "ssh"
      traefik.tcp.routers.forgejo-ssh.rule: "HostSNI(`*`)"
      traefik.tcp.services.forgejo-ssh.loadbalancer.server.port: "22"

  anubis:
    container_name: forgejo-anubis
    image: ghcr.io/techarohq/anubis:v1.22.0
    networks:
      internal:
      ingress:
    environment:
      BIND: ":8080"
      TARGET: " "
      COOKIE_DOMAIN: "example.com"
      SERVE_ROBOTS_TXT: "true"
      REDIRECT_DOMAINS: "example.com"
      PUBLIC_URL: "https://anubis.example.com"
    labels:
      traefik.enable: true
      traefik.http.routers.forgejo-anubis.rule: "Host(`anubis.example.com`)"
      traefik.http.services.forgejo-anubis.loadbalancer.server.port: "8080"
      traefik.http.middlewares.forgejo-anubis.forwardauth.address: "http://anubis:8080/.within.website/x/cmd/anubis/api/check"

networks:
  internal:
    name: forgejo-internal
    attachable: false

  forgejo:
    name: forgejo
    attachable: true
    driver: overlay

  ingress:
    name: swarm-overlay
    external: true
Crowdsec heb ik nog niet naar gekeken, maar zou ik dan ook willen toepassen.

Heb jij enig idee hoeveel verkeer jij met Anubis en Crowdsec blokkeert, ondanks dat je ook al Cloudflare gebruikt? Ik lees sterk varierende cijfers als je geen Cloudflare gebruikt: daar claimen mensen dat ze 70-90% van het verkeer kwijt zijn op hun backend services. Als ik zie wat Wordfence op Wordpress al blokkeert, dan wil ik dat best geloven.
Van Crowdsec wel, Anubis niet. Crowdsec en inmiddels ook AppSec gebruik ik voor al mijn HTTP diensten die allemaal aan het internet hangen. Ik heb een aantal regioblokkades via Cloudflare lopen en de Unifi firewall filtert ook het e.e.a.. Toch heb ik momenteel 9 actieve bans en volgens de Crowdsec Console zijn er de afgelopen 7 dagen 4800 requests geblokkeert. De afgelopen 30 dagen blijkbaar zo'n 140 bans. Dat vind ik best wel veel.

Mijn doel is overigens niet om Cloudflare-vrij te worden, maar wel om minder afhankelijk te worden. Crowdsec en Anubis zijn daar mooie stappen voor.

Acties:
  • +2 Henk 'm!

  • orvintax
  • Registratie: Maart 2018
  • Laatst online: 23:22

orvintax

www.fab1an.dev

alex3305 schreef op dinsdag 7 oktober 2025 @ 19:39:
[...]
  • diensten zonder authenticatie beveiligen
Vooral die laatste use case vind ik enorm aantrekkelijk. Ik heb bijvoorbeeld mijn eigen gehoste shields instantie beveiligd door Forgejo als OAuth2 Server in te zetten. Deze dienst kan ik dus veilig ontsluiten naar het internet zonder dat er zonder toestemming gebruik van wordt gemaakt.
Misschien interpreteer ik dit nu te simpel, maar hier gebruik ik gewoon HTTP basic authentication met Caddy voor. Maar goed, mijn belangrijkste design punt voor mijn homelab is KISS :P

[ Voor 4% gewijzigd door orvintax op 07-10-2025 23:22 . Reden: Typo + link ]

https://dontasktoask.com/

Pagina: 1 ... 14 15 Laatste