Sign inSign up

readystack/swag

By readystack

•Updated about 12 hours ago

SWAG: nginx reverse proxy with certbot and fail2ban built in. Signed; SBOM and SLSA v1 provenance.

Image
Security
Web servers
0

1.4K

readystack/swag repository overview

⁠SWAG

Signed: cosign SBOM: SPDX attached Provenance: SLSA v1

readystack/swag:5.9.0-CE-ubuntu24.04-r3

Source, recipe and records

A cosign-signed build of github.com/linuxserver/docker-swag 5.9.0 (GPL-3.0) with certbot 5.9.0 (Apache-2.0), nginx 1.30.6 (BSD-2-Clause) and fail2ban 1.1.1 (GPL-2.0), built from source, built clean-room from official upstream source by ReadyStack⁠.

⁠What you get

Signature, user and attestations below were measured on the published digest sha256:8274eeb875ba1829a6ea47724acc872f484d51c928a16dcba77f5748566788c1 on 2026-11-13.

  • Scan scores — we scan every image we publish every day (an SBOM made with syft, vulnerabilities matched with grype, scored with cerodeo-v2, ce.rodeo's current rubric; scans before 2026-11-08 used cerodeo-v1) and record each scan with how its score was derived. This release's first and latest scan: https://readystack.dev/products/swag⁠
  • ReadyStack release check — passed at release on 2026-11-13: no fixable critical or high vulnerability (Docker Scout and OSV), a non-root user, SBOM and provenance attached. This is ReadyStack's own test, not a Docker grade; vulnerabilities published since then are in today's result at https://readystack.dev/queue⁠.
  • Signed — cosign signature by the ReadyStack release key (fingerprint 04daa92344a52dbc) on this release's index digest sha256:8274eeb875ba1829a6ea47724acc872f484d51c928a16dcba77f5748566788c1; verify with cosign verify --key https://readystack.dev/keys/cosign.pub readystack/swag:5.9.0-CE-ubuntu24.04-r3.
  • Attestations — An SPDX SBOM and SLSA v1 build provenance are attached to this digest.
  • Runs as a non-root user (swag).
  • Built from source by ReadyStack.

⁠Which tag should I pull?

This image follows the ReadyStack release-tag convention:

  • The current release is 5.9.0-CE-ubuntu24.04-r3 — the release listed at readystack.dev. Release tags use the pattern <upstream-version>-CE-<base-os>-r<N>; the current one is signed, attested (SBOM + provenance), and is provided under the ReadyStack Agreement⁠.

  • Earlier release tags (an older version or revision in the same pattern) are superseded. They stay pullable so existing deployments can pin them, but they are no longer re-graded, and fixes appear only in newer releases: move to the current release. For a superseded release's build kit, ask support.

  • Release tags never move, so pulling the same tag again never changes the image. To be offered each new release automatically (a new revision r<N+1>, or a new upstream version), use the ReadyStack Renovate preset: https://readystack.dev/updates.html⁠

  • Any tag beginning with internal- is an engineering-pipeline artifact published for build observability. It is unsupported, may change or disappear without notice, and must not be used in production.

# ✓ current release
docker pull readystack/swag:5.9.0-CE-ubuntu24.04-r3

# ✗ unsupported (do not pull)
docker pull readystack/swag:internal-...

This release is signed; verify it with cosign verify --key https://readystack.dev/keys/cosign.pub readystack/swag:5.9.0-CE-ubuntu24.04-r3 (the signature is recorded in the public Sigstore transparency log). Support: [email protected]⁠, as set out in the ReadyStack Agreement⁠.

⁠Deployment

A single container running nginx as the non-root user swag (uid 999) on ports 8080 and 8443, which you publish as 80 and 443. Everything is in /config, as in linuxserver's image: nginx (nginx.conf, ssl.conf, site-confs/, proxy-confs/), keys (the certificate nginx uses), etc/letsencrypt (certbot's accounts and certificates), dns-conf (DNS provider credentials), www (the default site), fail2ban and log. A certificate is requested at start only when /config holds none for your domain, and renewal is checked every 12 hours. fail2ban runs only when the container is granted NET_ADMIN.

docker run -d --name swag -e URL=example.com -e SUBDOMAINS=www, -e VALIDATION=http -e [email protected] -p 80:8080 -p 443:8443 -v swag-config:/config readystack/swag:5.9.0-CE-ubuntu24.04-r3

Replace example.com with your domain, whose DNS points at this host, and keep ports 80 and 443 reachable for HTTP validation (or use VALIDATION=dns with DNSPLUGIN= and its credentials in /config/dns-conf/.ini, which the first start creates as a template: fill it in and restart). The second command adds --cap-add NET_ADMIN, which turns fail2ban on (its bans are iptables rules); without it fail2ban stays off and everything else works. To proxy an app, copy a sample in /config/nginx/proxy-confs to its name without .sample (keep the .subdomain.conf or .subfolder.conf ending), adjust it, and restart. SWAG_CERTBOT=false keeps the certificate you put in /config/keys and never contacts a certificate authority.

⁠The full ReadyStack Hermetic Build Kit

The complete --network=none build kit for this image — plus admin/DB/API handbooks, the build's validation records, and its build provenance records — is a free download for any registered account at readystack.dev/products/swag⁠. A clean-room rebuild from this release's archive on an egress-blocked host reproduced its linux/amd64 digest sha256:581ed81debd1625f6d1f250e6d9131714a211d1edefb874fb9f76fd76619f91b on 2026-11-13.

— ReadyStack · readystack.dev

Tag summary

Content type

Image

Digest

sha256:8274eeb87…

Size

189.3 MB

Last updated

about 12 hours ago

docker pull readystack/swag:5.9.0-CE-ubuntu24.04-r3