All releases

v0.4.8

Signedpublished August 18, 2026

What changed

Added

  • install.sh --acme-ca=staging orders certificates from Let's Encrypt's staging CA. Production allows 5 certificates per exact set of identifiers per 168h, and every test cycle that starts from an empty certificate store spends one: uninstall.sh --purge removes the traefik-acme volume, and the first install after enabling userns-remap moves Docker's data root to /var/lib/docker/<uid>.<gid>, orphaning the old volume just the same. Five reinstalls on one hostname exhaust the quota; Traefik then logs a 429 and serves its self-signed TRAEFIK DEFAULT CERT, which reaches the operator as an invalid-certificate warning on a host that otherwise installed cleanly. Staging certificates are untrusted, but the issuance path — DNS, :443, TLS-ALPN-01, the ACME store — is the same one, so a test install still proves it works. DEVGRAIL_ACME_CA is the env-var form; a directory URL is accepted for a private CA (pebble, an internal ACME server).

    Each CA keeps its own store file under the traefik-acme volume — acme.json for production, acme-staging.json for staging — because acme.json holds the registered ACME account and an account from one CA is unknown to another. That also means a staging test cannot overwrite production certificates that the rate limit would not let you re-issue, and switching back with --acme-ca=production picks them up again instead of re-ordering. An upgrade that names no CA keeps whichever one the prior install used, and the closing banner says plainly when certificates are coming from a non-production CA.

Container images

registry build 16
amd64747 MB
sha256:25cf3f546c4f6ac9037a544766b15cda582a0b46be74fafe27af128937303799
Download
arm64621 MB
sha256:ebf6d90c31f4a9a3783194313ae4e0ae3fe98510f53695428350040867a2cdb0
Download
registry build 16
amd6445 MB
sha256:d247173f739df9981ed20d9a658977b7967382467e4de93700dc5cfe60ca56fe
Download
arm6444 MB
sha256:d2e425fbdce0c03cfd31709fb1840a2517664e442de6f6e386795e2068ca26a6
Download

Installer files

docker-compose.yml14 KBsha256:4681b04b3e2b93b79c76846b51c9e0b529dc59742311e42d77716bda482c6a9b
install.sh123 KBsha256:b8fcfae6b2d6dcb50c8bcb51415d3e8ff2def96ca39d1f89e0476bde16d0d464
traefik-dynamic-http.yml5 KBsha256:e344c8efd13c7d84996e2ebfbc75dcee2d995d8538c8a245c89c0e44fad0089b
traefik-dynamic.yml6 KBsha256:d18fa561b8eb7d53b015284e0246b2d05953bf281b65269c1fae3d6883530db6
uninstall.sh31 KBsha256:d8dc586f38e0cf33eadc126d75b303c660e970e55028f60ad4e2872c40cbaa71

Signature

ecdsa-p256-sha256key f1f1eaf642454d65

One signature covers every artifact above. It is made off this host, and neither this site nor the registry behind it can check it — that is the point, and it is why verifying it catches things a checksum from the same server cannot. How to verify it.

Verify devgrail-container (amd64)
curl -fsSL https://web-dev.trixibot.com/api/registry/releases/v0.4.8 -o release.json

# -j, not -r: -r appends a newline the signer never saw, and the check fails.
jq -j '.signature.payload'   release.json > payload
jq -r '.signature.signature' release.json | base64 -d > payload.sig

openssl dgst -sha256 -verify devgrail-release.pem -signature payload.sig payload
# -> Verified OK

# The payload must name this release, so an older signed one cannot be replayed.
head -2 payload

# ...and it must name this exact file. -qxF: whole line, literal.
grep -qxF 'image devgrail-container 16 amd64 25cf3f546c4f6ac9037a544766b15cda582a0b46be74fafe27af128937303799' payload && echo "digest is covered by the signature"
The signed payload — shown for reading, not for verifying

Copy this from the manifest with jq -j, never from this page: the signature covers exact bytes, and rendering here drops the trailing newline the signer included.

devgrail-release-signature-v1
release v0.4.8
asset docker-compose.yml 15 4681b04b3e2b93b79c76846b51c9e0b529dc59742311e42d77716bda482c6a9b
asset install.sh 15 b8fcfae6b2d6dcb50c8bcb51415d3e8ff2def96ca39d1f89e0476bde16d0d464
asset traefik-dynamic-http.yml 14 e344c8efd13c7d84996e2ebfbc75dcee2d995d8538c8a245c89c0e44fad0089b
asset traefik-dynamic.yml 15 d18fa561b8eb7d53b015284e0246b2d05953bf281b65269c1fae3d6883530db6
asset uninstall.sh 15 d8dc586f38e0cf33eadc126d75b303c660e970e55028f60ad4e2872c40cbaa71
image devgrail-container 16 amd64 25cf3f546c4f6ac9037a544766b15cda582a0b46be74fafe27af128937303799
image devgrail-container 16 arm64 ebf6d90c31f4a9a3783194313ae4e0ae3fe98510f53695428350040867a2cdb0
image devgrail-server 16 amd64 d247173f739df9981ed20d9a658977b7967382467e4de93700dc5cfe60ca56fe
image devgrail-server 16 arm64 d2e425fbdce0c03cfd31709fb1840a2517664e442de6f6e386795e2068ca26a6