johnhkchen 8265056d24 Add shared network configuration for Directus-MinIO communication
Changes:
- Connect MinIO to Directus network (fs4w08s00ccgskog08k4wg4w)
- Enable direct container-to-container communication
- Allows Directus to access MinIO via http://minio:9000 endpoint

This fixes the networking isolation issue where Directus and MinIO
were on separate Docker networks and couldn't communicate internally.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 14:17:11 -07:00
2025-10-22 13:40:06 -07:00
2025-10-22 13:40:06 -07:00

MinIO Object Storage

S3-compatible object storage for b28.dev infrastructure.

Purpose

  • Backups: PostgreSQL dumps, Docker volume snapshots
  • Media Storage: Directus file uploads (portfolio + demos)
  • Demo Artifacts: Cached API responses, datasets

Deployment

Web Console: https://objects.b28.dev (port 9001) S3 API: https://s3.b28.dev (port 9000)

Ports:

  • 9000: S3 API (programmatic access) → s3.b28.dev
  • 9001: Web Console (admin UI) → objects.b28.dev

Configuration

Environment Variables

Copy .env.example to .env and configure:

MINIO_ROOT_USER=your-admin-username
MINIO_ROOT_PASSWORD=your-strong-password

Credentials

The same credentials are used for:

Deployment on Coolify

  1. Push this directory to Gitea
  2. In Coolify, create new resource → Git Repository
  3. Point to this repo/directory
  4. Set environment variables
  5. Deploy

Initial Setup

After deployment:

  1. Login to https://objects.b28.dev

  2. Create buckets:

    • backups (private)
    • directus-uploads (public-read)
    • demo-artifacts (private)
  3. Create service accounts:

    • Directus: read/write to directus-uploads
    • Backup scripts: write-only to backups

Bucket Structure

minio/
├── backups/
│   ├── postgres/           # Daily PostgreSQL dumps
│   ├── volumes/            # Docker volume snapshots
│   └── configs/            # Infrastructure configs
├── directus-uploads/       # Directus file storage
│   ├── portfolio/          # Portfolio media
│   └── events/             # Events demo media
└── demo-artifacts/         # Demo-specific data
    └── events-demo/
        ├── luma-cache/     # Cached Lu.ma responses
        └── ai-analysis/    # Cached AI analyses

Access via MinIO Client

# Configure alias
mc alias set homelab https://objects.b28.dev <access-key> <secret-key>

# List buckets
mc ls homelab

# Upload file
mc cp backup.sql homelab/backups/postgres/

# Download file
mc cp homelab/backups/postgres/backup.sql ./

Backup Strategy

See /scripts/backup-to-minio.sh for automated backup implementation.

Frequency: Daily at 2:00 AM UTC Retention: 7 daily, 4 weekly, 3 monthly

Description
No description provided
Readme 31 KiB