Plugin de Traefik
Bots, Tor, VPN y proxies, revisados por router con un solo label. Empieza en modo monitor y no bloquea nada hasta que cambies.
Gratis, licencia MITProbado con Traefik v3.7
Entrypoint
websecure:443Router
app@dockerHost(`example.com`)Middlewares
gzip@dockeripscanner@dockerHumanoPermitirServicio
app@docker200X-IPScanner-Class: humanX-IPScanner-Action: allowLog de acceso
Clases de tráfico
Cada visitante recibe una clase. Tu servicio la recibe como X-IPScanner-Class.
Instalación
Ponla en el entorno del contenedor de Traefik. Todos los middlewares ipscanner la leen.
environment:
IPSCANNER_API_KEY: pk_live_...En la configuración estática o con dos flags de CLI. Reinicia Traefik.
experimental:
plugins:
ipscanner:
moduleName: github.com/ipscanner/ipscanner-traefik
version: v0.1.0siteIdEl modo y la política vienen entonces del panel, sin recargar.
Añade un sitio en el paneltraefik.http.middlewares.ipscanner.plugin.ipscanner.siteId=site_...Otros routers lo reutilizan como ipscanner@docker.
traefik.http.routers.app.middlewares=ipscannerTu stack
El mismo plugin, lea Traefik su configuración donde la lea.
command:
# ...the flags Coolify set
- '--experimental.plugins.ipscanner.modulename=github.com/ipscanner/ipscanner-traefik'
- '--experimental.plugins.ipscanner.version=v0.1.0'
environment:
- IPSCANNER_API_KEY=pk_live_...traefik.http.middlewares.ipscanner-myapp.plugin.ipscanner.siteId=site_...
traefik.http.routers.https-0-<uuid>.middlewares=gzip,ipscanner-myappUn nombre de middleware por app, añadido a cada router que generó Coolify. Detrás de Cloudflare, define también trustedProxies=cloudflare e ipHeaders=CF-Connecting-IP.
services:
traefik:
image: traefik:v3.7
command:
- --providers.docker=true
- --entrypoints.web.address=:80
- --experimental.plugins.ipscanner.modulename=github.com/ipscanner/ipscanner-traefik
- --experimental.plugins.ipscanner.version=v0.1.0
environment:
IPSCANNER_API_KEY: ${IPSCANNER_API_KEY}
ports: ["80:80"]
volumes: ["/var/run/docker.sock:/var/run/docker.sock:ro"]
app:
image: traefik/whoami:v1.11.0
labels:
- traefik.enable=true
- traefik.http.routers.app.rule=Host(`example.com`)
- traefik.http.routers.app.middlewares=ipscanner
- traefik.http.middlewares.ipscanner.plugin.ipscanner.siteId=site_...Dokploy y Compose a secas leen los mismos labels.
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: ipscanner
spec:
plugin:
ipscanner:
apiKey: urn:k8s:secret:ipscanner:apiKey
siteId: site_...Referéncialo desde un IngressRoute o con la anotación router.middlewares en un Ingress.
http:
middlewares:
ipscanner:
plugin:
ipscanner:
apiKeyFile: /run/secrets/ipscanner_api_key
siteId: site_...La clave sale de un secret de Docker o Kubernetes montado.
Panel de Sitios
Permite, marca o bloquea cada clase desde el panel. El middleware aplica un cambio en menos de 30 segundos.
Política
Opciones
Defínelas en el middleware: como labels, en YAML o en la CRD.
| Opción | Por defecto | Qué hace |
|---|---|---|
siteIdTu sitio en el panel; el modo y la política salen de ahí | Vacío | Tu sitio en el panel; el modo y la política salen de ahí |
modemonitor o enforce, cuando no hay siteId | monitor | monitor o enforce, cuando no hay siteId |
blockClassesClases bloqueadas en modo enforce sin siteId | malicious_automation | Clases bloqueadas en modo enforce sin siteId |
trustedProxiesProxies cuyas cabeceras de IP son fiables: CIDR, private, cloudflare | Vacío | Proxies cuyas cabeceras de IP son fiables: CIDR, private, cloudflare |
ipHeadersCabeceras leídas de un proxy de confianza, en orden | X-Forwarded-For | Cabeceras leídas de un proxy de confianza, en orden |
timeoutTiempo para una revisión; después, la solicitud pasa | 1500ms | Tiempo para una revisión; después, la solicitud pasa |
cacheTTLCaché de veredictos por visitante | 10m | Caché de veredictos por visitante |
cacheSizeVisitantes en la caché | 10000 | Visitantes en la caché |
policyTTLCuánto dura una política descargada | 30s | Cuánto dura una política descargada |
skipPathsRegex de ruta que se salta la revisión | Archivos estáticos | Regex de ruta que se salta la revisión |
apiKeyFileArchivo con la clave de API, para secrets | Vacío | Archivo con la clave de API, para secrets |
debugAñade las cabeceras a las respuestas y registra cada decisión | false | Añade las cabeceras a las respuestas y registra cada decisión |
Preguntas
Añade el middleware, revisa una semana de tráfico en el panel y luego bloquea.