Files
hassio-addons/sabnzbd/CHANGELOG.md
Alexandre 8341e542fb feat(sabnzbd): enable Home Assistant ingress (#3019)
* feat(sabnzbd): enable Home Assistant ingress

The add-on already carried a complete but disabled nginx ingress scaffold:
`etc/nginx/` with its includes and a `servers/ingress.conf`, a
`cont-init.d/32-nginx_ingress.sh` short-circuited by `exit 0`, and
`ENV PACKAGES="nginx"` in a Dockerfile byte-identical to nzbget's. Only
`ingress: true` and the s6 service that starts nginx were missing.

What SABnzbd 5.1.1 actually needs from the proxy, measured against the
running add-on rather than assumed:

- Its interface emits only relative links (`href="../../config/general/"`,
  `href="../../staticcfg/css/Auto.css"`, `action="./one"`), and grepping the
  5.1.1 source for `(href|src|action)="/` across `interfaces/{Glitter,Config,
  wizard}` and for absolute `url:` literals in the Glitter JavaScript returns
  nothing. A plain pass-through proxy preserves path depth, so no `sub_filter`
  is warranted. The previous config's `sub_filter /sabnzbd ...` would also have
  mangled the `https://sabnzbd.org/wiki/...` help links present on every
  config page.
- Redirects are the one exception: `Raiser()` prefixes `cfg.url_base()`, so
  `GET /` answers `303 Location: /sabnzbd/wizard/`. One `proxy_redirect`
  handles every observed case; all of them were path-absolute, never a full
  URL. Login redirects and logout go through the same `Raiser()`, and the
  session cookie's path is hardcoded to `/` (`interface.py:316`), so it is
  still sent under the ingress path.
- SABnzbd rejects a Host header that is not an IP literal:
  `Host: homeassistant` answers 403 "Hostname verification failed", while
  `Host: 192.168.1.5:8123` answers 200. nginx therefore sends `$proxy_host`
  instead of including the shared `proxy_params.conf`, which forwards
  `$http_host`.

`ingress_entry: sabnzbd` is dropped rather than kept: Supervisor appends it to
the ingress URL, which only resolves while the user's `url_base` is literally
`/sabnzbd`, and that is a setting they can change. SABnzbd serves the same
interface at `/` as under its `url_base` (verified for `/config/general/`,
`/static/`, `/staticcfg/` and `/wizard/`), so entering at the ingress root
works for any value, including the empty code default.

Ingress traffic reaches SABnzbd as `127.0.0.1:8080` and so is not filtered by
a user's host whitelist; direct ip:port access is unchanged and still is.

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

* fix(sabnzbd): keep the ingress Location relative and scope the login cookie

Exercising the shipped config against the running add-on caught a bug that
reading it did not. With nginx's default `absolute_redirect on`, rewriting
`Location: /sabnzbd/wizard/` produced
`http://homeassistant.local:18099/api/hassio_ingress/<token>/sabnzbd/wizard/`
— nginx expands a scheme-less replacement using the browser's Host and its own
listen port, which is the add-on's internal ingress port and is not reachable
from the browser. `absolute_redirect off` keeps it a path, which the browser
resolves against the Home Assistant origin.

`proxy_cookie_path` comes from Codex's review of the diff. SABnzbd hardcodes
the login cookie to `Path=/` (`interface.py:316`), so on the shared ingress
origin the browser would send it to every other add-on's ingress path as well.

Verified end to end by running the shipped nginx.conf and ingress.conf against
the live add-on, with the browser Host set to a non-IP hostname throughout:
all five redirect cases return a path under the ingress entry, the config
pages, wizard, API and both static roots return 200, and a stub upstream
emitting `Path=/` comes back rewritten to the ingress path.

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

* fix(sabnzbd): drop webui, which the add-on linter forbids alongside ingress

frenck/action-addon-linter fails the PR with "'webui' should be removed,
Ingress is enabled." No other ingress add-on in this repo keeps the key. The
"Open Web UI" button now opens ingress; the ports mapping is untouched, so
direct ip:port still works, it just has to be typed.

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

* fix(sabnzbd): make the nginx finish script actually work on s6-overlay v3

CodeRabbit is right that the execline finish script copied from nzbget is
inert on this image. s6-portable-utils dropped `s6-test` in favour of
execline's `eltest` — s6-overlay 3.2.1.0 ships no `s6-test` at all — so
execlineb cannot run the first `if` block and never reaches s6-svscanctl.
`/var/run/s6/services` is also the v2 scandir path; v3's legacy services.d
compatibility layer uses /run/service.

Rather than port it to eltest, use the shell form the scrutiny add-on already
ships: `kill -15 1` signals s6-overlay's init directly, so it depends on
neither the s6 tool set nor the scandir path, and it is three lines shorter.
The 0 and 256 exclusions are kept, so a normal shutdown does not trigger it.

Also fix the CHANGELOG date to YYYY-MM-DD per Copilot: that is what this file
and 7705 of the repo's 8068 dated headings use.

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

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 15:46:36 +02:00

6.4 KiB

5.1.1.2 (2026-08-25)

  • Ingress is now enabled: the WebUI opens directly in the Home Assistant sidebar, and the "Open Web UI" button now goes there. Access by ip:port is unchanged, but has to be typed rather than clicked, as Home Assistant does not allow an add-on to offer both.
  • Note for users who set a "Host verification" whitelist in SABnzbd: ingress sends Host: 127.0.0.1:8080 upstream, because SABnzbd rejects any Host that is not an IP literal. That whitelist therefore no longer filters the ingress route, which is gated by Home Assistant authentication instead. Direct ip:port access is unchanged and still filtered.

5.1.1 (2026-08-22)

5.1.0 (2026-08-13)

5.0.4 (2026-06-11)

5.0.3 (2026-05-16)

5.0.1 (2026-05-02)

"4.5.5" (2025-10-25)

  • Minor bugs fixed

4.5.5 (2025-10-25)

4.5.3 (2025-08-30)

4.5.2 (2025-07-12)

4.5.1 (2025-04-12)

4.5.0 (2025-04-05)

4.4.1-2 (2025-02-10)

  • New config logic, files migrated to /addon_configs/xxx-sabnzbd

4.4.1 (2024-12-21)

4.4.0 (2024-12-14)

4.3.3 (2024-08-24)

4.3.2 (2024-06-01)

4.3.1 (2024-05-11)

4.3.0 (2024-05-04)

4.2.3 (2024-03-16)

  • Update to latest version from linuxserver/docker-sabnzbd

4.2.2 (2024-02-03)

  • Update to latest version from linuxserver/docker-sabnzbd

4.2.1 (2024-01-06)

  • Update to latest version from linuxserver/docker-sabnzbd

4.1.0 (2023-09-30)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3 (2023-08-26)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3-ls123 (2023-08-26)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3-ls122 (2023-08-19)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3-ls120 (2023-08-12)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3-ls119 (2023-08-05)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3-ls118 (2023-07-29)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3-ls117 (2023-07-22)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.3-ls116 (2023-07-15)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.2-ls115 (2023-07-08)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.2-ls114 (2023-07-01)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.2-ls113 (2023-06-24)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.2-ls112 (2023-06-17)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.2-ls111 (2023-06-10)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.1-ls110 (2023-06-03)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.1-ls109 (2023-05-27)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.1-ls108 (2023-05-19)

  • Update to latest version from linuxserver/docker-sabnzbd
  • armv7 support removed

4.0.1-ls106 (2023-05-13)

  • Update to latest version from linuxserver/docker-sabnzbd
  • Feat : cifsdomain added

4.0.1-ls105 (2023-05-06)

  • Update to latest version from linuxserver/docker-sabnzbd

4.0.0-ls104 (2023-04-29)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls102 (2023-04-21)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls101 (2023-04-08)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls100 (2023-03-31)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls99 (2023-03-25)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls98 (2023-03-24)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls97 (2023-03-18)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls95 (2023-03-11)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls93 (2023-03-04)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls92 (2023-02-25)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls91 (2023-02-19)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.2-ls90 (2023-02-11)

  • Update to latest version from linuxserver/docker-sabnzbd

3.7.1-ls89 (2023-02-04)

  • Update to latest version from linuxserver/docker-sabnzbd
  • Initial release (latest builds)