dmlogv
@dmlogv
Универсальный человек

Как сделать поддомены и много портов на сервисы в докере (с дополнительными ограничениями)?

Привет! Пытаюсь решить задачку, но даже не знаю как правильно погуглить.

Дано: домашний сервачок на OpenMediaVault (Debian под капотом, но не думаю, что это имеет значение), назовем его nas.local. На нем крутится пачка сервисов: сама морда OMV и SSH, SMB, Plex, Miniflux, Gitea и прочая — что-то в Docker, что-то прямо так — каждое на своём порту прямо на nas.local.

Чего хочу: сделать красиво. Хочу, чтобы каждый сервис болтался на своём поддомене, при этом порты самом nas.local не торчали. И если случай «1 сервис — 1 порт» нормально закрывается через reverse proxy, то, например, у Gitea торчат два порта, а у Plex — вообще клиника.

В идеальном мире хочу сделать примерно так:

nas.local:22 — просто SSH

omv.nas.local:80 -> морда OMV
omv.nas.local:445 -> OMV SMB

gitea.nas.local:80 -> docker/gitea:3000
gitea.nas.local:22 -> docker/gitea:22

miniflux.nas.local:80 -> docker/miniflux:8080

plex.nas.local:32400 -> docker/plex:32400
plex.nas.local:1900 -> docker/plex:1900
plex.nas.local:5353 -> docker/plex:5353
plex.nas.local:8324 -> docker/plex:8324
plex.nas.local:32410,32412,32413,32414 -> docker/plex:32410,32412,32413,32414
plex.nas.local:32469 -> docker/plex:32469


...и прочая, и прочая.

Что я уже пробовал сделать:
  • Зафигачил А-зону .*\.nas\.local на своём микротике.
  • Экспериментировал с Traefik и ReProxy.


Как писал выше, с одним портом всё проходит хорошо, но как мапить несколько портов, да еще и скрывать их «снаружи» — непонятно.

Дополнительные, но необязательные хотелки:

  • nas.local:32400 не должен вести в Plex.
  • Автодисковеринг для докер-контейнеров.
  • Не ломать автодисковеринг клиентов (чтобы клиент Plex-a находил своё хозяйство в сети).
  • Покрыть всё, что можно, SSL.
  • Вопрос задан
  • 316 просмотров
Пригласить эксперта
Ответы на вопрос 2
ValdikSS
@ValdikSS
Такое получится сделать только для тех сервисов, где есть концепция виртуального хоста. В SMB, например, её нет, полагаю, что и не в каждом сервисе Plex.
Ответ написан
Комментировать
Lopar
@Lopar
системный администратор
Попробуйте в Микротике присвоить а-записи для ваших днс-имён к несуществующим внутренним адресам, а потом бросать порты таким образом
/ip/dns/static/add name=one.local address=172.17.1.1
/ip/dns/static/add name=two.local address=172.17.1.2
/ip/firewall/nat/add chain=dstnat action=dst-nat dst-address=172.17.1.1 dst-port=443 to-addresses=10.0.0.3 to-ports=443 protocol=tcp
/ip/firewall/nat/add chain=dstnat action=dst-nat dst-address=172.17.1.2 dst-port=443 to-addresses=10.0.0.4 to-ports=443 protocol=tcp


На выходе получается, что вы пробросили one.local:443 -> 10.0.0.3:443; two.local:443 -> 10.0.0.4:443...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы