Skip to content

Remote storage (S3) ​

Use object storage for large packages or CDN. For a single disk, see local storage.

Compatible with MinIO, Cloudflare R2, and AWS S3. Set storage.driver: s3.

Public bucket storage.s3 ​

KeyTypeDefaultMeaningWhen to change
endpointstring""API endpointRequired for MinIO/R2; AWS may use the default
regionstringautoRegionReal AWS region; R2 can keep auto
bucketstring""Public artifact bucketRequired when driver=s3
access_key / secret_keystring""CredentialsMinimum: Put/Get public objects; inject via env
use_path_stylebooltruePath-style URLsVirtual-hosted AWS can set false
public_base_urlstring""External download root; empty builds anonymous GET from endpoint+bucketPoint at the CDN origin

Env: KIRIVERS_STORAGE_S3_*, KIRIVERS_STORAGE_S3_PUBLIC_BASE_URL.

Private bucket storage.private ​

GeoIP MMDB and similar. If driver=s3 and the private bucket is empty, GeoIP upload fails and must not write the public bucket. Env: KIRIVERS_STORAGE_PRIVATE_*.

Do not mix installers and GeoIP in one bucket.

Multi-node downloads ​

Requires storage.driver=s3 and cache.driver=redis. See cluster.

  • cluster.download: s3: check returns public object URLs (CDN-capable).
  • cluster.download: local: app nodes proxy bytes; check uses private, no-store.

On failure, read process storage logs (mod=storage).

Project PATCH currently rejects storage_visibility=private. Signed URLs still apply on local-proxy paths. See CDN and downloads.