TorBlock is a Traefik plugin which can block requests originating from the Tor network. The publicly available list of Tor exit nodes (https://check.torproject.org/exit-addresses
) is fetched regularly in order to identify the requests to be blocked.
Requirements: Traefik >= v2.5.5
For each plugin, the Traefik static configuration must define the module name (as is usual for Go packages).
The following declaration (given here in YAML) defines an plugin:
# Static configuration
pilot:
token: xxxxx
experimental:
plugins:
torblock:
moduleName: github.com/jpxd/torblock
version: v0.1.1
Here is an example of a file provider dynamic configuration (given here in YAML), where the interesting part is the http.middlewares
section:
# Dynamic configuration
http:
routers:
my-router:
rule: host(`demo.localhost`)
service: service-foo
entryPoints:
- web
middlewares:
- my-middleware
services:
service-foo:
loadBalancer:
servers:
- url: http://127.0.0.1:5000
middlewares:
my-middleware:
torblock:
enabled: true
Traefik also offers a developer mode that can be used for temporary testing or offline usage of plugins not hosted on GitHub. To use a plugin in local mode, the Traefik static configuration must define the module name (as is usual for Go packages) and a path to a Go workspace, which can be the local GOPATH or any directory.
The plugins must be placed in ./plugins-local
directory, which should be next to the Traefik binary.
The source code of the plugin should be organized as follows:
./plugins-local/
└── src
└── github.com
└── jpxd
└── torblock
├── torblock.go
├── torblock_test.go
├── go.mod
├── LICENSE
├── Makefile
└── README.md
# Static configuration
pilot:
token: xxxxx
experimental:
localPlugins:
example:
moduleName: github.com/jpxd/torblock
(In the above example, the torblock
plugin will be loaded from the path ./plugins-local/src/github.com/jpxd/torblock
.)
# Dynamic configuration
http:
routers:
my-router:
rule: host(`demo.localhost`)
service: service-foo
entryPoints:
- web
middlewares:
- my-middleware
services:
service-foo:
loadBalancer:
servers:
- url: http://127.0.0.1:5000
middlewares:
my-middleware:
plugin:
torblock:
enabled: true
You can also see a working example docker-compose.yml
in the examples
directory, which loads the plugin in local mode.