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 и его плагинов.

  • docker/traefik_local_plugins.txt
  • Последнее изменение: 05.07.2026 18:45
  • r0wbh