Artifacts — Generic HTTPS static file repository for firmware/device artifacts, flags and OTA images. ⬆ índice
Artifacts
Generic HTTPS static file repository used by multiple external systems: TLS
trust-store artifacts for firmware, OTA firmware images, and externally
consumed JSON flags/config. v1 is nginx:alpine serving a read-only bind
mount, no auth, no API.
Quick start
./infra up infrastructure/artifacts
./infra status infrastructure/artifacts
./infra logs infrastructure/artifacts
Model
Each top-level directory under infrastructure/artifacts/data/ is an
independent endpoint/system:
data/truststore/— TLS trust-store artifacts (e.g..atcbbundles).data/firmware/— OTA firmware images.data/flags/— externally-consumed JSON flags/config.
Publishing a new artifact or adding a new endpoint is a filesystem operation
(mkdir + copy) — it never requires a config or code change. See
infrastructure/artifacts/README.md for the full model, cache-control
rules, and the naming convention for publishing new versions without
overwriting existing (immutably-cached) files.
Minimal configuration
- No secrets. Service env:
infrastructure/artifacts/.env.template-> generatedinfrastructure/artifacts/.env(onlyPORT). - No database, no other project dependency.
Traefik exposure
Registered as REMOTE_ENDPOINT_KEY=ARTIFACTS in
infrastructure/artifacts/project.conf, wired in
deployment/remote.env (REMOTE_ENDPOINT_KEYS,
REMOTE_ENDPOINT_DOMAIN_ARTIFACTS, REMOTE_ENDPOINT_PORT_ARTIFACTS) and
deployment/topology.env (ARTIFACTS_PUBLIC_PORT), same pattern as
N8N/ESP_TOOLS/etc. Router/service entries in
core/traefik/dynamic/routes.yml are generated by
deployment/scripts/python/render_traefik_config.py (see
docs/internal/operations/internal-service-path-mappings.md for when to use
Traefik vs. the Portal proxy — this service intentionally uses Traefik
because it must be reachable by unauthenticated external devices, not
through Portal/Zitadel session auth).
Related documentation
- Service README (data model, cache rules, extension path):
infrastructure/artifacts/README.md - Project standard:
docs/internal/operations/project-standard.md - Internal service path mappings (Traefik vs Portal proxy):
docs/internal/operations/internal-service-path-mappings.md