Traefik — 10. используем локальные плагины
5 июля 2026
С недавнего времени практически каждый перезапуск Traefik стал приводить к его неработоспособности. Как оказалось, связано это с блокировками со стороны GitHub.
Ранее, в статьях, посвященных установке geoblock и crowdsec, мы добавляли в конфигурацию Traefik строки для подключения плагинов. И каждый раз при перезапуске Traefik эти плагины скачивались с GitHub.
На этот случай у Traefik есть решение: локальные плагины. Нужно всего лишь скачать вручную архив с исходниками плагина, скопировать его на сервер и изменить пару строк в конфигурации. Рассмотрим на примере плагина geoblock.
Открываем на GitHub страницу плагина и переходим в раздел Releases.
Скачиваем архив с нужной версией:
Теперь архив закидываем на сервер и файлы из него распаковываем в каталог ./data/plugins-local/src/github.com/<author-name>/<plugin-name>/, где <author-name> - имя автора на GitHub, <plugin-name> - название плагина. Должна получиться вот такая файловая структура:
. ├── [data] │ ├── acme.json │ ├── [certs] │ ├── [custom] │ │ ├── host.yml │ │ └── tls.yml │ ├── [plugins-local] │ │ └── [src] │ │ └── [github.com] │ │ └── [PascalMinder] │ │ └── [geoblock] │ │ ├── cachePersistence.go │ │ ├── [docker] │ │ │ ├── [dev-geoblock] │ │ │ │ └── docker-compose.yml │ │ │ └── [traefik-config] │ │ │ ├── dynamic-configuration.yml │ │ │ └── traefik.yml │ │ ├── geoblock.go │ │ ├── geoblock_test.go │ │ ├── go.mod │ │ ├── LICENSE │ │ ├── logPersistence.go │ │ ├── [lrucache] │ │ │ ├── lru.go │ │ │ ├── lru_interface.go │ │ │ └── lru_test.go │ │ ├── Makefile │ │ ├── pathHelper.go │ │ ├── pathHelper_test.go │ │ └── readme.md │ └── traefik.yml └── docker-compose.yml
Правим файл статической конфигурации data/traefik.yml. Вместо «plugins» меняем на «localplugins» и убираем версии плагинов.
Было:
experimental: plugins: geoblock: moduleName: "github.com/PascalMinder/geoblock" version: "v0.3.7"
Стало:
experimental: localplugins: geoblock: moduleName: "github.com/PascalMinder/geoblock"
Осталось подключить каталог plugins-local в docker-compose.yml:
... volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - ./data/traefik.yml:/traefik.yml:ro - ./data/custom/:/custom/:ro - ./data/certs/:/certs/:ro - ./data/acme.json:/acme.json - /var/log/traefik:/var/log/traefik - ./data/plugins-local/:/plugins-local/:ro ...
Перезапускаем:
docker-compose up -d
После перезапуска проверяем работоспособность Traefik и его плагинов.