Skip to content

[Bug]: Unable to update firmware using port 443 #262

@cdonovan

Description

@cdonovan

Describe the Bug

I'm not totally sure if this is a bug with the container or controller software itself. I've been running the docker container and accessing it via Traefik using the default management port (8043) for a while. Using some redirect/header modification rules in Traefik, I don't have any issues updating device firmware. However, I recently switched to using port 443 as the management port to simplify my Traefik config. After the switch, device firmware updates stopped working. The file starts uploading but never seems to complete and eventually times out after 10 minutes.

I wound up reverting my Traefik/Omada updates, so it was using port 8043 again, and once I did that, the firmware update completed successfully. At this point, I feel like the issue is likely related to the Omada software, but when I brought it up on their forum, I was advised to come here instead.

Expected Behavior

Device firmware updates should complete successfully.

Steps to Reproduce

  1. Run the docker container/omada software on port 443
  2. Access via a reverse proxy such as Traefik
  3. Start a device firmware update

How You're Launching the Container

omada:
  container_name: omada
  image: mbentley/omada-controller:5.6
  restart: unless-stopped
  ports:
    - 8088:8088
    - 8843:8843
    - 29810:29810/udp
    - 29811:29811
    - 29812:29812
    - 29813:29813
    - 29814:29814
  environment:
    - PUID=1000
    - PGID=1000
    - MANAGE_HTTPS_PORT=443
    - TZ=America/Los_Angeles
  volumes:
    - ./omada/data:/opt/tplink/EAPController/data
    - ./omada/work:/opt/tplink/EAPController/work
    - ./omada/logs:/opt/tplink/EAPController/logs
  sysctls:
    - net.ipv4.ip_unprivileged_port_start=0
  labels:
    traefik.http.routers.omada.rule: Host(`omada.home.lan`)
    traefik.http.routers.omada.entrypoints: web-secure
    traefik.http.services.omada.loadbalancer.server.scheme: https
    traefik.http.services.omada.loadbalancer.server.port: 443
    traefik.http.services.omada.loadbalancer.serversTransport: ignoreSSL@file

Container Logs

10-28-2022 10:56:50.622 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.DeviceUpgradeStaticTask(): upgrade task upgradeId [x] of OmadacId(x) is running...
10-28-2022 10:56:50.666 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.g(): wait for all switch check file complete, upgradeId[x] deviceCount[1]
10-28-2022 10:56:55.622 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.DeviceUpgradeStaticTask(): upgrade task upgradeId [x] of OmadacId(x) is running...
10-28-2022 10:56:55.666 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.g(): wait for all switch check file complete, upgradeId[x] deviceCount[1]
10-28-2022 10:57:00.622 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.DeviceUpgradeStaticTask(): upgrade task upgradeId [x] of OmadacId(x) is running...
10-28-2022 10:57:00.623 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.DeviceUpgradeStaticTask(): v2 device macx of omadacIdx upgradeIdx finished upgrade process in FIRMWARE_DOWNLOAD_FAILED
10-28-2022 10:57:00.631 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.c.c(): OmadacId(x)  upgradeId[x] DeviceMac(x) upgrade status change from[false] to [true]
10-28-2022 10:57:00.635 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.DeviceUpgradeStaticTask(): OmadacId(x) upgrade[id=x] finish.
10-28-2022 10:57:00.638 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.DeviceUpgradeStaticTask(): upgrade task upgradeId [x] of OmadacId(x) is finished
10-28-2022 10:57:00.641 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.c.c(): OmadacId(x) upgradeId[x] releaseUpgradeCatelog finished
10-28-2022 10:57:00.666 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.g(): wait for all switch check file complete, upgradeId[x] deviceCount[1]
10-28-2022 10:57:00.669 INFO [comm-pool-14] [] c.t.s.o.m.d.d.m.u.t.g(): all switch check file complete, upgradeId[x] check ok device count[0], start reboot

Additional Context

I'd like to try running the controller software natively, but on port 443 to try and rule out Docker or Traefik as the culprit, but am not sure how easy it would be to convert the docker install to bare-metal. Would it be just installing the native client (probably on a spare machine) and copying the three bind mount folders to the same locations after the install is complete?

Metadata

Metadata

Assignees

Labels

questionFurther information is requested

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions