Hello guys I have docker swarm cluster and traefik is my reverse proxy routing request and service on my cluster I deploy recently odoo v16 and I have a big problem because I receive constantly get this error "GET /websocket HTTP/1.1" 400, I need help is someone solved this problem. Thank you.
Share your Traefik static and dynamic config, and docker-compose.yml
if used.
yes of course:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1988, in call
response = request._serve_db()
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1583, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 134, in retrying
result = func()
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1610, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1724, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "/usr/lib/python3/dist-packages/odoo/addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 696, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/usr/lib/python3/dist-packages/odoo/addons/bus/controllers/websocket.py", line 23, in websocket
return WebsocketConnectionHandler.open_connection(request)
File "/usr/lib/python3/dist-packages/odoo/addons/bus/websocket.py", line 814, in open_connection
Websocket(request.httprequest.environ['socket'], request.session),
KeyError: 'socket'
2023-06-15 08:57:22,540 16 INFO odoo16 werkzeug: 188.26.212.144 - - [15/Jun/2023 08:57:22] "GET /websocket HTTP/1.1" 500 - 28 1.378 1.835
labels in compose
labels:
- "traefik.enable=true"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.rule=Host(${URL_DEPLOY})"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.service=${NAME_SERVICE_TRAEFIK}@docker"
- "traefik.http.services.${NAME_SERVICE_TRAEFIK}.loadbalancer.server.port=8069"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.entrypoints=https"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.tls=true"
- "traefik.docker.network=traefik-swarm"
##
websocket work 8072 port
I try with all this labels:
##########################################
#Create a middleware named "websocket-middleware" this middleware sets the necessary headers
#to support connections WebSocket:
#Upgrade, Connection, X-Forwarded-Host, X-Forwarded-For, X-Forwarded-Proto y X-Real-IP
- "traefik.http.middlewares.websocket-middleware.headers.customRequestHeaders.Upgrade=websocket"
- "traefik.http.middlewares.websocket-middleware.headers.customRequestHeaders.Connection=upgrade"
- "traefik.http.middlewares.websocket-middleware.headers.customRequestHeaders.X-Forwarded-Host={host}"
- "traefik.http.middlewares.websocket-middleware.headers.customRequestHeaders.X-Forwarded-For={clientHost}"
- "traefik.http.middlewares.websocket-middleware.headers.customRequestHeaders.X-Forwarded-Proto={scheme}"
- "traefik.http.middlewares.websocket-middleware.headers.customRequestHeaders.X-Real-IP={remoteAddr}"
#Create routers "livechat-router" route WebSocket requests to the Odoo application.
#The router is configured to match any request with the route starting with "/websocket/livechat"
#- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.rule=PathPrefix(/websocket/im_livechat
)" #
#- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.middlewares=websocket-middleware"
#- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.entrypoints=https"
#- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.service=im_livechat.channel"
#Create routers "mail.channel" route WebSocket requests to the Odoo application.
#The router is configured to match any request with the route starting with "/websocket/notifications"
- "traefik.http.routers.websocket-middleware.rule=Host(${URL_DEPLOY}
) && PathPrefix(/websocket/
)"
- "traefik.http.routers.websocket-middleware.middlewares=websocket-middleware"
- "traefik.http.routers.websocket-middleware.entrypoints=https"
- "traefik.http.routers.websocket-middleware.tls=true"
- "traefik.http.routers.websocket-middleware.service=websocket-middleware@docker"
- "traefik.http.services.websocket-middleware.loadbalancer.server.port=8072"
Please format your code using 3 backticks before and after or using the </>
button on selected text. Especially in yaml format every space matters.
actually this are my labels on compose
labels:
# # global config
- "traefik.enable=true"
- "traefik.docker.network=traefik-swarm"
# # main routers 8069 web rule "/*"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.tls=true"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.entrypoints=https"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.rule=Host(`${URL_DEPLOY}`)" -"traefik.http.routers.${NAME_SERVICE_TRAEFIK}.service=${NAME_SERVICE_TRAEFIK}@docker"
- "traefik.http.routers.${NAME_SERVICE_TRAEFIK}.middlewares=gzip"
- "traefik.http.services.${NAME_SERVICE_TRAEFIK}.loadbalancer.server.port=8069"
# # main routers 8072 websocket rule "/websocket"
- "traefik.http.routers.backend-websock.tls=true"
- "traefik.http.routers.backend-websock.entrypoints=https"
- "traefik.http.routers.backend-websock.rule=Path(`/websocket`)"
- "traefik.http.routers.backend-websock.middlewares=upgradeheader,gzip"
- "traefik.http.routers.backend-websock.service=backend-websock@docker"
- "traefik.http.services.backend-websock.loadbalancer.server.port=8072"
# # upgrade headers
- "traefik.http.middlewares.upgradeheader.headers.customRequestHeaders.Upgrade=websocket"
- "traefik.http.middlewares.upgradeheader.headers.customRequestHeaders.Connection=Upgrade"
- "traefik.http.middlewares.upgradeheader.headers.hostsproxyheaders=websocket,Upgrade"
# - "traefik.http.middlewares.upgradeheader.headers.forcestsheader=true"
# # gzip compress
- "traefik.http.middlewares.gzip.compress=true"
this is a error logs from odoo service on docker
"GET /websocket HTTP/1.1" 400 - 5 0.032 0.084
"POST /mail/rtc/session/update_and_broadcast HTTP/1.1" 200 - 14 0.238 0.247
"POST /mail/rtc/session/update_and_broadcast HTTP/1.1" 200 - 12 0.075 0.223
"GET /websocket HTTP/1.1" 400 - 2 0.016 0.052
"POST /mail/channel/ping HTTP/1.1" 200 - 17 0.788 0.287
You can reproduce this error is very easy only deploy a traefik and odoo v16 in docker-compose.yml, and the problem come
Try
.backend-websock.rule=Path(`/websocket`) && Host(`${URL_DEPLOY}`
Thank you so much I will do some test, for the moment it work
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.