WSS to WS в traefik не работает с изображением фантомба - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь обслуживать док-версию фантомба с traefik, и пусть traefik обрабатывает сертификаты для ssl. Поскольку phantombot использует веб-сокет, к самому веб-сокету можно получить доступ только через wss при внешнем подключении, но во внутренней сети он указан как ws, поскольку phantombot работает в режиме http.

Я попытался создать точку входа в порт 82 для wss, который выглядит так в toml:

[entryPoints.panel]
 adress = ":82"
 [entryPoints.panel.tls]
 [[entryPoints.panel.tls.certificates]]
  certFile = "/cert.pem"
  keyFile = "/privkey.pem"

И соответствующие ярлыки в docker-compose бота:

  - traefik.panel.frontend.rule=Host:my.domain.com
  - traefik.panel.frontend.entryPoints=panel
  - traefik.panel.frontend.protocol=ws
  - traefik.panel.port=82

Открытые порты на контейнере для бота:

expose:
  - 80
  - 81
  - 82

Я пытался изменить протоколы, сделать ловушку, но, похоже, ничего не работает. Каждый раз, когда я пытаюсь подключиться, я получаю сообщение об ошибке в браузере о том, что wss: //my.domain.com: 82 / не отвечает, и HTTP (500): Broken Pipe в интерфейсе бота. Я в конце моего ума. Было бы хорошо, если бы кто-то мог помочь мне:)

Редактировать: docker-compose of traefik

version: '3'

services:

  traefik:
    image: traefik:latest
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
      - "81:81"
      - "82:82"
    networks:
      - web
    volumes:
      - ./traefik.toml:/etc/traefik/traefik.toml
      - ./traefik.log:/etc/traefik/traefik.log
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/letsencrypt/live/my.domain.com/cert.pem:/cert.pem
      - /etc/letsencrypt/live/my.domain.com/privkey.pem:/privkey.pem

    labels:
      - traefik.frontend.rule=Host:monitor.my.domain.com
      - traefik.port=8080
      - traefik.docker.network=web
      - traefik.enable=true
      - traefik.frontend.auth.basic.users=user:pass

networks:
  web:
    external: true

Трафик Томль:

# uncomment this line to get debug info with "docker logs":
#debug = true

defaultEntryPoints = ["https","http"]
[traefikLog]
  filePath = "/etc/traefik/traefik.log"
  format   = "json"

# The syntax is somewhat esoteric so this is mostly copy-paste
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
      certFile = "/cert.pem"
      keyFile = "/privkey.pem"
  [entryPoints.ytplayer]
     adress = ":81"
     [entryPoints.ytplayer.tls]
        minVersion = "VersionTLS12"
        cipherSuites = [
           "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
           "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
           "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
        ]
        sniStrict = true
        OSCPMustStaple = true
       [[entryPoints.ytplayer.tls.certificates]]
          certFile = "/cert.pem"
          keyFile = "/privkey.pem"
  [entryPoints.panel]
     adress = ":82"
     [entryPoints.panel.tls]
        minVersion = "VersionTLS12"
        cipherSuites = [
           "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
           "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
           "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
        ]
     sniStrict = true
     OSCPMustStaple = true
     [[entryPoints.panel.tls.certificates]]
      certFile = "/cert.pem"
      keyFile = "/privkey.pem"


[docker]
    endpoint = "unix:///var/run/docker.sock"
    domain = "morellenoir.de"
    watch = true
    exposedbydefault = false

# enable web configuration backend.
[web]

# Web administration port, proxied in docker-compose.yml
address = ":8080"

1 Ответ

0 голосов
/ 12 мая 2019
#traefik configuration
defaultEntryPoints = ["https","http"]
[api]
  entryPoint = "traefik"
  dashboard = true
  address = ":8080"

[entryPoints]
  [entryPoints.http]
  address = ":80"
  compress = true
...