I have been getting a strange behavior with Traefik immediately upon switching to an ACME DNS Wildcard Certificate. All of my applications load correctly and get their TLS certs, and several minutes later most of them lose connection. I get ERR_CONNECTION_REFUSED in a Chrome browser when trying to access them and the debug log does not show a connection attempt.
It's like Traefik is not serving my applications at all in that time, and it can be anywhere from a few seconds to a few hours before they become accessible again. The debug logs are completely normal showing only successful traffic.
at all times two of my applications work perfectly while all of the rest are down, the same two.
The most curious thing is cached pages. If I have one of the apps cached and keep it open it will communicate correctly through Traefik until I force refresh. This shows in the log as normal traffic.
Does anybody have any idea what may be happening? I am using ACME DNS, GoDaddy with the domains A records pointed toward my server. The CNAME record is set correctly and I can confirm this using dig _acme-challenge.myDomainOne.com
I have installed the latest docker and traefik versions attempting to troubleshoot this problem:
Rocky Linux 8.6 Kernel: 4.18.0-372.19.1.el8_6.x86_64
Docker Compose version v2.9.0
Docker version 20.10.17, build 100c701
Traefik v2.8.3
My docker-compose.yml
services:
portainer:
container_name: portainer
image: portainer/portainer
restart: unless-stopped
ports:
- 9000:9000
environment:
- PGID=1000
- PUID=1000
volumes:
- /home/myUser/.portainer:/data
- /var/run/docker.sock:/var/run/docker.sock
fail2ban:
container_name: fail2ban
restart: always
image: crazymax/fail2ban:latest
environment:
- F2B_DB_PURGE_AGE=30d
- F2B_LOG_TARGET=/f2b_logs/dropped.log
- F2B_LOG_LEVEL=INFO
- F2B_IPTABLES_CHAIN=INPUT
volumes:
- /home/myUser/.fail2ban:/data
- /home/myUser/.reverse_proxy/traefik/logs:/traefik/logs:ro
- /home/myUser/.fail2ban/logs:/f2b_logs/
- /home/myUser/.fail2ban/scripts:/scripts
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
network_mode: "host"
privileged: true
cap_add:
- NET_ADMIN
- NET_RAW
reverse-proxy:
image: traefik:latest
container_name: traefik
restart: unless-stopped
networks:
- rproxy
security_opt:
- no-new-privileges:true
ports:
- 80:80
- 443:443
environment:
- ACME_DNS_API_BASE=https://auth.acme-dns.io
- ACME_DNS_STORAGE_PATH=/acme/acme-dns_storage.json
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /home/myUser/.reverse_proxy/traefik/traefik.yml:/traefik.yml:ro
- /home/myUser/.reverse_proxy/traefik/config:/config
- /home/myUser/.reverse_proxy/traefik/logs:/logs
- /home/myUser/.reverse_proxy/traefik/acme:/acme
- /home/myUser/.reverse_proxy/traefik/certs:/certs
labels:
- "traefik.enable=true"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.traefik-secure.entrypoints=websecure"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.myDomainOne.co`)"
- "traefik.http.routers.traefik-secure.middlewares=traefik_panel-auth@file"
- "traefik.http.routers.traefik-secure.service=api@internal"
#########################################################
# myDomainOne Subdomains #
#########################################################
regexgenerator:
image: noxone/regexgenerator
container_name: regexgenerator
restart: unless-stopped
ports:
- "8186:80"
networks:
- rproxy
labels:
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.regexgen-secure.entrypoints=websecure"
- "traefik.http.routers.regexgen-secure.rule=Host(`regex.myDomainOne.co`)"
gitea:
image: gitea/gitea:1.16.9
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- rproxy
- gitea
volumes:
- /home/myUser/.gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3070:3070"
- "2272:22"
labels:
- "traefik.enable=true"
- "traefik.port=3070"
- "traefik.docker.network=rproxy"
- "traefik.http.services.gitea-secure.loadbalancer.server.port=3070"
- "traefik.http.routers.gitea-secure.entrypoints=websecure"
- "traefik.http.routers.gitea-secure.rule=Host(`git.myDomainOne.co`)"
bibliogram:
image: quay.io/pussthecatorg/bibliogram:latest
container_name: bibliogram
networks:
- rproxy
volumes:
- /home/myUser/.bibliogram/config.js:/app/config.js
- /home/myUser/.bibliogram/db:/app/db
ports:
- 10407:10407
depends_on:
- reverse-proxy
environment:
- UID=1000
- GID=1000
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.port=10407"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.bibliogram-secure.entrypoints=websecure"
- "traefik.http.routers.bibliogram-secure.rule=Host(`ig.myDomainOne.co`)"
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest}
container_name: rocketchat
restart: on-failure
environment:
PGID: 1000
PUID: 1000
MONGO_URL: mongodb://rocketchat-db:27017/rocketchat?replicaSet=rs0&ssl=false
MONGO_OPLOG_URL: mongodb://rocketchat-db:27017/local
ROOT_URL: https://rc.myDomainOne.co
PORT: 3000
Accounts_UseDNSDomainCheck: 'false'
depends_on:
- rocketchat-db
expose:
- 3000
ports:
- target: 3000
published: 3000
protocol: tcp
networks:
- rproxy
- rocketchat
labels:
- "traefik.enable=true"
- "traefik.port=3000"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.rocketchat-secure.entrypoints=websecure"
- "traefik.http.routers.rocketchat-secure.rule=Host(`rc.myDomainOne.co`)"
rocketchat-db:
image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-4.4}
container_name: rocketchat-db
restart: on-failure
volumes:
- /home/myUser/.rocketchat/db:/bitnami/mongodb
environment:
PGID: 1000
PUID: 1000
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb}
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}
MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb}
MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
networks:
- rocketchat
rocketchat-webdav:
image: bytemark/webdav
container_name: rocketchat-webdav
restart: always
networks:
- rocketchat
ports:
- "3080:80"
environment:
AUTH_TYPE: Digest
ANONYMOUS_METHOS: ALL
USERNAME: rocketchat
PASSWORD: password
volumes:
- /home/myUser/.rocketchat/files:/var/lib/dav
proxitok:
container_name: proxitok
image: quay.io/pussthecatorg/proxitok:latest
restart: unless-stopped
networks:
- rproxy
- tiktok
ports:
- "8181:80"
environment:
- "LATTE_CACHE=/cache"
- "API_CACHE=redis"
- "REDIS_HOST=proxitok-redis"
- "REDIS_PORT=6379"
- "API_SIGNER_URL=http://proxitok-signer:8080/signature"
volumes:
- "proxitok-cache:/cache"
depends_on:
- proxitok-redis
- proxitok-signer
labels:
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.tiktok-secure.entrypoints=websecure"
- "traefik.http.routers.tiktok-secure.rule=Host(`tiktok.myDomainOne.co`)"
proxitok-redis:
container_name: proxitok-redis
image: docker.io/redis:6-alpine
restart: unless-stopped
networks:
- tiktok
command: redis-server --save 60 1 --loglevel warning
proxitok-signer:
container_name: proxitok-signer
image: ghcr.io/pablouser1/signtok:master
networks:
- tiktok
nitter:
image: zedeus/nitter:latest
container_name: nitter
ports:
- "8182:8182"
volumes:
- type: bind
source: /home/myUser/.nitter/nitter.conf
target: /src/nitter.conf
depends_on:
- nitter-redis
restart: unless-stopped
networks:
- rproxy
- nitter
labels:
- "traefik.enable=true"
- "traefik.port=8182"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.twitter-secure.entrypoints=websecure"
- "traefik.http.routers.twitter-secure.rule=Host(`tweet.myDomainOne.co`)"
nitter-redis:
image: redis:6-alpine
container_name: nitter-redis
command: redis-server --save 60 1 --loglevel warning
volumes:
- nitter-redis:/data
restart: unless-stopped
networks:
- nitter
healthcheck:
test: redis-cli ping
interval: 30s
timeout: 5s
retries: 2
teddit:
container_name: teddit
image: teddit/teddit:latest
environment:
- DOMAIN=reddit.myDomainOne.co
- USE_HELMET=true
- USE_HELMET_HSTS=true
- TRUST_PROXY=true
- REDIS_HOST=teddit-redis
- THEME=nord
ports:
- "127.0.0.1:8185:8080"
networks:
- rproxy
- teddit
healthcheck:
test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost:8080/about"]
interval: 1m
timeout: 3s
depends_on:
- teddit-redis
labels:
- "traefik.enable=true"
- "traefik.port=8080"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.reddit-secure.entrypoints=websecure"
- "traefik.http.routers.reddit-secure.rule=Host(`reddit.myDomainOne.co`)"
teddit-redis:
container_name: teddit-redis
image: redis:6.2.5-alpine
command: redis-server
environment:
- REDIS_REPLICATION_MODE=master
networks:
- teddit
searxng:
container_name: searxng
image: searxng/searxng:latest
networks:
- searxng
- rproxy
volumes:
- /home/myUser/.searx:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=https://search.myDomainOne.co
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
labels:
- "traefik.enable=true"
- "traefik.port=8183"
- "traefik.docker.network=rproxy"
- "traefik.http.routers.searx-secure.entrypoints=websecure"
- "traefik.http.routers.searx-secure.rule=Host(`search.myDomainOne.co`)"
searx-redis:
container_name: searx-redis
image: "redis:alpine"
command: redis-server --save "" --appendonly "no"
networks:
- searxng
tmpfs:
- /var/lib/redis
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
#####################################
# myDomainOne.co DAMP #
# Docker Apache MariaDB PHP #
#####################################
myDomainOne_php:
build:
context: '/home/myUser/.myDomainOne/php/'
args:
- "PHP_VERSION=7.3"
networks:
- myDomainOne
volumes:
- /home/myUser/.myDomainOne/html:/var/www/html
- /home/myUser/.myDomainOne/logs:/logs
container_name: myUser_php
restart: always
myDomainOne_apache:
build:
context: '/home/myUser/.myDomainOne/apache/'
args:
- "APACHE_VERSION=2.4"
depends_on:
- myUser_php
- myUser_mariadb
networks:
- myDomainOne
- rproxy
ports:
- 5580:80
volumes:
- /home/myUser/.myDomainOne/html:/var/www/html
- /home/myUser/.myDomainOne/logs:/logs
container_name: myDomainOne_apache
restart: always
labels:
- "traefik.enable=true"
- "traefik.docker.network=rproxy"
- "traefik.port=80"
- "traefik.http.routers.myDomainOneapache-secure.entrypoints=websecure"
- "traefik.http.routers.myDomainOneapache-secure.rule=Host(`myDomainOne.co`) || Host(`www.myDomainOne.co`)"
myDomainOne_mariadb:
image: mariadb
restart: always
ports:
- 3306:3306
volumes:
- /home/myUser/.myDomainOne/mariadb:/var/lib/mysql
networks:
- myDomainOne
env_file: /home/myUser/.myDomainOne/myDomainOne.env
container_name: myDomainOne_mariadb
myDomainThreeca_wordpress:
image: wordpress
restart: always
depends_on:
- myDomainThree_mariadb
networks:
- myDomainThree
- rproxy
ports:
- 5680:80
env_file: /home/myUser/.myDomainThree/myDomainThree.env
volumes:
- /home/myUser/.myDomainThree/html:/var/www/html
container_name: myDomainThree_wordpress
labels:
- "traefik.enable=true"
- "traefik.docker.network=rproxy"
- "traefik.port=5680"
- "traefik.http.routers.myDomainThreeapache-secure.entrypoints=websecure"
- "traefik.http.routers.myDomainThreeapache-secure.rule=Host(`myDomainThree.ca`)"
- "traefik.http.routers.myDomainThreeapache-secure.tls.certResolver=le-dns_myDomainThree"
- "traefik.http.routers.myDomainThreeapache-secure.tls.domains[0].main=myDomainThree.ca"
- "traefik.http.routers.myDomainThreeapache-secure.tls.domains[0].sans=*.myDomainThree.ca"
- "traefik.http.middlewares.https-redirect.headers.sslproxyheaders.X-Forwarded-Proto=https"
myDomainThreeca_mariadb:
image: mariadb
restart: always
ports:
- 5606:3306
volumes:
- /home/myUser/.myDomainThree/mariadb:/var/lib/mysql
networks:
- myDomainThree_ca
env_file: /home/myUser/.myDomainThree/myDomainThree.env
container_name: myDomainThree_mariadb
volumes:
proxitok-cache:
nitter-redis:
networks:
meet.jitsi:
rproxy:
name: rproxy
external: true
myDomainOne:
myDomainThree:
tiktok:
name: tiktok
nitter:
name: nitter
searxng:
ipam:
driver: default
gitea:
external: false
rocketchat:
name: rocketchat
external: false
teddit:
name: rocketchat
external: false
My traefik.yml
api:
dashboard: true
entryPoints:
web:
address: :80
http:
redirections:
entryPoint:
to: websecure
websecure:
address: :443
http:
middlewares:
- secureHeaders@file
- nofloc@file
tls:
certResolver: le-dns_myDomainOne
domains:
- main: myDomainOne.co
sans:
- "*.myDomainOne.co"
log:
level: DEBUG
filePath: "/logs/debug.log"
accessLog:
filePath: "/logs/access.log"
bufferingSize: 100
filters:
statusCodes:
- "200"
- "300-302"
- "400-499"
retryAttempts: true
fields:
defaultMode: keep
names:
StartUTC: drop
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
file:
filename: /config/traefik_dynamic.yml
certificatesResolvers:
le-dns_myDomainOne:
acme:
caServer: https://acme-v02.api.letsencrypt.org/directory
email: myUser@protonmail.com
storage: /acme/acme-dns_myDomainOne.json
keyType: EC384
dnsChallenge:
delayBeforeCheck: 120
provider: acme-dns
le-dns_myDomainTwo:
acme:
caServer: https://acme-v02.api.letsencrypt.org/directory
email: myUser@protonmail.com
storage: /acme/acme-dns_myDomainTwo.json
keyType: EC384
dnsChallenge:
delayBeforeCheck: 120
provider: acme-dns
le-dns_myDomainThree:
acme:
caServer: https://acme-v02.api.letsencrypt.org/directory
email: myUser@protonmail.com
storage: /acme/acme-dns_myDomainThree.json
keyType: EC384
dnsChallenge:
delayBeforeCheck: 120
provider: acme-dns
My traefik_dynamic.yml
# Dynamic configuration
http:
middlewares:
nofloc:
headers:
customResponseHeaders:
Permissions-Policy: "interest-cohort=()"
secureHeaders:
headers:
sslRedirect: true
forceSTSHeader: true
stsIncludeSubdomains: true
stsPreload: true
stsSeconds: 31536000
traefik_panel-auth:
basicAuth:
users:
- "myUser:$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
plex-auth:
basicAuth:
users:
- "myUser:$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
jellyfin-auth:
basicAuth:
users:
- "myUser:$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
bw-stripPrefix:
stripPrefix:
prefixes:
- "/notifications/hub"
forceSlash: false
redirect-7dtd:
redirectRegex:
regex: "^https://7dtd.myDomainOne.co"
replacement: "steam://connect/7d.myDomainOne.co:26900"
7dtd-troubleshoot:
replacePath:
path: "/7dtd"
redirect-discord:
redirectRegex:
regex: "^https://discord.myDomainOne.co"
replacement: "https://discord.gg/xxxxxxxxxx"
routers:
jellyfin_p-router:
entrypoints:
- "websecure"
rule: "Host(`watch.myDomainOne.co`)"
service: "jellyfin1"
tls:
certResolver: "le-dns_myDomainOne"
7dtd-open-steam:
rule: "Host(`7dtd.myDomainOne.co`)"
middlewares:
- "redirect-7dtd@file"
- "7dtd-troubleshoot@file"
service: "7dtd-steam"
vaultwarden_web-router:
entrypoints:
- "websecure"
rule: "Host(`vault.myDomainOne.co`)"
service: "vaultwarden-web"
tls:
certResolver: "le-dns_myDomainOne"
vaultwarden_ws-router:
entrypoints:
- "websecure"
rule: "Host(`vault.myDomainOne.co`) && Path(`/notifications/hub`)"
middlewares:
- "bw-stripPrefix@file"
service: "vaultwarden-ws"
tls:
certResolver: "le-dns_myDomainOne"
freshrss-router:
entrypoints:
- "websecure"
rule: "Host(`rss.myDomainOne.co`)"
service: "freshrss-web"
tls:
certResolver: "le-dns_myDomainOne"
nextcloud_web-router:
entrypoints:
- "websecure"
rule: "Host(`docs.myDomainOne.co`)"
service: "nextcloud-web"
tls:
certResolver: "le-dns_myDomainOne"
nextcloud_collabora-router:
entrypoints:
- "websecure"
rule: "Host(`collabora.myDomainOne.co`)"
service: "nextcloud-collabora"
tls:
certResolver: "le-dns_myDomainOne"
discord-invite:
rule: "Host(`discord.myDomainOne.co`)"
middlewares:
- "redirect-discord@file"
service: "discord"
homer_r-router:
entrypoints:
- "websecure"
rule: "Host(`myDomainTwo.com`)"
service: "homer_r"
tls:
certResolver: "le-dns_myDomainTwo"
domains:
- main: myDomainTwo.com
sans:
- "*.myDomainTwo.com"
jellyfin_r-router:
entrypoints:
- "websecure"
rule: "Host(`pictures.myDomainTwo.com`)"
service: "jellyfin_r"
tls:
certResolver: "le-dns_myDomainTwo"
domains:
- main: myDomainTwo.com
sans:
- "*.myDomainTwo.com"
filebrowser_r-router:
entrypoints:
- "websecure"
rule: "Host(`files.myDomainTwo.com`)"
service: "filebrowser_r"
tls:
certResolver: "le-dns_myDomainTwo"
domains:
- main: myDomainTwo.com
sans:
- "*.myDomainTwo.com"
ombi-router:
entrypoints:
- "websecure"
rule: "Host(`request.myDomainOne.co`)"
service: "ombi"
tls:
certResolver: "le-dns_myDomainOne"
services:
jellyfin1:
loadBalancer:
servers:
- url: "http://192.168.1.55:8096"
7dtd-steam:
loadBalancer:
servers:
- url: "steam://connect/7d.myDomainOne.co:26900"
vaultwarden-web:
loadBalancer:
servers:
- url: "http://192.168.1.54:4480"
vaultwarden-ws:
loadBalancer:
servers:
- url: "http://192.168.1.54:3012"
freshrss-web:
loadBalancer:
servers:
- url: "http://192.168.1.54:8890"
nextcloud-web:
loadBalancer:
servers:
- url: "http://192.168.1.54:8888"
nextcloud-collabora:
loadBalancer:
servers:
- url: "http://192.168.1.54:8889"
discord:
loadBalancer:
servers:
- url: "https://discord.gg/xxxxxx"
jellyfin_r:
loadBalancer:
servers:
- url: "http://192.168.1.88:9055"
homer_r:
loadBalancer:
servers:
- url: "http://192.168.1.88:10000"
filebrowser_r:
loadBalancer:
servers:
- url: "http://192.168.1.88:9003"
ombi:
loadbalancer:
servers:
- url: "http://192.168.1.54:3579"
tls:
options:
default:
cipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
minVersion: VersionTLS12
There are generally no errors in the logs but I have found a few that happened at different times.
This error happened after I lost connection when the firefox extension vaultwarden tries to connect
time="2022-08-12T15:49:19-07:00" level=debug msg="Serving default certificate for request: \"\""
time="2022-08-12T15:49:19-07:00" level=debug msg="http: TLS handshake error from xxx.xxx.xxx.xxx:33014: local error: tls: bad record MAC"
time="2022-08-12T16:09:41-07:00" level=debug msg="vulcand/oxy/roundrobin/rr: completed ServeHttp on request" Request="{\"Method\":\"GET\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"\",\"RawPath\":\"\",\"OmitHost\":false,\"ForceQuery\":false,\"RawQuery\":\"access_token=LONG_TOKEN_HERE",\"Fragment\":\"\",\"RawFragment\":\"\"},\"Proto\":\"HTTP/1.1\",\"ProtoMajor\":1,\"ProtoMinor\":1,\"Header\":{\"Accept\":[\"*/*\"],\"Accept-Encoding\":[\"gzip, deflate, br\"],\"Accept-Language\":[\"en-US,en;q=0.5\"],\"Cache-Control\":[\"no-cache\"],\"Connection\":[\"Upgrade\"],\"Dnt\":[\"1\"],\"Origin\":[\"moz-extension://0b3e9d11-80f6-4619-ba3a-1d79d33f7b8a\"],\"Pragma\":[\"no-cache\"],\"Sec-Fetch-Dest\":[\"websocket\"],\"Sec-Fetch-Mode\":[\"websocket\"],\"Sec-Fetch-Site\":[\"same-origin\"],\"Sec-Websocket-Extensions\":[\"permessage-deflate\"],\"Sec-Websocket-Key\":[\"RdfjklPj8Lj3==\"],\"Sec-Websocket-Version\":[\"13\"],\"Upgrade\":[\"websocket\"],\"User-Agent\":[\"Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0\"],\"X-Forwarded-Host\":[\"vault.myDomainOne.co\"],\"X-Forwarded-Port\":[\"443\"],\"X-Forwarded-Prefix\":[\"/notifications/hub\"],\"X-Forwarded-Proto\":[\"wss\"],\"X-Forwarded-Server\":[\"ec239a541748\"],\"X-Real-Ip\":[\"xxx.xxx.xxx.xxx\"]},\"ContentLength\":0,\"TransferEncoding\":null,\"Host\":\"vault.myDomainOne.co\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"xxx.xxx.xxx.xxx:36262\",\"RequestURI\":\"/?access_token=LONG_TOKEN_HERE",\"TLS\":null}"
Here is another that occasionally comes up:
time="2022-08-12T16:41:12-07:00" level=debug msg="http: TLS handshake error from xxx.xxx.xxx.xxx:34988: tls: client offered only unsupported versions: [302 301]"
and another:
time="2022-08-12T17:39:55-07:00" level=debug msg="http: TLS handshake error from xxx.xxx.xxx.xxx:50250: EOF"
These TLS errors only happen after connection is lost.
This may be a problem with my system but I suspect something with certificates is amiss. I have refreshed and recreated the .json files a hundred times to no avail. The fact that two of my apps work at all times suggests to me that there is something wrong with Traefik. These happen to be the latest two installed apps.
I will post more logs as I find them.