Docker - Traefik - IPWhitelist
Page content
Whitelist IP Range
docker-compose.yml
whoami:
image: containous/whoami
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.test-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, x.x.x.x/y"
- "traefik.http.routers.whoami.middlewares=test-ipwhitelist@docker"
- "traefik.http.routers.whoami.rule=Host(`whoami.your.domain.de`)"
- "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
- "traefik.http.routers.whoami.tls=true"
-> only “localhost” and SRC IP x.x.x.x/y can access this URL. Rest will be blocked. -> Disadvantage. Container needs to be restartet if the Source Range gets modified!
we can do this better :)
Move to File
you may want to put your “IP Ranges” to a dedicated File and import it where needed.
dynamic/middlewares.toml
mkdir dynamic
cat << 'EOF' > dynamic/middlewares.yml
http:
# Use @file prefix for middlewares from fileprovider
middlewares:
my-ipwhitelist:
ipwhitelist:
sourcerange: "127.0.0.1, 192.168.0.0/16, 1.2.3.4/32"
EOF
docker-compose.yml
-> add Volume to traefik
traefik:
...
volumes:
...
- "./dynamic:/etc/traefik/dynamic"
docker-compose.yml
-> add label to the Container
whoami:
...
labels:
...
- "traefik.http.routers.whoami.middlewares=my-ipwhitelist@file"
Bring them up
docker compose up -d
Any Comments ?
sha256: 7ce8db334efa0b88f635dcb371a15ae295e5d83f26c793f738c4861ff7d30c9b