Я пытаюсь настроить сервер Matrix Synapse с помощью Docker и обратного прокси-сервера Traefik v2.
Моя настройка работает, если я определяю одну сеть в своем файле для создания докеров, и все Traefik, Synapse и postgres используют эту сеть.
Однако, основываясь на том, что я уже узнал о Docker, я должен разместить postgres в отдельной сети (поддерживаемый
), чем Траефик (сеть
). После этого Synapse будет в обеих сетях. Однако, когда я это делаю, я больше не могу подключиться к Synapse. Время истекло, в конце концов говоря Время ожидания шлюза
.
Как будто Synapse только слушает серверная часть
сеть.
версия: '3.2'
Сервисы:
синапс:
имя_контейнера: синапс
имя хоста: ${MATRIX_HOSTNAME}
изображение: docker.io/matrixdotorg/synapse:latest
перезапуск: если не остановлен
среда:
- SYNAPSE_SERVER_NAME=${MATRIX_HOSTNAME}
- SYNAPSE_REPORT_STATS=да
- СИНАПСЕ_НО_TLS=1
- SYNAPSE_ENABLE_REGISTRATION=нет
- SYNAPSE_LOG_LEVEL=ОТЛАДКА
- SYNAPSE_REGISTRATION_SHARED_SECRET=${REG_SHARED_SECRET}
- POSTGRES_DB=синапс
- POSTGRES_HOST=дБ
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# разоблачать:
# - "8008"
тома:
- тип: связать
источник: /опт/сервисы/синапс
цель: /данные
зависит от:
- дб
сети:
- сеть
- бэкенд
этикетки:
- "traefik.enable=true"
- "traefik.http.routers.synapse.rule=Host(`${MATRIX_HOSTNAME}`)"
- "traefik.http.services.synapse.loadbalancer.server.port=8008"
- "traefik.http.routers.synapse.entrypoints=websecure"
- "traefik.http.routers.synapse.tls.certresolver=myresolver"
- "traefik.docker.network=веб"
дБ:
изображение: docker.io/postgres:10-alpine
имя_контейнера: "synapse_db"
перезапуск: если не остановлен
среда:
- POSTGRES_DB=синапс
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
тома:
- /opt/services/synapse_db:/var/lib/postgresql/data
сети:
- бэкенд
этикетки:
- "traefik.enable=false"
трафик:
изображение: трафик: v2.5
имя_контейнера: "traefik"
команда:
- "--api.insecure=истина"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=веб"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
- "--certificatesresolvers.myresolver.acme.email=${CERTBOT_EMAIL}"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
порты:
# Маршрутизатор перенаправляет 443 в WAN на 8443 на хосте, поэтому нам не нужны права root
- "8443:443"
- "8080:8080"
сети:
- сеть
тома:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/letsencrypt"
рестарт:
если не остановлен
сети:
веб:
серверная часть:
И в Synapse домашний сервер.yaml
файле есть раздел, который мог бы позволить мне привязаться к определенному интерфейсу, но я не вносил никаких изменений, поэтому по умолчанию он должен прослушиваться на всех интерфейсах:
слушатели:
- порт: 8008
тлс: ложь
тип: http
x_forwarded: правда
Ресурсы:
# - имена: [клиент, федерация]
- имена: [клиент]
сжать: ложь
Если я перехожу к одной настройке сети, она работает. Что я делаю неправильно с настройкой двух сетей?