MinIO S3-compatible object storage for recordings, assets, and backups.
Overview¶
MinIO provides S3-compatible object storage. The SpaceMusic installation is pinned to version RELEASE.2025-04-22T22-12-26Z -- this is the last MinIO community edition release that includes the admin console, SSO login, bucket management, and IAM in the web UI.
Do not upgrade MinIO
All MinIO community releases after RELEASE.2025-04-22 removed the admin console, SSO, and bucket management from the web UI, replacing them with a minimal "object browser." The pinned version must be preserved unless migrating to AIStor (enterprise).
Access¶
| Endpoint | URL |
|---|---|
| Console (web UI) | storage.spacemusic.tv |
| S3 API | storage-api.spacemusic.tv |
| Health check | storage-api.spacemusic.tv/minio/health/live |
The console uses Authentik OIDC for login. The S3 API uses standard AWS-style credentials (access key + secret key).
Buckets¶
| Bucket | Purpose | Lifecycle |
|---|---|---|
recordings |
LiveKit egress recordings | 30-day expiry |
textures |
vvvv rendered textures | Never expires |
assets |
Project files, 3D models, images | Never expires |
exports |
Client deliverables | 90-day expiry |
backups |
Config backups, DB dumps | 90-day expiry |
Lifecycle policies are applied via mcli ilm add --expiry-days N.
Authentication¶
MinIO uses Authentik OIDC with the following configuration:
- Authentik provider slug:
minio - Signing key: RS256 (required -- the default HS256 self-signed cert does not work)
- Claim:
groups-- MinIO maps Authentik group names directly to IAM policy names
OIDC config must be set via both environment variables and mcli admin config set for full effect.
IAM Policies¶
MinIO uses Authentik group names as policy names -- they must match exactly:
| Authentik Group | MinIO Policy | Permissions |
|---|---|---|
spacemusic-admins |
spacemusic-admins |
Full admin + S3 access |
authentik Admins |
authentik Admins |
Full admin + S3 access |
spacemusic-studio |
spacemusic-studio |
S3 read/write on all buckets |
spacemusic-viewers |
spacemusic-viewers |
S3 read-only |
Service Accounts¶
Programmatic access uses service accounts (credentials stored in 1Password):
| Account | Policy | Purpose |
|---|---|---|
livekit-egress |
egress-write |
Write recordings to recordings bucket |
studio-rclone |
readwrite |
rclone mount for studio file sync |
backup-agent |
backup-write |
Automated config backups to backups bucket |
CLI Access¶
MinIO CLI is installed on the server as mcli (not mc, which conflicts with GNU Midnight Commander):
# List all buckets
mcli ls spacemusic/
# List objects in a bucket
mcli ls spacemusic/recordings/
# Copy a file to storage
mcli cp ./file.mp4 spacemusic/recordings/
# Create a new bucket
mcli mb spacemusic/new-bucket
# Check lifecycle rules
mcli ilm ls spacemusic/recordings
The spacemusic alias is pre-configured on the server pointing to http://localhost:9000.
Monitoring¶
Prometheus scrapes MinIO metrics at spacemusic-minio:9000/minio/v2/metrics/cluster using a bearer token. These metrics power the "Storage" Grafana dashboard.
Kuvasz monitors both the S3 API health endpoint and the console URL for uptime tracking.