No description
- Go 98.5%
- Dockerfile 0.9%
- Makefile 0.6%
| .github/workflows | ||
| cmd/module | ||
| internal | ||
| CHANGELOG.md | ||
| COMPATIBILITY.md | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| muxcore.json | ||
| README.md | ||
storage-s3
S3/MinIO-backed storage module for MuxCore. Local-first: tests and the optional installer profile target MinIO on your laptop, not AWS accounts.
Run (local MinIO)
# terminal A — MinIO (or use installer profile s3-minio below)
docker run --rm -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin -e MINIO_ROOT_PASSWORD=minioadmin \
minio/minio server /data --console-address :9001
# terminal B — module
export S3_ENDPOINT=127.0.0.1:9000
export S3_BUCKET=muxcore
export S3_ACCESS_KEY=minioadmin
export S3_SECRET_KEY=minioadmin
export S3_PATH_STYLE=true
export MUXCORE_GRPC_ADDR=127.0.0.1:9090
export MUXCORE_INSECURE_DISABLE_TLS=true
go run ./cmd/module
Listens gRPC :9610, HTTP health :9611. Core (≥0.5.4) dials announce/HTTPAddr for capability storage.
Installer optional profile: s3-minio
Local-only. Opt-in compose/installer profile that adds MinIO + this module alongside (or instead of) filesystem storage. Not part of the default laptop demo stack.
Sketch (wire into muxcore-installer / compose when profiles land):
services:
minio:
image: minio/minio:latest
profiles: ["s3-minio"]
command: ["server", "/data", "--console-address", ":9001"]
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio-data:/data
storage-s3:
image: ghcr.io/muxcore-media/storage-s3:latest
profiles: ["s3-minio"]
environment:
S3_ENDPOINT: minio:9000
S3_BUCKET: muxcore
S3_ACCESS_KEY: minioadmin
S3_SECRET_KEY: minioadmin
S3_PATH_STYLE: "true"
S3_USE_SSL: "false"
MUXCORE_GRPC_ADDR: core:9090
MUXCORE_INSECURE_DISABLE_TLS: "true"
depends_on: [minio]
volumes:
minio-data:
Enable with COMPOSE_PROFILES=s3-minio (or installer flag once exposed). Default credentials above are for local lab only.
Settings
endpoint, bucket, region, access_key, secret_key, prefix, use_ssl, path_style.
Tests
make test
- Default (no Docker / no AWS):
gofakes3in-memory S3 API overhttptest— Put/Get/List/Delete + gRPC CapabilityStorage dial smoke. - Optional: if Docker is available,
TestMinIO_PutGetListDeleteruns the same CRUD against a realminio/miniocontainer (skips otherwise).
go test never requires AWS credentials or cloud accounts.