#!/bin/bash # Setup MinIO buckets for all Crew applications set -e MINIO_ALIAS="crewminio" MINIO_ENDPOINT="http://crew-minio-prod:9000" CONTAINER_NAME="crew-minio-prod" DEPLOY_DIR="/var/www/apps/minio-storage" echo "==========================================" echo "Setting up MinIO buckets for Crew apps" echo "==========================================" echo "" # Load credentials from .env file echo "🔑 Loading MinIO credentials from .env" if [ -f "$DEPLOY_DIR/.env" ]; then set -a source "$DEPLOY_DIR/.env" set +a MINIO_USER="${MINIO_ROOT_USER}" MINIO_PASSWORD="${MINIO_ROOT_PASSWORD}" elif [ -f ".env" ]; then set -a source ".env" set +a MINIO_USER="${MINIO_ROOT_USER}" MINIO_PASSWORD="${MINIO_ROOT_PASSWORD}" else echo "⚠️ .env file not found, using defaults" MINIO_USER="minioadmin" MINIO_PASSWORD="minioadmin123" fi if [ -z "$MINIO_USER" ] || [ -z "$MINIO_PASSWORD" ]; then echo "❌ MINIO_ROOT_USER or MINIO_ROOT_PASSWORD not set in .env" exit 1 fi echo "✓ Credentials loaded (User: $MINIO_USER)" echo "" # Check if MinIO is running if ! docker ps | grep -q "$CONTAINER_NAME"; then echo "❌ Error: $CONTAINER_NAME container is not running" echo " Available containers:" docker ps --format "{{.Names}}" exit 1 fi echo "Installing MinIO Client (mc)..." docker exec $CONTAINER_NAME sh -c " if ! command -v mc &> /dev/null; then curl -O https://dl.min.io/client/mc/release/linux-amd64/mc && \ chmod +x mc && \ mv mc /usr/local/bin/ fi " echo "✓ MinIO Client installed" echo "" # Configure MinIO client echo "⚙️ Configuring MinIO client" docker exec $CONTAINER_NAME mc alias set $MINIO_ALIAS $MINIO_ENDPOINT "$MINIO_USER" "$MINIO_PASSWORD" echo "" # Create buckets for each application BUCKETS=("crewsportswear" "merchbay" "email-reports") for BUCKET in "${BUCKETS[@]}"; do echo "Creating bucket: $BUCKET" docker exec $CONTAINER_NAME mc mb $MINIO_ALIAS/$BUCKET --ignore-existing # Set public read policy for uploads/images folder echo " ↳ Setting public read access for $BUCKET/uploads/images/" docker exec $CONTAINER_NAME mc anonymous set download $MINIO_ALIAS/$BUCKET/uploads/images/ # Also set for uploads folder to be safe echo " ↳ Setting public read access for $BUCKET/uploads/" docker exec $CONTAINER_NAME mc anonymous set download $MINIO_ALIAS/$BUCKET/uploads/ # Set public read for /t folder (templates/thumbnails) echo " ↳ Setting public read access for $BUCKET/t/" docker exec $CONTAINER_NAME mc anonymous set download $MINIO_ALIAS/$BUCKET/t/ echo " ✓ Bucket $BUCKET ready" echo "" done echo "==========================================" echo "✓ All buckets created successfully!" echo "==========================================" echo "" echo "Buckets created:" for BUCKET in "${BUCKETS[@]}"; do echo " - $BUCKET" done echo "" echo "Access MinIO Console:" echo " Local: http://localhost:9001" echo " Production: https://console.crewsportswear.app" echo "" echo "Credentials:" echo " Username: $MINIO_USER" echo " Password: $MINIO_PASSWORD" echo "" echo "S3 Endpoint:" echo " Local: http://crew-minio:9000 (from app containers)" echo " http://localhost:9000 (from host)" echo " Production: https://minio.crewsportswear.app"