Кто-нибудь здесь реально использует контейнер типа «Traefik» (работающий в качестве реверс-прокси)? Я импортировал его и могу запустить, но, например, панель управления не работает. И что насчёт его конфигурационного файла «traefik.yml»? Я зашёл внутрь контейнера, но не могу найти никакой конфигурации... ещё и с логированием, похоже, полный ноль...
DyadyaGenya
Guest
0
23.01.2025 01:16:00
Я только начинаю осваивать Traefik. Благодаря твоим советам, я тоже установил его на свой Mikrotik. Пока не всё понял, но первое, что меня напрягает — не могу настроить контейнер/Mikrotik так, чтобы иметь доступ к веб-интерфейсу Traefik на порту 80. Сейчас доступ возможен только через 8080, а это не очень удобно. Пока что Traefik нужен мне только в локалке для экспериментов. И даже если понадобится для более серьёзных задач, вряд ли захочу разделять доступ по порту 8080. В чём может быть проблема — в правилах NAT или в настройках traefik.yaml? Сейчас у меня минимальная конфигурация traefik.yaml с логом: level: DEBUG
Почти разобрался. Чтобы напрямую зайти на панель управления, нам нужно вот что:
api: dashboard: true insecure: true
entryPoints: traefik: address: ":80"
Нужна чёткая привязка entry point с именем «traefik». Но мне бы хотелось ещё настроить авторизацию и другие приятные штуки. Если я правильно понял, то маршруты надо прописывать в каталоге «/etc/traefik». Что-то вроде этого:
Но у меня это не работает. Хотя я зарегистрировал имя в своём локальном DNS — оно пингуется. Но зайти по имени или адресу не могу.
Amm0
Guest
0
21.09.2023 01:17:00
Не знаю, кому это поможет, но мне удалось запустить Traefik на RB1100 (который на самом деле ARM32) с использованием этого образа: . Удалось настроить его как CORS-прокси для RouterOS (похоже на NGNIX, который у меня был, только Traefik кажется «более современным» и гибким).
Хотя Traefik запускается легко, его UI показывает только статус, а не конфигурацию, поэтому чтобы что-то сделать — нужно загрузить «статическую конфигурацию» (по терминологии Traefik). Эту конфигурацию можно передать через traefik.yaml файл в /container/mount, через опцию «cmd» или через переменные окружения.
Но чтобы реально что-то полезное сделать, придётся либо кучу переменных окружения задать, либо один очень длинный и непросматриваемый cmd в конфигурации контейнера. Подход с переменными окружения полезен, если хотите управлять конфигурацией прямо внутри RouterOS без ПК и вообще без монтирования (см. . Можно ещё создать новый образ на базе traefik, просто включив в него traefik.yaml.
Ниже я объясню способ с монтированием. Чтобы создать контейнер с конфигурацией (подправьте по необходимости):
Теперь, чтобы использовать контейнер, нужна конфигурация. Ваши настройки могут отличаться, но в моём примере всё, что приходит, перенаправляется на веб-серверы Mikrotik с добавлением ACME Let’s Encrypt и CORS-заголовков, а также с редиректом с HTTP на HTTPS. Эта часть зависит от вас, так как правила файрвола сильно различаются.
Но вот пример конфигурации, которая перенаправляет все входящие запросы на порты 80/443 к веб-серверу Traefik, который потом проксирует их на webfig, REST и прочее Mikrotik:
/ip firewall nat add comment="Порт 80 LAN на прокси Traefik" action=dst-nat chain=dstnat dst-port=8080 protocol=tcp src-address-list=LAN to-addresses=172.18.18.18 to-ports=8080 /ip firewall nat add comment="Все (кроме Traefik) порт 80 на прокси Traefik" action=dst-nat chain=dstnat dst-port=443 protocol=tcp to-addresses=172.18.18.18 from-address=!172.18.18.0/24 to-ports=443 /ip firewall nat add comment="Все (кроме Traefik) порт 443 на прокси Traefik" action=dst-nat chain=dstnat dst-port=80 protocol=tcp to-addresses=172.18.18.18 from-address=!172.18.18.0/24 to-ports=80
Поскольку правила NAT обрабатываются первыми, перенаправить веб-трафик на Traefik довольно просто. Возможно, придётся добавить или убрать правила в /ip/firewall/filter по желанию — это просто пример.
В конце, после редактирования конфигурации на вашем ПК, её нужно загрузить. Можно использовать мой traefik.yaml как шаблон. Главное — файл должен называться «traefik.yaml» (и быть валидным) и копироваться в примонтированную папку TRAEFIK_ETC. Можно подключить ROSE/SMB для монтирования или использовать FTP/SCP и т.п., но валидный traefik.yaml должен оказаться в монтируемой директории, которая потом отображается в /etc/traefik.
Вот моя рабочая конфигурация, которая проксирует RouterOS по 80/443 через адрес шлюза контейнера (при этом /ip/services/http слушает порты 80/443 тоже):
Обратите внимание на места с REPLACE — их нужно заменить. В документации Traefik есть больше примеров — выше использован конфиг в формате «File (YAML)», как описано здесь: .
Ещё учтите, что сертификаты Let’s Encrypt проверяются/создаются только при старте, поэтому после загрузки конфигурации сервис надо остановить и запустить заново. Все остальные изменения в traefik.yaml происходят в реальном времени благодаря включённому «file provider» и опции watch: true.
В общем, мне конфигурация Traefik понравилась больше, чем у NGINX. Насчёт производительности и стабильности ничего сказать не могу — пока это просто эксперимент. HAProxy всё ещё кажется лучшим вариантом для серьёзных задач, но Traefik выглядит более подходящим для контейнера под Mikrotik.
Amm0
Guest
0
30.05.2024 04:45:00
Если хотите получить красиво отформатированные цветные логи из контейнера Traefik, помогает такая сложная команда: /log print proplist=message as-value where topics~"container" [:if ($message~"(ERR|INF|DBG|WRN)") do={:put [:pick "$message\1B[0K" 25 999]}] Можно добавить «follow-only» после «print», чтобы смотреть логи в режиме tail во время работы.
Это даст вот такой результат:
Вместо вот такого:
Чтобы избавиться от ANSI-цветов (что иногда удобно), если используете /container/env для статической конфигурации, добавьте /container/env add key=TRAEFIK_LOG_NOCOLOR name=traefik-proxy value=true или в статическом файле /etc/traefik/traefik.yaml пропишите: log: nocolor: true
А с «nocolor: true» команда для tail немного меняется (поскольку убирается временная метка, и так как нет ANSI-кодов, нужно, чтобы :pick начинал с позиции «20»): /log print proplist=message as-value follow-only where topics~"container" [:if ($message~"(ERR|INF|DBG|WRN)") do={:put [:pick "$message" 20 999]}]
rskmikc
Guest
0
18.06.2024 12:19:00
@propio3r Доброе утро! Подскажите, пожалуйста, как вы устанавливали контейнер nproxy manager? У меня роутеры версии 7.15, и я бы хотел его поставить, но нигде не могу найти инструкций. Заранее огромное спасибо!
own3r1138
Guest
0
19.06.2024 06:51:00
Всё, что нужно, есть в этих трёх ссылках.
Lokamaya
Guest
0
28.10.2024 09:26:00
Обязательно нужно это попробовать. Спасибо, Amm0!
Amm0
Guest
0
28.10.2024 20:51:00
Да, это точно работает на RB1100AHx4 и RB5009. Я использую это для CORS и автоматического обновления сертификатов Let's Encrypt. Надо бы написать пост про Traefik, ведь я им пользуюсь...
Но для справки — можно использовать /container/env, чтобы задать некоторые «статические настройки конфигурации» Traefik. Это особенно полезно, если у вас динамическая конфигурация не из файла, но иногда работать с переменными окружения в контейнерах RouterOS проще, чем возиться с файлами:
Если вы используете «file» как «провайдер конфигурации», как показано выше, то можно задать и «статические» настройки (например, порт), и «динамические» (URL, которые проксируются) в одном месте. Либо можно комбинировать: переменные окружения для «статической» конфигурации и файл — для «динамической». Traefik достаточно гибкий в настройках, что иногда делает первоначальную конфигурацию немного сложной.
Веб-страница на порту :8080 позволит видеть все изменения конфигурации — очень удобно.
Также, по крайней мере один способ настройки фаервола для Traefik описан здесь: