Skip to content

Guide: use Garage for local S3 storage, add initS3CompatibleStorage - #2770

Draft
amitaibu wants to merge 2 commits into
masterfrom
docs/s3-storage-garage-after-minio-archive
Draft

Guide: use Garage for local S3 storage, add initS3CompatibleStorage#2770
amitaibu wants to merge 2 commits into
masterfrom
docs/s3-storage-garage-after-minio-archive

Conversation

@amitaibu

@amitaibu amitaibu commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Closes #2769 (docs part).

The file storage guide told users to run MinIO for local development. That server is archived now, so the guide sets up Garage instead via devenv's services.garage.

While in there: initMinioStorage and MINIO_ACCESS_KEY were never MinIO-specific — it's an S3 client that talks to any S3-compatible server. So:

  • New initS3CompatibleStorage, with initMinioStorage kept as a {-# DEPRECATED #-} alias.
  • Credentials now also read from AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY, the names the AWS CLI and the rest of the S3 tooling use. MINIO_ACCESS_KEY / MINIO_SECRET_KEY are still tried first, so nothing existing breaks.

Files:

  • ihp/IHP/FileStorage/Config.hs — new function + deprecated alias
  • Guide/file-storage.markdown — Minio section → Garage section
  • Guide/config.markdown — "Minio Storage" → "S3 Compatible Storage"

Verified IHP.FileStorage.Config loads in ghci (Ok, 26 modules loaded), and the devenv snippet end-to-end against garage 2.3.0: layout apply, key import, bucket allow, then an S3 PUT + GET with the imported credentials (both 200). The key info || key import guard is there because a bare re-import fails with KeyAlreadyExists on the second devenv up.

The minio-hs client itself is still stale (no release since 1.7.0, jailbroken in NixSupport/overlay.nix) — that's the other half of #2769 and left out of this PR.

🤖 Generated with Claude Code

The MinIO server was archived and no longer receives updates, so the
file storage guide now sets up Garage via devenv's `services.garage`
for local development. `initMinioStorage` is unchanged, it's an S3
client and works against any S3 compatible server.

Verified the devenv snippet against garage 2.3.0: layout apply, key
import, bucket allow, and an S3 PUT/GET with the imported credentials.

Refs #2769

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@amitaibu
amitaibu marked this pull request as draft August 6, 2026 18:27
`initMinioStorage` was never MinIO specific, it's an S3 client that
talks to any S3 compatible server. Rename it accordingly and read
credentials from the standard `AWS_ACCESS_KEY_ID` /
`AWS_SECRET_ACCESS_KEY` env vars that the AWS CLI and the rest of the
S3 tooling ecosystem use.

Fully backwards compatible: `initMinioStorage` stays as a deprecated
alias, and `MINIO_ACCESS_KEY` / `MINIO_SECRET_KEY` are still read first.

Refs #2769

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@amitaibu amitaibu changed the title Guide: use Garage for local S3 compatible file storage Guide: use Garage for local S3 storage, add initS3CompatibleStorage Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MinIO server archived, minio-hs unmaintained — S3 file storage needs a new path

1 participant