Skip to content

[BUG] swag-crowdsec: package install aborts on Alpine 3.24 — lua-resty-string pulls openresty, conflicts with nginx #625

Closed

Description

@mkorthaus-private

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Name of mod: linuxserver/mods:swag-crowdsec
Name of base container: linuxserver/swag

Current Behavior:

Since the SWAG base moved from Alpine 3.22 to 3.24 (5.7.0-ls479, build 2026-08-16T18:13),
the mod's package installation aborts entirely and nginx fails to start:

**** Successfully configured CrowdSec nginx Bouncer ****
[pkg-install-init] **** Installing all mod packages ****
ERROR: unable to select packages:
nginx-1.30.4-r1:
conflicts: openresty-1.31.1.1-r0
openresty-1.31.1.1-r0[cmd:nginx=1.30.4-r1]
satisfies: world[nginx]
nginx-mod-http-lua-1.30.4-r1[nginx=1.30.4-r1]
openresty-mod-devel-kit-1.31.1.1-r0[cmd:nginx]
openresty-mod-http-lua-1.31.1.1-r0[cmd:nginx]
openresty-1.31.1.1-r0:
conflicts: nginx-1.30.4-r1[nginx]
breaks: nginx-mod-http-lua-1.30.4-r1[nginx=1.30.4-r1] (and all other nginx-mod-*)

2026/08/16 22:26:24 [emerg] 1262#1262: unknown directive "lua_package_path"
in /etc/nginx/http.d/crowdsec_nginx.conf:1

crowdsec_nginx.conf is written before the package step, so the conf exists while
nginx-mod-http-lua does not. nginx then restart-loops once per second.

This is NOT the version-mismatch issue from #1127 / docker-swag#552 / #604
("module ... version 1028003 instead of 1028002"). Here the module is never
installed at all, because apk aborts the whole transaction.
It is also not docker-mods#798 — the workaround suggested there
(INSTALL_PACKAGES=nginx-mod-http-lua) cannot help, since it resolves in the
same apk transaction and hits the same conflict.

Culprit isolated:

Simulating each package of the mod list individually against the 3.24 image:

docker run --rm --entrypoint sh ghcr.io/linuxserver/swag:5.7.0-ls479 -c '
apk update >/dev/null 2>&1
for P in lua5.1-cjson lua-sec lua-resty-string lua-resty-http
lua-resty-core lua-resty-lrucache gettext lua5.1-libs; do
printf "== %s: " "$P"
if apk add --simulate "$P" >/dev/null 2>&1; then echo OK; else echo CONFLICT; fi
done'

== lua5.1-cjson: OK
== lua-sec: OK
== lua-resty-string: CONFLICT <-- this one
== lua-resty-http: OK
== lua-resty-core: OK
== lua-resty-lrucache: OK
== gettext: OK
== lua5.1-libs: OK

nginx-mod-http-lua on its own resolves cleanly:
(1/4) Installing luajit / lua-resty-lrucache / lua-resty-core / nginx-mod-http-lua
OK: 207.1 MiB in 222 packages

So on Alpine 3.24, lua-resty-string pulls openresty-mod-http-lua /
openresty-mod-devel-kit, which require openresty, which conflicts with nginx.
Ruled out: the lua-resty-* packages have NOT been moved into openresty —
apk policy still lists them standalone in main/community on 3.24.

Workaround: Pin to 5.7.0-ls477.

Expected Behavior

Mod installs its packages and nginx starts.

Steps To Reproduce

SWAG 5.7.0-ls479 (or the moving tag 5.7.0, which points to the same build) with DOCKER_MODS=linuxserver/mods:swag-crowdsec.

Environment

- OS: Synology DSM 7.4 (Container Manager, Docker 24.0.2)
- Base image: ghcr.io/linuxserver/swag:5.7.0-ls479, Alpine 3.24.1, nginx 1.30.4
- Working: ghcr.io/linuxserver/swag:5.7.0-ls477, Alpine 3.22.5

CPU architecture

x86-64

Docker creation

docker compose pull; docker compose up -d

Container logs

[mod-init] Running Docker Modification Logic
[mod-init] Adding linuxserver/mods:swag-crowdsec to container
[mod-init] Downloading linuxserver/mods:swag-crowdsec from lscr.io
[mod-init] Installing linuxserver/mods:swag-crowdsec
[mod-init] linuxserver/mods:swag-crowdsec applied to container
[migrations] started
[migrations] done
Linuxserver.io version: 5.7.0-ls479
Build-date: 2026-08-16T18:13:00+00:00
using keys found in /config/keys
Certificate exists; parameters unchanged; starting nginx
**** Configuring CrowdSec nginx Bouncer ****
**** Successfully configured CrowdSec nginx Bouncer  ****
[pkg-install-init] **** Installing all mod packages ****
ERROR: unable to select packages:
  nginx-1.30.4-r1:
    conflicts: openresty-1.31.1.1-r0
               openresty-1.31.1.1-r0[cmd:nginx=1.30.4-r1]
    satisfies: world[nginx]
               nginx-mod-http-brotli-1.30.4-r1[nginx=1.30.4-r1]
               nginx-mod-http-lua-1.30.4-r1[nginx=1.30.4-r1]
               [... all other nginx-mod-* ...]
               openresty-mod-devel-kit-1.31.1.1-r0[cmd:nginx]
               openresty-mod-http-lua-1.31.1.1-r0[cmd:nginx]
  openresty-1.31.1.1-r0:
    conflicts: nginx-1.30.4-r1[nginx]
               nginx-1.30.4-r1[cmd:nginx=1.31.1.1-r0]
    breaks:    nginx-mod-http-lua-1.30.4-r1[nginx=1.30.4-r1]
               [... all other nginx-mod-* ...]
    satisfies: world[nginx]
               openresty-mod-devel-kit-1.31.1.1-r0[cmd:nginx]
               openresty-mod-devel-kit-1.31.1.1-r0[openresty]
               openresty-mod-http-lua-1.31.1.1-r0[cmd:nginx]
               openresty-mod-http-lua-1.31.1.1-r0[openresty]
[custom-init] No custom files found, skipping...
[ls.io-init] done.
**** Disabling fail2ban Service ****
2026/08/16 22:25:43 [emerg] 1016#1016: unknown directive "lua_package_path" in /etc/nginx/http.d/crowdsec_nginx.conf:1
2026/08/16 22:25:44 [emerg] 1059#1059: unknown directive "lua_package_path" in /etc/nginx/http.d/crowdsec_nginx.conf:1
[repeats once per second]

Activity

  1. github-actions commented on Aug 19, 2026

    @github-actions

    Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.

  2. Roxedus commented on Aug 19, 2026

    @Roxedus
    Member

    We stopped installing lua-resty-string from apk two days ago with linuxserver/docker-mods@3e6080e

  3. thespad commented on Aug 19, 2026

    @thespad
    Member

    You need to prompt your LLM to keep more up to date

  4. moved this from Issues to Done in Issue & PR Trackeron Aug 19, 2026
  5. mkorthaus-private commented on Aug 19, 2026

    @mkorthaus-private
    Author

    THX!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions