Help getting geoblock middleware working with pangolin

I’m trying to get the geoblock middleware working with traefik and pangolin and i’m having some trouble having traefik recognize it.

I am trying to do everything with labels and commands and perhaps that’s where i’m going wrong since every documentation about it shows that it’s using the file provider for configuration but i’m hoping to not have to move my ansible roles to use file configs.

My traefik command is:

"Cmd": [
                "--api=true",
                "--api.dashboard=true",
                "--api.insecure=true",
                "--entrypoints.web=true",
                "--entrypoints.web.address=:80",
                "--log=true",
                "--log.level=debug",
                "--ping=true",
                "--providers.docker=true",
                "--providers.docker.exposedbydefault=false",
                "--entrypoints.websecure=true",
                "--entrypoints.websecure.address=:443",
                "--certificatesresolvers.le.acme.email=my-email",
                "--certificatesresolvers.le.acme.storage=/acme.json",
                "--certificatesresolvers.le.acme.tlschallenge=true",
                "--entrypoints.web.http.redirections.entryPoint.to=websecure",
                "--entrypoints.web.http.redirections.entryPoint.scheme=https",
                "--serversTransport.insecureSkipVerify=true",
                "--accesslog",
                "--accesslog.filepath=/var/log/traefik/access.log",
                "--providers.http.endpoint=http://pangolin:3001/api/v1/traefik-config",
                "--providers.http.pollInterval=5s",
                "--experimental.plugins.badger.moduleName=github.com/fosrl/badger",
                "--experimental.plugins.badger.version=v1.2.0",
                "--experimental.plugins.geoblock.modulename=github.com/PascalMinder/geoblock",
                "--experimental.plugins.geoblock.version=v0.3.3",
                "--entrypoints.websecure.http.middlewares=geoblock"
            ],

the last three lines should be the config for the geoblock plugin

and i have these labels set on the traefik container itself that i hope to be able to use to set up the middleware’s configuration, use them for the dashboard, and also universally for any pangolin/newt tunnel

"Labels": {
                "org.opencontainers.image.description": "A modern reverse-proxy",
                "org.opencontainers.image.documentation": "https://docs.traefik.io",
                "org.opencontainers.image.source": "https://github.com/traefik/traefik",
                "org.opencontainers.image.title": "Traefik",
                "org.opencontainers.image.url": "https://traefik.io",
                "org.opencontainers.image.vendor": "Traefik Labs",
                "org.opencontainers.image.version": "v3.5.3",
                "traefik.enable": "true",
                "traefik.http.middlewares.geoblock.plugin.geoblock.addCountryHeader": "false",
                "traefik.http.middlewares.geoblock.plugin.geoblock.allowLocalRequests": "true",
                "traefik.http.middlewares.geoblock.plugin.geoblock.allowUnknownCountries": "false",
                "traefik.http.middlewares.geoblock.plugin.geoblock.api": "https://get.geojs.io/v1/ip/country/{ip}",
                "traefik.http.middlewares.geoblock.plugin.geoblock.blackListMode": "false",
                "traefik.http.middlewares.geoblock.plugin.geoblock.cacheSize": "15",
                "traefik.http.middlewares.geoblock.plugin.geoblock.countries": "US",
                "traefik.http.middlewares.geoblock.plugin.geoblock.forceMonthlyUpdate": "false",
                "traefik.http.middlewares.geoblock.plugin.geoblock.logAllowedRequests": "true",
                "traefik.http.middlewares.geoblock.plugin.geoblock.logLocalRequests": "true",
                "traefik.http.middlewares.geoblock.plugin.geoblock.silentStartUp": "false",
                "traefik.http.middlewares.geoblock.plugin.geoblock.unknownCountryApiResponse": "nil",
                "traefik.http.middlewares.traefik-auth.basicauth.users": snip,
                "traefik.http.routers.dashboard.entrypoints": "websecure",
                "traefik.http.routers.dashboard.middlewares": "traefik-auth,geoblock",
                "traefik.http.routers.dashboard.rule": "Host(`dashboard.domain.com`)",
                "traefik.http.routers.dashboard.service": "api@internal",
                "traefik.http.routers.dashboard.tls": "true",
                "traefik.http.routers.dashboard.tls.certresolver": "le"
            }

the logs from traefik show:

2025-10-12T04:32:50Z ERR github.com/traefik/traefik/v3/pkg/server/router/router.go:155 > error="middleware \"geoblock@http\" does not exist" entryPointName=websecure routerName=3-router@http
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:33 > Adding tracing to middleware entryPointName=websecure middlewareName=badger@http routerName=1-router@http
2025-10-12T04:32:50Z ERR github.com/traefik/traefik/v3/pkg/server/router/router.go:155 > error="middleware \"geoblock@http\" does not exist" entryPointName=websecure routerName=1-router@http
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:319 > Creating load-balancer entryPointName=websecure routerName=pangolin-api@docker serviceName=pangolin-api@docker
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:362 > Creating server URL=http://pangolin:3000 entryPointName=websecure routerName=pangolin-api@docker serverIndex=0 serviceName=pangolin-api@docker
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/service.go:26 > Added outgoing tracing middleware entryPointName=websecure middlewareName=tracing middlewareType=TracingService routerName=pangolin-api@docker serviceName=pangolin-api@docker
2025-10-12T04:32:50Z ERR github.com/traefik/traefik/v3/pkg/server/router/router.go:155 > error="middleware \"geoblock@docker\" does not exist" entryPointName=websecure routerName=pangolin-api@docker
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/middleware.go:33 > Adding tracing to middleware entryPointName=websecure middlewareName=badger@http routerName=2-router@http
2025-10-12T04:32:50Z ERR github.com/traefik/traefik/v3/pkg/server/router/router.go:155 > error="middleware \"geoblock@http\" does not exist" entryPointName=websecure routerName=2-router@http
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:319 > Creating load-balancer entryPointName=websecure routerName=pangolin-ui@docker serviceName=pangolin-ui@docker
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:362 > Creating server URL=http://pangolin:3002 entryPointName=websecure routerName=pangolin-ui@docker serverIndex=0 serviceName=pangolin-ui@docker
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/service.go:26 > Added outgoing tracing middleware entryPointName=websecure middlewareName=tracing middlewareType=TracingService routerName=pangolin-ui@docker serviceName=pangolin-ui@docker
2025-10-12T04:32:50Z ERR github.com/traefik/traefik/v3/pkg/server/router/router.go:155 > error="middleware \"geoblock@docker\" does not exist" entryPointName=websecure routerName=pangolin-ui@docker
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:25 > Creating middleware entryPointName=websecure middlewareName=traefik-internal-recovery middlewareType=Recovery
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/semconv.go:40 > Creating middleware entryPointName=web middlewareName=tracing middlewareType=SemConvServerMetrics
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/entrypoint.go:37 > Creating middleware entryPointName=web middlewareName=tracing middlewareType=TracingEntryPoint
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/semconv.go:40 > Creating middleware entryPointName=traefik middlewareName=tracing middlewareType=SemConvServerMetrics
2025-10-12T04:32:50Z DBG github.com/traefik/traefik/v3/pkg/middlewares/observability/entrypoint.go:37 > Creating middleware entryPointName=traefik middlewareName=tracing middlewareType=TracingEntryPoint

the points being:

error="middleware \"geoblock@http\" does not exist"
error="middleware \"geoblock@docker\" does not exist"

can anyone tell me what i’m doing wrong or how i can correct this configuration? thank you!

You already assigned geoblock to the entrypoint, I don’t think you need to assign it again to the router.