Матричный (синапс) домашний сервер с Traefik и Let's Encrypt

Мне бы очень хотелось запустить матричный сервер (синапс), используя traefik для LetsEncrypt. Кроме того, я бы счел желательным, если бы в сети был полный пример, актуальный в середине 2020 года:-), чтобы другим было легче это настроить.

Я, к сожалению, провел безнадежные дни в этой теме. Я был бы очень признателен, если бы кто-нибудь мог помочь.

Что я хочу получить (один докер-контейнер на маркер):

  • Traefik (как обратный прокси, чтобы не предоставлять отдельные сервисы напрямую внешним портам; для обработки Let's Encrypt)
  • Synapse (как первая цель установки, чтобы запустить базовую службу; если возможно, как один докер-компоновщик с SQL-сервером)
  • позже: бунт как локальная установка

Одна из моих проблем, похоже, заключается в том, что способ конфигурации контейнеров (Traefik, Synapse?) Изменился за последние 12 месяцев, так что шаблоны в сети, похоже, сейчас можно использовать. Я натыкаюсь на синтаксические ошибки, когда использую шаблоны в сети, особенно для Traefik/docker.

Что я сделал:

Структура каталогов для Traefik:

matrix.myhost.de:/var/docker_data/traefik# ls -l
-rw-r--r-- 1 root root    0 Jun 11 18:26 acme.json
-rw-r--r-- 1 root root 1552 Jun 13 13:24 docker-compose.yml
-rw-r--r-- 1 root root  563 Jun 13 13:22 traefik.toml

Docker-compose для Traefik:

matrix.myhost.de:/var/docker_data/traefik# cat docker-compose.yml 
version: '3'

services:

    traefik:
        image: traefik:latest
        container_name: traefik

    ports:
        - "80:80"
        - "8080:8080"
        - "443:443"

    volumes:
        - /var/run/docker.sock:/var/run/docker.sock
        - /var/docker_data/traefik:/etc/traefik

    labels:
        - traefik.frontend.rule=Host:traefik.myhost.de
        - traefik.frontend.entryPoints=https
        - traefik.port=8080
        - traefik.frontend.auth.basic=admin:somePW
        - traefik.backend=traefik

Конфигурация для Traefik:

matrix.myhost.de:/var/docker_data/traefik# cat traefik.toml 
logLevel = "DEBUG"

defaultEntryPoints = ["http", "https"]

[entryPoints]

[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint="https"
[entryPoints.https]
address = ":443"
#  [entryPoints.https.tls]

[api]
dashboard = true
insecure = true

[certificateResolvers.http.acme]
email = "post@myaddress.de"
storage = "/etc/traefik/acme.json"
entryPoint = "http"
onHostRule = true
acmeLogging =true

[acme.httpChallenge]
entryPoint = "http"

[providers.docker]
    endpoint = "unix:///var/run/docker.sock"
    exposedByDefault = false

Docker-compose для Synapse:

matrix.myhost.de:/var/docker_data/matrix# cat docker-compose.yml 
version: '3.3'

services:
    app:
        image: matrixdotorg/synapse
        restart: always
        volumes:
            - /var/docker_data/matrix:/data
    labels:
        - "traefik.frontend.entryPoints=http,https"
        - "traefik.port=8008"
        - "traefik.backend=matrix"
        - "traefik.frontend.rule=Host:matrix.myhost.de"

    container_name: matrix

DNS:

matrix.myhost.de и traefik.myhost.de указывают на IP-адрес моего сервера. Для матрицы есть дополнительная запись srv (которая, надеюсь, будет правильной?)

matrix.myhost.de

A: 81.169.XXX.YYY
SRV: _matrix._tcp.matrix 0 10 443 matrix.myhost.de.

traefik.myhost.de
A: 81.169.XXX.YYY

Чего я ожидал:

После "docker-compose up" в каталогах matrix и traefik traefik автоматически регистрирует сайт в Let's Encrypt, я вижу несколько веб-страниц на traefik.myhost.de / matrix.myhost.de и могу их настроить.

Что происходит:

После "docker-compose up" в каталоге matrix и traefik я не получаю сообщений об ошибках от обоих.

НО:

  1. Вопрос http://traefik.myhost.de:8080/dashboard/ отвечает на панели инструментов
  2. Вопрос http://matrix.myhost.de:8008/ Я не получаю ответа
  3. Запрашивая http://matrix.myhost.de/ Я получаю "404 не найден"
  4. Вопрос http://matrix.myhost.de:443/ Я получаю ошибку сертификата и - после подтверждения - "404 не найден"

Похоже, у меня уже проблемы с Traefik или связью с контейнером матрицы. Но я не понимаю, что именно.

У кого-нибудь есть 2центы?

1 ответ

Похоже, вы используете синтаксис конфигурации для traefik v1.7, который не будет работать с образом traefik: latest. Правило заголовка хоста для версии 2 будет выглядеть так: traefik.http.routers.routername.rule = Host (example.com)

https://docs.traefik.io/routing/routers/

Также не используйте:

[api]insecure = true

Для всего, что будет общедоступным.

Другие вопросы по тегам