Files
minio-storage/setup-buckets.sh
Frank John Begornia f6d9dfcd59
Some checks failed
Deploy MinIO Production / deploy (push) Successful in 34s
Backup MinIO Buckets / backup (push) Failing after 14s
Enhance bucket setup script to set public read access for uploads/images, uploads, and templates folders
2026-01-06 16:00:02 +08:00

113 lines
3.3 KiB
Bash

#!/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"