@girish said:
The main issue is/was signing docker images
@girish
True, tags are mutable, so pulling by tag alone leaves you vulnerable if a registry is compromised.
Container signing verifies provenance (who built it), while referencing an image by digest (image@sha256:...) guarantees integrity (that it hasn't been altered). If the Cloudron app manifest explicitly pins container digests, you effectively get both: Cloudron verifies the authenticity of the app manifest, and the digest ensures the container pulled from the registry hasn't been tampered with.
As a quick note on mirroring: docker tag & push actually preserves digests in most OCI registries, but using tools like crane copy or skopeo is definitely the right approach since they transfer images directly between registries without local daemon overhead or pulling down heavy layers.
Regarding experience with container signing: the modern standard is Cosign (part of Sigstore). Because Cosign stores signatures as standard OCI artifacts inside the registry, it works out-of-the-box with almost every modern registry today (Docker Hub, GHCR, Harbor, AWS ECR, etc.) without requiring special server-side setup.