Files
hassio-addons/portainer/CHANGELOG.md
Alexandre ca0f78f10e fix(portainer): request identity encoding on the ingress listener (#2943)
* fix(portainer): request identity encoding on the ingress listener

Portainer compresses its own responses, so every response reached Home
Assistant's ingress relay gzipped and chunked, with no Content-Length.
Both relay hops (Supervisor api/ingress.py and Core hassio/ingress.py)
only take their buffered path for responses carrying a Content-Length
under 4 MB; everything else goes through the streaming path, where an
aiohttp error surfaces to the browser as 502 Bad Gateway even though the
add-on's own nginx logged a 200.

proxy_params.conf already stripped Accept-Encoding, but the location
block declares its own proxy_set_header directives, and nginx discards
every server-level proxy_set_header once a location sets any of its own
(the comment above those lines warns about exactly this). The strip was
therefore dead config.

The same server block serves both the ingress listener and the direct
web UI port, so the strip is scoped through a map on $server_port:
ingress gets identity, direct access keeps compression. The map keys on
the direct-access port rather than the templated ingress port, so the
default stays correct if the ingress port ever changes.

Verified with a local nginx against the live Portainer backend:
- ingress listener, client sending "Accept-Encoding: gzip, deflate"
  -> identity, Content-Length: 14203
- direct listener, same request -> Content-Encoding: gzip, chunked
- direct listener, no Accept-Encoding -> identity, Content-Length
- websocket upgrade through ingress still reaches Portainer (401 auth)
- nginx -t passes for both the ssl and non-ssl rendered variants

Partial mitigation only: vendor.js (5.7 MB) and main.js (7.0 MB) exceed
the 4 MB buffering threshold uncompressed and still stream. This
supersedes 2.43.0.1, which disabled nginx's own gzip module rather than
the compressor that was actually running.

Refs #2766

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(portainer): request identity explicitly on the ingress listener

Address review feedback: use "identity" rather than an empty value as
the map default. Both were verified to produce identity responses with a
Content-Length from Portainer, and both leave direct access on 9099
compressed, but "identity" states the intent explicitly instead of
relying on the server's choice when no Accept-Encoding is present.

Also reword the changelog entry for readability.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 22:48:26 +02:00

12 KiB

2.44.0.1 (2026-08-05)

  • Ingress: request uncompressed responses from Portainer so they carry a Content-Length and stay on the Home Assistant relay's buffered path. Portainer compresses its own responses, and the Accept-Encoding strip in proxy_params.conf never applied because the location block declares its own proxy_set_header directives, which makes nginx discard the server-level ones. Partial mitigation for #2766: the page itself and all assets under 4 MB are now buffered, but the two large JavaScript bundles still exceed the relay's 4 MB buffering threshold. Direct access on the web UI port keeps compression

2.44.0 (2026-08-01)

2.43.0.1 (2026-07-24)

  • Ingress: disable nginx gzip re-compression of proxied responses so Home Assistant relays them via the buffered path (addresses 502 Bad Gateway via ingress, #2766)

2.43.0 (2026-06-27)

2.42.0 (2026-05-22)

2.41.1 (2026-05-16)

2.41.0 (2026-05-02)

2.40.0 (2026-03-28)

2.39.1 (2026-03-21)

2.39.0 (2026-02-28)

2.38.1 (2026-02-14)

2.38.0 (2026-01-30)

2.37.0-2 (2026-01-02)

  • Improve Docker socket detection with fallback path logging
  • Stop startup when no Docker socket is available

2.37.0 (2025-12-13)

2.36.0 (2025-11-29)

2.33.4 (2025-11-22)

"2.35.0" (2025-10-18)

  • Minor bugs fixed

2.35.0 (2025-10-18)

2.34.0 (2025-09-20)

2.33.1 (2025-08-30)

2.33.0 (2025-08-23)

2.32.0-7 (2025-08-13)

  • Fix ingress by clearing conflicting security headers

2.32.0-6 (2025-07-25)

2.31.3 (2025-07-05)

2.31.2-6 (2025-07-03)

  • Minor bugs fixed

2.31.2-5 (2025-06-29)

  • Minor bugs fixed

2.31.2-4 (2025-06-28)

  • Improved nginx fix @lmagyar

2.31.2-2 (2025-06-28)

  • Fixed origin error with ssl

2.31.2 (2025-06-28)

2.31.1 (2025-06-21)

2.31.0 (2025-06-13)

2.30.1-2 (2025-05-30)

  • Map internal /config to allow for custom scripts execution and variables
  • Fix invalid origin

2.30.1 (2025-05-24)

2.30.0 (2025-05-17)

2.29.2 (2025-04-26)

2.29.0 (2025-04-19)

2.28.1 (2025-03-22)

2.27.1 (2025-03-01)

2.27.0 (2025-02-21)

2.26.1 (2025-01-25)

2.26.0 (2025-01-18)

2.25.1 (2024-12-21)

2.24.1 (2024-12-07)

2.24.0 (2024-11-23)

2.23.0 (2024-10-19)

2.22.0-3 (2024-10-06)

  • WARNING : logic change for new installations. Type "empty" in the PASSWORD of the addon to reset the database and have a clean initial set-up. Used for example to restore backups

2.22.0 (2024-10-05)

2.21.2 (2024-09-28)

2.21.1 (2024-09-14)

2.21.0 (2024-08-31)

2.20.1 (2024-04-13)

2.20.0 (2024-03-23)

  • Update to latest version from portainer/portainer

2.19.4-3 (2023-12-11)

  • Minor bugs fixed
  • When database is reset, the previous one is stored in /share/portainer*$(date +%m-%d-%Y)*$RANDOM".backup. In case of unwanted database wipe, you can therefore restore it from the portainer options

2.19.4 (2023-12-09)

  • Update to latest version from portainer/portainer

2.19.3 (2023-11-25)

  • Update to latest version from portainer/portainer

2.19.2-3 (2023-11-21)

  • Minor bugs fixed

2.19.2 (2023-11-18)

  • Update to latest version from portainer/portainer

2.19.1 (2023-09-23)

  • Update to latest version from portainer/portainer

2.19.0 (2023-09-09)

  • Update to latest version from portainer/portainer

2.18.4 (2023-07-08)

  • Update to latest version from portainer/portainer

2.18.3 (2023-05-27)

  • Update to latest version from portainer/portainer

2.18.2 (2023-05-06)

  • Update to latest version from portainer/portainer

2.18.1 (2023-04-21)

  • Update to latest version from portainer/portainer
  • Feat : addition of Micro Editor to all addons

2.17.1-9 (2023-03-11)

  • Minor bugs solved
  • Revert : disable healthcheck (caused unhealthy status)

2.17.1-8 (2023-03-11)

  • Minor bugs solved
  • Improve healthcheck with /api/status

2.17.1-6 (2023-03-11)

  • Implemented healthcheck
  • Rollback implementation of s6-rc.d from 2.17.1-4 to 2.17.1-2 due to reported issues with addon entities reporting

2.17.1 (2023-02-25)

  • Update to latest version from portainer/portainer

2.17.0 (2023-02-11)

  • Update to latest version from portainer/portainer
  • WARNING : update to supervisor 2022.11 before installing

2.16.2 (2022-11-22)

  • Update to latest version from portainer/portainer

2.16.1 (2022-11-11)

  • Update to latest version from portainer/portainer

2.16.0 (2022-11-01)

  • Update to latest version from portainer/portainer

2.15.1 (2022-09-17)

  • Update to latest version from portainer/portainer

2.15.0 (2022-09-09)

  • Update to latest version from portainer/portainer

2.14.2 (2022-07-28)

  • Update to latest version from portainer/portainer

2.14.1 (2022-07-14)

  • Update to latest version from portainer/portainer

2.14.0 (2022-06-30)

  • Update to latest version from portainer/portainer

2.13.1 (2022-05-12)

  • BREAKING CHANGE : database is reset and password reset to homeassistant (new portainer stronger password requirement)
  • Update to latest version from portainer/portainer

2.13.0 (2022-05-10)

  • Update to latest version from portainer/portainer
  • Add codenotary sign
  • Reduce backup size (thanks @lmagyar)

2.11.1 (2022-02-10)

  • Update to latest version from portainer/portaine@

2.11.0 (2022-02-08)

  • Update to latest version from portainer/portainer

2.11.1 (2022-02-08)

  • Update to latest version from portainer/portainer
  • New standardized logic for Dockerfile build and packages installation
  • Improve architecture detection

2.11.0 (2021-12-09)

  • Update to latest version from portainer/portainer

2.9.3 (2021-11-22)

  • Update to latest version from portainer/portainer

2.9.2 (2021-10-28)

  • Update to latest version from portainer/portainer
  • password: define admin password. If kept blank, will allow manual restore of previous backup put in /share

2.9.1 (2021-10-11)

  • Update to latest version from portainer/portainer
  • Enabled https access on same port as http when activating ssl

2.9.0 (2021-09-25)

  • Update to latest version from portainer/portainer
  • Enable stream mode

2.6.3 (2021-08-28)

  • Update to latest version from portainer/portainer

2.6.2 (2021-08-07)

  • Update to latest version from portainer/portainer

2.6.3 (2021-08-07)

  • Update to latest version from lastversion-test-repos/portainer

2.6.2 (2021-08-02)

  • Update to latest version from portainer/portainer

2.6.2 (2021-07-31)

  • Update to latest version from portainer/portainer

2.6.2 (2021-07-30)

  • Update to latest version from portainer/portainer

2.6.1 (2021-07-10)

  • Update to latest version from portainer/portainer

2.6.0 (2021-06-25)

  • Update to latest version from portainer/portainer

2.5.1 (2021-05-28)

  • Update to latest version from portainer/portainer

2.5.0 (2021-05-25)

  • Update to latest version from portainer/portainer
  • Update to latest version from portainer/portainer
  • ssl
  • ingress with nginx
  • password setting through addon option
  • webui