226 Commits

Author SHA1 Message Date
Antony Messerli
988fe91078 Decouple Secure Boot download from menu first-run check
Address review feedback:
- Move Secure Boot download to its own conditional block that checks
  for the secureboot-x86_64 directory, so existing installs pick up
  Secure Boot binaries on the next container restart
- Resolve MENU_VERSION once at the top (from env, menuversion.txt,
  or GitHub API) so it's available to both blocks
- Use curl -fsSL for autoexec.ipxe download to fail on HTTP errors
  instead of silently saving HTML error pages
- Update README note to reflect that Secure Boot downloads run
  independently of menu downloads
2026-03-15 17:35:59 -05:00
Antony Messerli
6ffc4e6954 Track iPXE Secure Boot release version via Renovate
Add custom regex manager to monitor ipxe/ipxe GitHub releases against
the IPXE_SB_VERSION pin in init.sh (currently v2.0.0). Renovate will
open a PR when a new iPXE release is available.
2026-03-15 17:03:43 -05:00
Antony Messerli
b74d8a0e1b Add error handling for Secure Boot archive extraction and file checks
Address review feedback:
- Wrap tar extraction in error check so cp loops are skipped on failure
- Add per-file existence checks with warnings if iPXE archive layout changes
- Use nullglob for secureboot-* glob to avoid iterating literal pattern
2026-03-15 17:02:50 -05:00
Antony Messerli
ee9d2300bb Download Secure Boot binaries directly from upstream iPXE release
Pull signed EFI binaries unmodified from the iPXE project release
(ipxeboot.tar.gz) and the autoexec.ipxe boot script from the
netboot.xyz release. This preserves provenance of the Microsoft-signed
and iPXE Secure Boot CA-signed binaries rather than redistributing
them through netboot.xyz.

The iPXE Secure Boot version defaults to v2.0.0 and can be overridden
via the IPXE_SB_VERSION environment variable.

Documents the upstream source and version for both the signed binaries
and the boot script in init.sh comments and README.
2026-03-15 16:56:27 -05:00
Antony Messerli
263fb8aaf0 Add UEFI Secure Boot support
Download Secure Boot tarballs (secureboot-x86_64.tar.gz,
secureboot-arm64.tar.gz) from netboot.xyz releases during container
init. These contain Microsoft-signed iPXE shim binaries and a
templated autoexec.ipxe that chains into the netboot.xyz menu system.

Files are extracted into /config/menus/secureboot-{x86_64,arm64}/
and served via TFTP alongside existing boot files. Gracefully skips
download if the release doesn't include Secure Boot assets (e.g.
older pinned MENU_VERSION).

Also adds Secure Boot DHCP configuration examples and boot file
documentation to the README.
2026-03-15 16:29:52 -05:00
Antony Messerli
7aafebf714
Merge pull request #133 from netbootxyz/ci/fix-release-workflow
CI: Fix release workflow - native arm64 builds and tagging permissions
0.7.6-nbxyz17
2026-03-15 15:26:06 -05:00
Antony Messerli
2f8ef41ea2 Split release.yml into native per-arch builds, fix tagging permissions
- Split single QEMU-based multi-platform build into parallel jobs on
  native runners (ubuntu-latest for amd64, ubuntu-24.04-arm for arm64)
  to fix Illegal instruction crash during npm install
- Add permissions block with contents:write to fix 403 error when
  creating git tags via github-tag-action
- Move version check logic to setup job with outputs so build jobs
  can be skipped when there is nothing to do
- Remove docker/metadata-action in favor of inline labels
- Compute BUILD_DATE in setup job and pass as output (not shell eval
  in YAML)
2026-03-15 15:22:28 -05:00
Antony Messerli
ba3a65050b
Merge pull request #126 from netbootxyz/renovate/docker-metadata-action-6.x
Update docker/metadata-action action to v6
0.7.6-nbxyz16
2026-03-15 15:17:04 -05:00
Antony Messerli
022f5385ce
Merge pull request #123 from netbootxyz/renovate/docker-login-action-4.x
Update docker/login-action action to v4
2026-03-15 15:15:54 -05:00
renovate[bot]
1eb1b05f5d
Update docker/metadata-action action to v6 2026-03-15 20:14:38 +00:00
Antony Messerli
0a59543132
Merge pull request #112 from netbootxyz/renovate/actions-checkout-6.x
Update actions/checkout action to v6
2026-03-15 15:14:34 -05:00
Antony Messerli
1c8a7d9c24
Merge pull request #132 from netbootxyz/renovate/aquasecurity-trivy-action-0.x
Update aquasecurity/trivy-action action to v0.35.0
2026-03-15 15:14:06 -05:00
Antony Messerli
534c86b99b
Merge pull request #129 from netbootxyz/renovate/actions-github-script-8.x
Update actions/github-script action to v8
2026-03-15 15:13:49 -05:00
Antony Messerli
a3e18f551e
Merge pull request #125 from netbootxyz/renovate/docker-setup-buildx-action-4.x
Update docker/setup-buildx-action action to v4
2026-03-15 15:13:35 -05:00
Antony Messerli
ff841baf7d
Merge pull request #124 from netbootxyz/renovate/docker-setup-qemu-action-4.x
Update docker/setup-qemu-action action to v4
2026-03-15 15:13:14 -05:00
Antony Messerli
18d690d61b
Merge pull request #127 from netbootxyz/renovate/docker-build-push-action-7.x
Update docker/build-push-action action to v7
2026-03-15 15:12:50 -05:00
Antony Messerli
9619104e55
Update GitHub Artifact Actions (#131)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-15 15:12:10 -05:00
renovate[bot]
3223f448bd
Update aquasecurity/trivy-action action to v0.35.0 2026-03-15 20:11:47 +00:00
Antony Messerli
877a3d19e2
Merge pull request #121 from netbootxyz/renovate/github-tags-aquasecurity-trivy-action-vulnerability
Update aquasecurity/trivy-action action to v0.34.0 [SECURITY]
2026-03-15 15:11:32 -05:00
renovate[bot]
e258e62df9
Update GitHub Artifact Actions 2026-03-15 20:09:07 +00:00
renovate[bot]
2e16db943b
Update docker/setup-qemu-action action to v4 2026-03-15 20:09:05 +00:00
renovate[bot]
5c122c0e19
Update docker/setup-buildx-action action to v4 2026-03-15 20:09:03 +00:00
renovate[bot]
a894ab34d9
Update docker/login-action action to v4 2026-03-15 20:09:00 +00:00
renovate[bot]
58561928c2
Update docker/build-push-action action to v7 2026-03-15 20:08:57 +00:00
renovate[bot]
0c5ad37909
Update actions/github-script action to v8 2026-03-15 20:08:54 +00:00
renovate[bot]
e2c3b808a6
Update actions/checkout action to v6 2026-03-15 20:08:51 +00:00
renovate[bot]
4ff0b9b33e
Update aquasecurity/trivy-action action to v0.34.0 [SECURITY] 2026-03-15 20:08:45 +00:00
Antony Messerli
cd1950c036
CI: Use native arm64 runner to fix QEMU build crash (#130)
* CI: Split into native per-arch build jobs to fix QEMU arm64 crash

The arm64 build was failing with 'Illegal instruction (core dumped)'
during npm install because QEMU user-mode emulation doesn't support
all arm64 instructions used by newer Node.js versions.

Split the single multi-platform build job into:
- setup: determines tags, webapp version (shared via outputs)
- build-amd64: builds on ubuntu-latest natively
- build-arm64: builds on ubuntu-24.04-arm natively (no QEMU)
- manifest: merges per-arch digests into multi-arch manifest
- comment: posts PR test instructions

Both architectures get independent Trivy scans. The amd64 and arm64
builds run in parallel so total build time should be similar or faster.

Also pins Trivy CLI to v0.69.3 to work around deleted release assets
from the Trivy supply chain attack (aquasecurity/trivy#10265).

* Address review feedback: fix BUILD_DATE, add permissions, add event fallback

- Compute BUILD_DATE in setup job and pass as output instead of using
  $(date) in build-args YAML which is not evaluated at runtime
- Add explicit permissions block (contents:read, packages:write,
  pull-requests:write) to limit GITHUB_TOKEN scope
- Add else fallback in tag strategy for unsupported event types

* Bump Alpine base image from 3.22.2 to 3.23.3 to clear Trivy CVEs

* Fix Trivy CVEs: upgrade systeminformation to 5.31.0 and zlib to >=1.3.2

- systeminformation 5.27.1->5.31.0: fixes CVE-2025-68154, CVE-2026-26280,
  CVE-2026-26318 (command injection vulnerabilities)
- zlib 1.3.1-r2->1.3.2: fixes CVE-2026-22184 (buffer overflow in untgz)

The systeminformation fix overrides the version pinned by the webapp
upstream (5.27.10) until that repo is updated.

* Fix zlib upgrade: use apk --upgrade to ensure CVE-2026-22184 is resolved

The previous 'apk add zlib>=1.3.2' wasn't upgrading zlib because it
was already installed as a transitive dependency. Use --upgrade flag
to force apk to pull the latest available version (1.3.2-r0).

* Fix Trivy arm64 scan: set TRIVY_PLATFORM to match image architecture

Trivy defaults to linux/amd64 when resolving remote image digests.
On the arm64 build job, the pushed digest is a single-platform arm64
image, so Trivy fails with 'no child with platform linux/amd64'.
Setting TRIVY_PLATFORM=linux/arm64 resolves this.
0.7.6-nbxyz13
2026-03-15 15:08:28 -05:00
Antony Messerli
ecd624b2bb Pin Trivy CLI to v0.69.3 to work around deleted release assets
Trivy releases v0.27.0-v0.69.1 were deleted as part of a supply chain
attack on 2026-03-01 (aquasecurity/trivy#10265). Pin the CLI version
explicitly so the action does not try to download missing assets.
2026-03-15 14:27:30 -05:00
Copilot
dab4b8137b
CI: Fix injection risk, tag validation, Trivy gating, and Dockerfile layer consolidation (#128)
* Initial plan

* Address review feedback: fix injection risk, validate tag_suffix, rename step, conditional Trivy exit-code, single Dockerfile layer

Co-authored-by: antonym <245007+antonym@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: antonym <245007+antonym@users.noreply.github.com>
0.7.6-nbxyz12
2026-03-15 14:23:00 -05:00
Antony Messerli
39bdc240f1
Merge pull request #116 from netbootxyz/various_tweaks
CI Improvements for testing images
0.7.6-nbxyz11
2026-03-15 14:16:22 -05:00
Antony Messerli
4884908c2b CI Improvements for testing images
* Drop forced chown during copy
* Adding PR Template
2025-12-06 13:26:38 -06:00
Antony Messerli
8aa95c1b3e
Merge pull request #110 from netbootxyz/renovate/alpine-3.x
Update alpine Docker tag to v3.22.2
0.7.6-nbxyz10
2025-10-17 02:35:55 -05:00
Antony Messerli
769929c965
Merge pull request #104 from netbootxyz/renovate/anothrnick-github-tag-action-1.x
Update anothrNick/github-tag-action action to v1.75.0
0.7.6-nbxyz9
2025-10-17 02:35:31 -05:00
Antony Messerli
0403161859
Merge pull request #103 from netbootxyz/renovate/actions-checkout-5.x
Update actions/checkout action to v5
2025-10-17 02:35:08 -05:00
Antony Messerli
60262e0d92
Merge pull request #106 from netbootxyz/renovate/aquasecurity-trivy-action-0.x
Update aquasecurity/trivy-action action to v0.33.1
2025-10-17 02:33:54 -05:00
renovate[bot]
84dfec3d83
Update alpine Docker tag to v3.22.2 2025-10-09 01:38:03 +00:00
renovate[bot]
0f6cd6012c
Update aquasecurity/trivy-action action to v0.33.1 2025-09-03 16:56:01 +00:00
renovate[bot]
cfec03ba8b
Update anothrNick/github-tag-action action to v1.75.0 2025-08-22 18:40:51 +00:00
renovate[bot]
2b22b05f8f
Update actions/checkout action to v5 2025-08-11 14:45:40 +00:00
Antony Messerli
9d6b2ea6e5
Merge pull request #99 from netbootxyz/renovate/alpine-3.x
Update alpine Docker tag to v3.22.1
0.7.6-nbxyz7
2025-08-08 19:59:09 -05:00
renovate[bot]
dc80c4b2fc
Update alpine Docker tag to v3.22.1 2025-07-16 02:12:18 +00:00
Antony Messerli
64a3ba83d3
Merge pull request #98 from netbootxyz/renovate/aquasecurity-trivy-action-0.x
Update aquasecurity/trivy-action action to v0.32.0
0.7.6-nbxyz6
2025-07-13 22:33:41 -05:00
Antony Messerli
9b8984312c
Create claude.yml 2025-07-13 22:32:12 -05:00
renovate[bot]
11c7e185f7
Update aquasecurity/trivy-action action to v0.32.0 2025-07-04 10:52:34 +00:00
Antony Messerli
de90862979
Merge pull request #95 from netbootxyz/remove-gosu
Let master process run as root to bind to 80, workers run as nbxyz
0.7.6-nbxyz4
2025-06-19 11:12:42 -05:00
Antony Messerli
ed111b6cbc Let master process run as root to bind to 80, workers run as nbxyz 2025-06-19 11:09:26 -05:00
Antony Messerli
b84a9d7625
Merge pull request #94 from netbootxyz/remove-gosu
Remove gosu so that ports can bind
0.7.6-nbxyz3
2025-06-19 10:51:36 -05:00
Antony Messerli
df298e7c32 Remove gosu so that ports can bind
Remove gosu so that ports can bind using root and then switch running
state to nbxyz
2025-06-19 10:18:03 -05:00
Antony Messerli
218529357a CI Workflow fixes 0.7.6-nbxyz2 2025-06-12 01:46:26 -05:00