·
30 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Fluxheim 1.6.32 Release Notes
Fluxheim 1.6.32 continues the final native-runtime cutover work after the
cache/PHP adapter slice.
This checkpoint focuses on native runtime dispatch, native load-balancer state
sharing, and the first native WebSocket upgrade tunnel path. Rich proxy cache
remains an explicit compatibility gate until its native adapter proves full
lookup/fill/stale behavior in a later 1.6.x stop.
Highlights
- Metrics configuration now supports an optional
metrics.token_file
bearer-token source for the native metrics service. The token file path is
resolved with the normal safe-path rules and rejected when it is empty,
unsafe, or below a group/world-writable parent. - Native metrics service construction now loads the configured token source,
stores it in zeroizing memory, redacts it from debug output, and enforces it
with constant-time comparison forGET/HEAD /metrics. It also exposes a
Fluxheim-native background service factory that binds the native HTTP/1
metrics listener under the native supervisor. - Native metrics listener startup and runtime failures are fail-fast: bind
failures and unexpected accept-loop failures now log at error level and exit
instead of leaving a silent metrics blind spot after native cutover. - Non-Unix metrics token-file loading now rejects a symlink leaf before opening
the file, matching the UnixO_NOFOLLOWhardening as closely as the portable
filesystem API allows. - The Pingora compatibility metrics listener still relies on listener binding
and network ACLs for access control until the final native runtime owns that
listener, but Fluxheim now validates the native metrics token source at
startup so bad token configuration fails before the cutover. - The native runtime launch plan now carries a metrics service-policy row that
records whether the final nativeMetricsHttplistener must enforce bearer
auth, making token enforcement a diffable cutover contract instead of an
implicit root-runtime detail. - Stream and UDP proxy routes now expose Fluxheim-native background service
task factories beside their Pingora compatibility services. The compatibility
runtime validates those native factories at startup whenever stream or UDP
services are enabled, so final native service registration exercises the same
route parsing and listener task construction before the cutover. - Load-balancer refresh services now expose a native-supervisor handoff while
retaining the Pingora compatibility wrapper. This lets the final native
runtime spawn the existing Fluxheim-owned discovery/health refresh loop
directly instead of routing it through Pingora's service adapter. - The Pingora compatibility load-balancer adapter now stores that native
service handoff internally and dispatches throughFluxBackgroundTask,
keeping the compatibility path and final native supervisor path on the same
task boundary. - Native runtime launch plans now include
LoadBalancerRefreshbackground-task
inventory only for load-balanced pools that actually need a background loop:
active health checks, file discovery, HTTP discovery, or DNS refresh. Static
ordered/weighted pools withload_balance.health_check.enabled = falsestay
native-ready without a detached refresh task. - That load-balancer service and background-task inventory is now gated by the
fluxheim-server/load-balancerfeature, so non-load-balancer builds do not
advertise native supervisor work they cannot construct. - Native runtime launch planning now rejects duplicate background-task kinds
before supervisor startup, matching the existing duplicate listener binding
guard and preventing ambiguous task ownership in the final native runner. - Native runtime launch planning also rejects duplicate service kinds before
listener expansion, so a final native runner cannot accidentally register two
owners for the same service role. - The compatibility runtime now also validates the native HTTP/1 host-router
factory when the server plan reports the proxy surface as native-ready. This
proves exact/wildcard host routing, default-vhost selection, trusted-proxy
source parsing, and route proxy construction can be assembled as one native
router before the production runner switches away from Pingora. - Native HTTP/1 proxy planning now accepts static round-robin upstream pools
that explicitly disable active load-balancer health checks, matching the
native proxy's current static-upstream capability while still rejecting
advanced load-balancer policies. - Native HTTP/1 proxy planning now rejects active load-balancer health checks
until the final native load-balancer bridge shares health/discovery state
with the actual native upstream selector. This avoids a false native-ready
signal where a compatibility refresh task would run but native traffic would
not consume its state. - The native runtime cutover evidence gate now fails if the representative
blocker-free config does not targetNativeRuntime, if the launch plan is not
ready, or if a launch-plan error is emitted. fluxheim-config-tester --runtime-cutovernow labels the compatibility
adapter row asnative-runtime-compat-adapter, so blocker-free reports do
not look like they will still start through Pingora when
native-runtime-target-adapteris alreadyNativeRuntime.- Native HTTP/1 proxy planning now treats disabled root request-header policy
as native-ready, matching the native request-header policy implementation
instead of keeping that supported configuration behind the compatibility
adapter. - Native HTTP/1 route and vhost planning now also treats disabled request
header overlays as native-ready. Runtime coverage proves a disabled route
overlay suppresses inherited request-header mutations before proxying. - The server crate now has a Fluxheim-owned native HTTP/1 proxy runtime boundary
that binds proxy HTTP listeners from the native launch plan, builds the native
host router once, serves requests throughserve_native_http1_listener, and
shuts down through the native background supervisor. HTTPS and downstream
PROXY protocol listeners still fail closed at this boundary until their
native listener handling lands. - Rustls-backed native proxy HTTPS listeners can now bind from the native launch
plan whentls.alpn = "http1". The runtime builds the downstream Rustls
server config throughfluxheim-tls, preserving certificate resolver and
client-auth policy; HTTP/2 ALPN and downstream PROXY protocol remain
fail-closed until their native listener dispatch is added. - Plaintext native proxy listeners now accept trusted downstream PROXY protocol
v1 and v2 from the native launch plan. The parsed source address is carried
through access policy, rate-limit identity, and generated forwarding headers,
while untrusted direct peers still fail closed before request parsing. - Root startup now enters the Fluxheim-native runtime dispatcher when the
server plan is blocker-free and targetsNativeRuntime. The dispatcher
starts the native HTTP proxy runtime plus native admin, metrics, stream, UDP,
and load-balancer refresh tasks underNativeBackgroundSupervisorinstead of
the Pingora server loop. - Native Rustls proxy HTTPS startup now exposes its certificate resolver to the
root native runtime, so ACME renewal and the local certificate-reload control
task can reload downstream certificates without the Pingora listener adapter. - Native OpenSSL proxy HTTPS startup now binds through the Fluxheim-owned
OpenSSL listener path for OpenSSL-only/FIPS builds whentls.alpn = "http1".
It builds its downstream acceptor throughfluxheim-tls, preserves the
configured certificate and client-auth policy, and keeps HTTP/2 ALPN
fail-closed until the native HTTP/2 listener dispatch is enabled. The native
OpenSSL listener also preserves configured TLS policy and client-auth
settings, installs SNI certificate selection through OpenSSL's callback API,
and exposes the certificate store to the root native runtime so ACME renewal
and local certificate reloads no longer require the Pingora listener adapter. - Native runtime cutover evidence no longer treats downstream HTTP/2 listener
dispatch as a standalone blocker once the TLS ALPN route can enter the
native multi-stream H2 adapter. Remaining native proxy blockers are tied to
HTTP/1 proxy/cache feature parity rather than the H2 listener handoff itself. - Native HTTPS listeners can now dispatch selected
h2ALPN connections into
the native multi-stream HTTP/2 route adapter, whilehttp/1.1and no-ALPN
connections continue through the native HTTP/1 route path when the configured
TLS ALPN policy permits HTTP/1. Live rustls and OpenSSL runtime tests prove
tls.alpn = "http1-and-http2"negotiates HTTP/2 and reaches an ordinary
native proxy upstream on both supported TLS backends. - The machine-readable native cutover target table now points the downstream
HTTP/2 blocker at the final rich-proxy parity release instead of the earlier
preview milestone, keepingfluxheim-config-tester --runtime-cutoveroutput
consistent with the current Pingora-exit plan. - The native HTTP/2 preview connection loop now accepts and serves multiple
streams on one connection instead of dropping every stream after the first
probe response. Tests cover same-connection multi-stream responses and the
native TLS runtime now routes selected downstream H2 traffic into that stack. - Added a native HTTP/2-to-native-route adapter that maps ordinary H2 requests
into the existing native HTTP/1 route handler pipeline and converts native
responses back to H2 without collapsing duplicate response headers such as
Set-Cookie. Native requests now carry request trailers, and tests prove H2
request trailers reach the native route handler and H2 upstream request
builder; connection takeover remains fail-closed because HTTP/2 upgrade
semantics are separate from HTTP/1 tunnels. - Native PHP-FPM routes now support Fluxheim-managed php-fpm process ownership
throughfluxheim-php-fpm, not the root crate. Managed routes create the
private php-fpm config, validate the php-fpm binary path against symlink and
insecure-parent traversal, start php-fpm on a private Unix socket, keep the
process owner alive for the native route lifetime, and retain the bounded
watchdog/restart behavior used by the legacy runtime. - The legacy root PHP-FPM module now re-exports the managed process owner from
fluxheim-php-fpminstead of carrying a second supervisor implementation.
This keeps the Pingora compatibility route stable while removing duplicate
process lifecycle code from the root crate. - Native HTTP/1 proxy routing now shares Fluxheim-owned
UpstreamLoadBalancerstate with the native load-balancer refresh service.
Static advanced pool policy, active health, dynamic file/HTTP/DNS discovery,
persistence, passive health, backup/drain/disabled state, priority groups,
locality preference, per-upstream in-flight caps, aliases/tags, and runtime
weight handling are selected through the same native load-balancer state the
background service updates. - Dynamic native load-balancer selections now clone the already-vetted
upstream transport policy onto selected discovery authorities. This preserves
the configured TLS, HTTP version, timeout, socket, PROXY-protocol, and
forwarding-header policy without accepting per-request transport changes from
discovery data. - Added Fluxheim-owned nginx/Pingora Ketama-compatible static-ring hash modes
for operators migrating cache-stateful upstream pools that need nginx-style
request-to-backend mapping. The new selections are
nginx-consistent-source-hash(nginx-consistent-hash/ketamaaliases),
nginx-consistent-uri-hash,nginx-consistent-header-hash, and
nginx-consistent-cookie-hash; they build a static CRC32 continuum from the
configuredproxy.upstreamspool and intentionally reject dynamic discovery
pools and runtime backend-set mutations in this release. - Native Ketama startup now rejects file, HTTP, and DNS discovery sources
before building the ring, and logs if CRC32 point collisions reduce the
continuum. The release documentation now calls out that Ketama remains
unsalted for nginx/Pingora compatibility and is therefore not the right mode
for attacker-controlled hash keys. - Native HTTP/1 now has a connection-takeover handoff that preserves any
bytes read after the request head. This prevents early WebSocket frames sent
in the same TCP packet as the upgrade request from being lost when a handler
takes ownership of the downstream stream. - Native WebSocket proxying is now available for strict WebSocket upgrade
requests on forced HTTP/1 static upstream routes. The native adapter writes a
canonical upstreamConnection: Upgrade/Upgrade: websocketrequest,
validates the upstream101 Switching Protocolsresponse with the shared
HTTP/1 parser, forwards prebuffered bytes in both directions, and runs the
bidirectional tunnel under the configured upstream read timeout. - Native WebSocket proxying now strips hop-by-hop request headers, including
headers named by the downstreamConnectionfield, before forwarding the
upgrade upstream. The downstream101 Switching Protocolsresponse is now
emitted as a canonical WebSocket handshake response instead of forwarding
arbitrary upstream101headers such asSet-CookieorServer. - Native WebSocket proxying now also works with native load-balanced upstream
pools. The proxy performs one normal load-balancer selection at upgrade time,
then pins the tunnel to that selected upstream for the lifetime of the
connection; HTTP/2 WebSocket upstream mode remains fail-closed because it
does not use the HTTP/1 hop-by-hop upgrade mechanism. - The native server crate now has an internal PHP-FPM request-planning adapter
under thephp-fpmfeature. It maps native HTTP/1 requests into the FastCGI
parameter set using Fluxheim's existing PHP path-safety helpers:
SCRIPT_NAME/PATH_INFO, deny prefixes, splitPATH_INFO, UTF-8
DOCUMENT_ROOT/SCRIPT_FILENAME, request headers, protected custom params,
TLS scheme, and restored client address are all covered before the live
FastCGI execution path is enabled. - The same staged native PHP-FPM adapter now translates PHP stdout into a
native response plan. It uses the shared PHP response parser, strips
hop-by-hop headers, configured hidden headers, PHP internal offload headers,
and Fluxheim-ownedContent-Length, preserves HEAD response length without a
body, and marks configured intercepted status codes before the live response
writer is enabled. - Native static-web resolution now exposes a PHP-specific, feature-gated
script resolver for the upcoming live PHP-FPM adapter. It reuses the same
canonical web-root/symlink-safe resolver as static serving while applying PHP
SCRIPT_NAME, front-controller, deny-prefix, directory-index redirect, and
decline-existing-static decisions. - PHP-FPM in-memory request bodies now keep their FastCGI replay buffer inside
Zeroizing<Vec<u8>>instead of cloning sensitive request bytes into a plain
heap vector for the duration of the FastCGI exchange. metrics.token_envis parsed but rejected. Rust 2024 treats process
environment mutation as unsafe, Fluxheim forbids unsafe code in the root
crate, and leaving bearer tokens in/proc/self/environis not acceptable
for the native metrics listener. Usemetrics.token_fileinstead.- Native nginx/Pingora Ketama-compatible backend iteration now tracks seen
backends with a set, preserving existingmax_iterationsbehavior while
avoiding quadratic duplicate checks on large weighted rings. - The native admin control-plane and local ops listeners remain explicitly
PROXY-protocol disabled even when the public HTTP/HTTPS listeners enable
trusted downstream PROXY protocol. The server-plan tests continue to assert
that only public HTTP/HTTPS listeners inherit that trust boundary. - The staged native PHP-FPM adapter now has request-body planning for the
upcoming live execution path. It enforcesphp.max_request_body_bytes, keeps
small bodies in memory, and uses Fluxheim's existing private PHP spool-file
creator/cleanup path whenphp.request_body_spool_threshold_bytesand
php.request_body_spool_dirrequire a spooled body. - The staged native PHP-FPM adapter now has a FastCGI execution wrapper that
uses Fluxheim-owned endpoint selection, pooled or one-shot Unix/TCP
connections, bounded connect/request timeouts, configured response-size
limits, retryable error/status handling, STDERR failure-pattern handling, and
the staged native response planner. - Native HTTP/1 route/vhost PHP-FPM configs can now build a native PHP route
action for external php-fpm endpoints. The route action resolves scripts
through the native static resolver, enforces PHP in-flight/request-body
limits, builds the shared FastCGI parameter plan, executes the staged
FastCGI wrapper, and returns parsed native PHP responses. - Native PHP-FPM routes now honor configured PHP custom error pages for
intercepted statuses by rendering the configured static error page through
the native static-file responder. - The remaining rich-proxy native gates are now documented as intentional
parity blockers rather than hidden launch blockers: proxy cache still needs
native lookup/fill/stale/purge behavior before cache-enabled proxy routes
can leave the compatibility path. - HTTP/2 stream handling now treats bounded per-stream failures as stream
responses instead of connection-level failures. Oversized request bodies,
request-body timeouts, header-count rejection, oversized URIs, and handler
timeouts return the matching 4xx/5xx response on that stream while allowing
sibling streams on the same connection to continue. - Native HTTP/1 request bodies now use zeroizing storage through the H2-to-H1
route adapter so request-body copies do not lose the zero-on-drop behavior
used by native H2. - Native metrics bearer-token checks now compare fixed-size digests instead of
branching on token length before the constant-time comparison. Metrics bearer
auth now usesmetrics.token_file;metrics.token_envis rejected to avoid
local process-environment exposure. - Native proxy listener accept-loop failures now mirror the metrics listener
behavior: unexpected listener exit logs an error and terminates the process
instead of leaving a live process that silently stopped accepting traffic.
Tests
- Added config tests for metrics bearer-token parsing and the fail-closed
metrics.token_envrejection. - Added native metrics tests for token loading from a file source,
authenticated scrape acceptance, unauthenticated rejection, and debug
redaction. - Added native metrics listener tests proving the bearer-token policy works
over an actual local TCP scrape request and that the background service task
binds and stops under the native supervisor, not only through the in-memory
handler. - Added a native-supervisor load-balancer test that spawns the refresh service,
observes readiness after the initial discovery update, checks the
LoadBalancerRefreshtask kind, and shuts it down through the Fluxheim
supervisor path. - Added adapter coverage proving the Pingora compatibility wrapper preserves
nativeLoadBalancerRefreshtask metadata. - Added server-plan coverage proving active-health/dynamic load-balanced pools
schedule theLoadBalancerRefreshtask in the native runtime launch TSV,
while static health-disabled pools do not. - Added paired default-build and load-balancer-feature tests for
LoadBalancerHealthChecks/LoadBalancerRefreshinventory. - Added launch-plan coverage proving duplicate background-task kinds fail
closed before task supervision begins. - Added launch-plan coverage proving duplicate service kinds fail closed before
listener registration begins. - Extended native runtime launch-plan tests and cutover evidence validation to
cover metrics bearer-token service policy. - Added a runtime test proving a native-ready HTTP/1 proxy config builds the
full native host-router factory, not only the individual proxy candidate. - Added native proxy and server-plan coverage for static load-balanced pools
withload_balance.health_check.enabled = false, plus rejection coverage for
custom disabled-health-check policies that would otherwise be silently
ignored by the native static proxy. - Added native proxy planning coverage proving default active-health
multi-upstream pools remain on the compatibility path until native
load-balancer refresh state is wired into the native request path. - Extended
scripts/validate-native-runtime-cutover.shso release validation
proves the representative native runtime config is not only blocker-free but
also selects the native target adapter and a ready launch plan. - Added a live native runtime test that binds a planned HTTP proxy listener on
an ephemeral address, proxies a real request to a local upstream through the
native host router, and shuts the listener down through
NativeBackgroundSupervisor. - Added a Rustls native runtime listener test that generates a temporary
certificate, binds a planned HTTPS listener, completes a real TLS handshake,
proxies a request to a local upstream, and shuts the native listener down
through the supervisor. - Added an OpenSSL native runtime listener test that generates a temporary
certificate, binds a planned HTTPS listener under the OpenSSL-only server
feature, completes a real OpenSSL TLS handshake, proxies a request to a local
upstream, and shuts the native listener down through the supervisor. - Added live native runtime tests for trusted downstream PROXY protocol v1 and
v2 listeners, proving the native listener parses the PROXY header and forwards
the restored client IP to the upstream asX-Real-IP. - Added root runtime coverage proving blocker-free plans select the native
runtime target and that certificate background tasks are rejected unless a
native reloader is available. - Re-ran the admin listener smoke against the native startup path, proving the
production binary serves the admin TCP listener and Unix ops socket under the
native runtime dispatcher. - Added native proxy coverage for shared load-balancer selection and refresh
service state, including active-health/static advanced policy and dynamic DNS
discovery construction. - Added configuration and load-balancer tests for the nginx-compatible Ketama
selectors, including alias parsing, header-hash requirements, dynamic
discovery rejection for static-ring selections, native selection
construction, and runtime backend-set mutation rejection. - Added Ketama startup coverage proving dynamic discovery sources are rejected
for nginx-compatible static-ring selections. - Added HTTP/2 stream-isolation coverage proving an oversized request body on
one stream returns413without aborting a sibling stream on the same
connection. - Added WebSocket request/response sanitization tests proving hop-by-hop
request headers are stripped and arbitrary upstream101response headers
are not forwarded downstream. - Added a live native HTTP/1 runtime test that binds a real listener and serves
a downstream request through a nginx-compatible Ketama URI-hash upstream pool. - Added native runtime launch-plan tests proving
proxy.websocket = trueis
native-ready at root, vhost, and route scope when the upstream mode is forced
HTTP/1, plus rejection coverage for WebSocket with HTTP/2 upstream mode. - Added live native HTTP/1 proxy and route-proxy WebSocket tests. Both tests
perform a real downstream101 Switching Protocolsupgrade through a local
upstream listener and prove bytes sent immediately after the downstream
request head are preserved and tunneled. - Added live native load-balanced WebSocket coverage proving a configured
proxy.load_balancepool can select an upstream once and tunnel WebSocket
bytes through that pinned backend. - Added focused native connection-takeover coverage proving handlers receive
prebuffered downstream bytes when taking ownership of a parsed HTTP/1
connection. - Added PHP-FPM feature tests for the native FastCGI request planner, including
core CGI parameter mapping, duplicate request-header joining, protected
custom-param rejection, denied script-prefix rejection, and unsafe
PATH_INFOrejection. - Added PHP-FPM feature tests for the native response planner, including
hop-by-hop/configured/internal header stripping, HEAD content-length
preservation, and intercepted status classification. - Added PHP-FPM feature tests proving the native static-web resolver can
resolve explicit PHP scripts, use the front controller for missing paths,
decline existing non-PHP static files when configured, and reject denied
script prefixes. - Added PHP-FPM feature tests for native request-body planning, including
memory bodies, configured body-limit rejection, spool-file creation, and
cleanup on request-body drop. - Added PHP-FPM feature tests for the staged native FastCGI execution boundary,
including fail-closed rejection when no PHP-FPM endpoint is configured. - Added native route-proxy PHP-FPM tests proving PHP routes reject missing
roots and fail closed with502 Bad Gatewaywhen a configured external
php-fpm endpoint is unavailable. - Added a live native route-proxy PHP-FPM test with a minimal in-test FastCGI
responder, proving the native route sends FastCGI records, parses PHP stdout,
strips configured PHP response headers, and returns the parsed HTTP response.
Checksums And Signatures
- Commit:
0cabc801b65693830ce51aabaa07b43cff1253bc - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
61788956b0e7bc36085e42a3ccd028d04f242e6cc6dfcd9951b9e084bf3c67cc fluxheim-1.6.32.tar.gzf73369e33edef4aed39ba5ef715c5241e12db6c5685a6837d8e9204a7658f9f5 fluxheim-1.6.32.zip
- Binary checksums:
- x86_64:
346a4258bc151cc021159ec5f2c138c5fa599305c7f74917abaa2a77bd3fbaf3 fluxheim-1.6.32-full-x86_64-linux.tar.gzdcd1c27cc907bbb1795afbd67e1a82d6d0b009629d10ca307a8b4c6e46fc4140 fluxheim-1.6.32-cache-x86_64-linux.tar.gz036055e3c9acc7faefb92b2e2660c935cd9702d66a198f4f621d51b91d555f07 fluxheim-1.6.32-proxy-x86_64-linux.tar.gzfd349b5ecc69e1d3f7d85c168e1815a1c16f6ed6489c3ee05759d337ed682791 fluxheim-1.6.32-php-x86_64-linux.tar.gz3f2aeb426eacb420108095acea7335fb73600842a4b3b236e8c3784a12315ccd fluxheim-1.6.32-load-balancer-x86_64-linux.tar.gz2ee2d52949fd76353b895cbec7af41f03adea60e5938e030e6ca7df15931b4c7 fluxheim-1.6.32-config-tester-x86_64-linux.tar.gz
- aarch64:
eec7554d4f7408090ef0c3604294c144fcf3cbb3e9245d2191b331825d6a8c2f fluxheim-1.6.32-full-aarch64-linux.tar.gz4ffaebf6754831df09b5451065ad75ec4f0733a889ad652d7d3c48d67e8bbbd4 fluxheim-1.6.32-cache-aarch64-linux.tar.gz33ef80443ec187b1eb4215fe4f176b58a757cc65eeac9df74625740f08e1329b fluxheim-1.6.32-proxy-aarch64-linux.tar.gz88bd7d8d701544d5b43830176df1b25676c7dd405e22fda34e6704435788eeb2 fluxheim-1.6.32-php-aarch64-linux.tar.gzbf916680a39cebf38cfc1b18e63c44c32b668173730972413970ed56a1d146e5 fluxheim-1.6.32-load-balancer-aarch64-linux.tar.gzf2e684b53424761fba9262bab141ba1787858cb9d3b4d2467d9075eb1fd221c4 fluxheim-1.6.32-config-tester-aarch64-linux.tar.gz
- macos:
a68f6c3949dddf4c879c3c20ceeba68ee9686b711f0251e1e9f68972983136fd fluxheim-1.6.32-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
e3ede817802cede66a658787a31026757b49991ae4a9a96a21a858b99df15e40 fluxheim.spdx.json40398e9f0b7d8f49121d4025a0d89a46f46f04bf7e45d58268c04c1c5cb96e16 fluxheim.cyclonedx.json
- Reproducible build:
7b21639f49e2e8a3e4afb3b787a81de262b5227dc0bf2909aa6f75f6041c0b56x86_648b15b04722f56613cfb317bddbd2d134e74a8f179d17a18bfb92f2f84ddd5325aarch640866cf6d7422e6e1f9c90c22231dd1bfe5ae89e4d0c9427e8083ba19b2ece439macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:12ce6bc65648929281b71b9f19c2ac241b81b637a6e1fe5b67009ab45c1ca62e - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:286c27d78edb76d19e548a1b13862efb58009ef2568b8bee13210a45abbabf92 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:3d26131457132dd066fb56cc32511966f1ac3bfa3b1882ce788c3d025b5cc327 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:c1e793c14d5c9fc2a8908a01559b66fd596691fa7d2380fde57e656d77044c2e
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:12c2b1676241e2a3a1110883e902145419ca3d3c3378b0cc34d7d7bae412c63d - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:61ca40591f13930a5be530b0d4f5c1d66b5e10da8649cb99c303ddebb0419aa3 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:40db05985ec31d3edfe056f1a013dc01f020709e23eb2bcf7e7b0add3428db30 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:83bdb2dbd549d07fd4feb708d2d0f5d69f980769fd4096267d383971f2fa6669
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:252b23e8d43e3ff78cb6da9c6e7ee4700090c15d709d25d894e5db685346a725 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:030f7a25d5c567715f58a652e37ad167c7c3a53fb2f388cc4f7ec4a156875a78 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:79855239a556f9f257ed6aa1e1d59f2743bc6cf246c0254aefbff96c66ec7a9f - Debian:
ghcr.io/valkyoth/fluxheim@sha256:1f0332c03244396f669f366da4840c3e68ca1731596a3f965b0380e4731e2aea
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:7cd237a64854188431a9726e4d9758dfe055c09d6df2f8c411998a08411f38ff - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:e1cf4bbef2c099692083328091376060b442084624fb1ca011ca88991c67df97 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:01124f94aeb520a33e60c83c5ebe1dccb117c4425ae8ae4a8172da1e41a08465 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:b21f72f1c78ba87301f088dffbbd8976a2e2dacdac84a27a2c3a05e577a6de12
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:7ddd7678a7bcf812a3d5e3737550cb461375a6e31ac97bfdbe8bf37b0103f8f6 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:6a2fd227b95d9b53218627fbaa64e6a09f90848dbde21b9103f8be3e5daa1ac7 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:38a0424821474515dca31dbd55f80fead545d7e308219fee7ddd69390014deaf - Debian:
ghcr.io/valkyoth/fluxheim@sha256:7ff0475700b460b2a0f84db6349fcd6947f4cfbb94a6f39b66fa44f141ead580
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4