[1.7.0] - 2026-10-19
VERSION is 1.7.0. This commit does not push the git tag. Images, the Helm chart, and the Linux packages are published when release.yml runs on v1.7.0.
Added
- S3 DeleteObjects.
POST /{bucket}?deleteaccepts the AWS XML body, Quiet mode, and up to 1000 keys. The body must carryContent-MD5or one ofx-amz-checksum-crc32,crc32c,sha1,sha256,crc64nvme. A key can nameversionId. Errors are per key and the response is HTTP 200 when the request itself is valid. A missing key with no version id is a success. A missing version id isNoSuchVersion. Object lock and legal hold are enforced;x-amz-bypass-governance-retention: trueskips GOVERNANCE when the caller hass3:BypassGovernanceRetention. COMPLIANCE and legal hold are not skipped. A versioned delete without a version id writes a delete marker. Each deleted key emits the same outbox event as a singleDeleteObject. Authorization iss3:DeleteObjectors3:DeleteObjectVersionper key. Presigned DeleteObjects is rejected. - Client compatibility suite.
go test ./internal/api/s3/ -run TestS3ClientCompatibilityruns aws-cli, mc, rclone, and restic when they are onPATH. CI jobs3-compatrequires all four. The matrix is docs/compatibility.md.TestAWSSDKDeleteObjectscalls DeleteObjects through aws-sdk-go-v2. - Helm chart
deploy/helm/datasafes3. Default install is a StatefulSet, a PVC, and Bolt.values-ha.yamlturns on Postgres metadata andSTORAGE_HA_ENABLED. Kafka and NATS stay optional event sinks. Secrets come fromauth.existingSecretor from values;production: truewill not render without an existing Secret. Services cover the S3 API (9000) and the console (8080). Ingress can terminate TLS. Probes call/healthz. The pod is non-root with a read-only root filesystem. PodDisruptionBudget is on. ServiceMonitor and NetworkPolicy are optional. The image tag defaults tovplusappVersion. Guide: docs/kubernetes.md. CI jobhelm-smokelints, renders, and installs into kind, then puts and gets an object. - Production Compose at
deploy/compose/production: persistent volume, healthcheck, restart policy, env file,STORAGE_DEVhardcoded false, S3 bound to127.0.0.1, Caddy in front, optional TLS profile. The Caddyfile does not proxy/metrics. - Adoption docs. docs/migrate-from-minio.md (
mc mirror,rclone sync) and docs/production-checklist.md. - Linux packages.
datasafes3.deband.rpmforlinux/amd64andlinux/arm64, built byrelease.ymlon av*tag. The package installsdatasafe-storage-server,storage-cli, the Kafka bridge, adatasafes3system user,/etc/datasafes3/datasafes3.env(kept on upgrade),/var/lib/datasafes3(kept on uninstall), anddatasafes3.service. The unit is not enabled and not started. Guide: docs/linux-packages.md. CI joblinux-packagesinstalls the packages in Debian and Rocky containers.
Changed
- Release images are multi-arch. On a
v*tag,release.ymlbuildslinux/amd64andlinux/arm64with BuildKit--provenance=mode=maxand--sbom=true, signs with cosign, and pushes the Helm chart tooci://ghcr.io/direktorbani/charts. The workflow does not run on this branch. - Installers, Compose, and the older Helm chart default to
v1.7.0.scripts/check-release-pins.shfails CI when a pin still names another version. The new chart'sappVersionand chart version must equalVERSION.
Unchanged
- A single node with Bolt, no Postgres, and no broker still starts from the same binary and the same container.
STORAGE_DEVstays off unless you ask for it. The single-node resource gate still compares this build withghcr.io/direktorbani/datasafe-storage-server:v1.5.0.
Container images
ghcr.io/direktorbani/datasafe-storage-server:v1.7.0ghcr.io/direktorbani/datasafe-console:v1.7.0
Multi-arch (linux/amd64, linux/arm64) images include BuildKit SBOM and provenance. CycloneDX SBOM files and cosign signatures are attached.
Helm chart: oci://ghcr.io/direktorbani/charts/datasafes3 version 1.7.0.
Linux packages
datasafes3_1.7.0_amd64.debdatasafes3_1.7.0_arm64.debdatasafes3-1.7.0-1.x86_64.rpmdatasafes3-1.7.0-1.aarch64.rpmSHA256SUMS
Each package and SHA256SUMS has a cosign bundle (*.bundle). The service is not started on install. See docs/linux-packages.md.
See SECURITY.md for cosign verify instructions.