Files
soaricarus_api/garage/entrypoint.sh
T
phoenix f07e0108cd
soaricarus_api CI / Check (pull_request) Successful in 6m2s
soaricarus_api CI / Rustfmt (pull_request) Successful in 6m11s
soaricarus_api CI / Test Suite (pull_request) Successful in 8m25s
soaricarus_api CI / Clippy (pull_request) Successful in 3m12s
soaricarus_api CI / build (pull_request) Successful in 4m34s
Getting closer
2026-07-28 13:08:33 -04:00

140 lines
4.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
set -e
BUCKET_NAME="${BUCKET_NAME:-soaricarus-storage}"
CREDENTIALS_FILE="/shared/garage-credentials.env"
SETUP_DONE="/shared/setup.done"
GARAGE_BIN="/usr/local/bin/garage"
# Function to write credentials
write_credentials() {
local access_key="$1"
local secret_key="$2"
mkdir -p "$(dirname "$CREDENTIALS_FILE")"
cat > "$CREDENTIALS_FILE" << EOF
GARAGE_ACCESS_KEY_ID=$access_key
GARAGE_SECRET_ACCESS_KEY=$secret_key
GARAGE_BUCKET_NAME=$BUCKET_NAME
GARAGE_ENDPOINT=http://localhost:3900
EOF
touch "$SETUP_DONE"
echo "✅ Credentials saved to $CREDENTIALS_FILE"
}
echo "Sleeping for a bit"
sleep 5
GARAGE_COMMAND_EXEC="$GARAGE_BIN -c /etc/garage.toml server"
# Check if setup already completed
if [ -f "$SETUP_DONE" ]; then
echo "️ Setup already completed. Starting Garage..."
exec $GARAGE_COMMANDS_EXEC
fi
echo "🔧 First-time setup - initializing Garage..."
# Start Garage in background for setup (just the binary, no daemon subcommand)
echo "⏳ Starting Garage in background..."
echo "GARAGE_BIN: $GARAGE_COMMAND_EXEC"
# $GARAGE_BIN "$@" &
# GARAGE_PID=$!
# $GARAGE_BIN -c /etc/garage.toml & GARAGE_PID=$!
$GARAGE_COMMAND_EXEC & GARAGE_PID=$!
echo "GARAGE_PID: $GARAGE_PID"
# echo "Command: $GARAGE_BIN $@"
# Apply cluster layout
if ! $GARAGE_BIN layout show 2>/dev/null | grep -q "Current cluster layout"; then
echo "📦 Applying cluster layout..."
NODE_ID=$($GARAGE_BIN node id | head -n1)
echo "Node ID: $NODE_ID"
sleep 5
echo "Assigning layout"
# $GARAGE_BIN layout assign --version 1 -z ny1 -c 4G $NODE_ID
$GARAGE_BIN layout assign -z ny1 -c 4G $NODE_ID
# $GARAGE_BIN status
sleep 5
# $GARAGE_BIN status
echo "Show layout"
$GARAGE_BIN layout show
sleep 5
echo "Applying layout"
$GARAGE_BIN layout apply --version 1
echo " ✅ Layout applied"
sleep 10
else
echo "️ Layout already applied"
fi
# Create bucket
echo "Bucket: $BUCKET_NAME"
if ! $GARAGE_BIN bucket info "$BUCKET_NAME" 2>/dev/null; then
echo "📦 Creating bucket: $BUCKET_NAME"
$GARAGE_BIN bucket create "$BUCKET_NAME"
sleep 10
else
echo "️ Bucket $BUCKET_NAME already exists"
fi
# Handle key
#if [ -n "$AWS_ACCESS_KEY_ID" ] && [ -n "$AWS_SECRET_ACCESS_KEY" ]; then
# echo "🔑 Using pre-defined credentials from .env"
# if ! $GARAGE_BIN key info "$AWS_ACCESS_KEY_ID" 2>/dev/null; then
# $GARAGE_BIN key import "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" "app-key"
# echo " ✅ Key imported: $AWS_ACCESS_KEY_ID"
# else
# echo " ️ Key already exists: $AWS_ACCESS_KEY_ID"
# fi
# ACCESS_KEY="$AWS_ACCESS_KEY_ID"
# SECRET_KEY="$AWS_SECRET_ACCESS_KEY"
#else
# echo "🔑 Generating new key..."
# KEY_OUTPUT=$($GARAGE_BIN key create --name "app-key")
# echo "$KEY_OUTPUT"
# ACCESS_KEY=$(echo "$KEY_OUTPUT" | grep 'Key ID:' | awk '{print $3}')
# SECRET_KEY=$(echo "$KEY_OUTPUT" | grep 'Secret key:' | awk '{print $3}')
# echo " ✅ Key generated: $ACCESS_KEY"
#fi
sleep 15
echo "🔑 Generating new key..."
KEY_OUTPUT=$($GARAGE_BIN key create --name "app-key")
echo "$KEY_OUTPUT"
ACCESS_KEY=$(echo "$KEY_OUTPUT" | grep 'Key ID:' | awk '{print $3}')
SECRET_KEY=$(echo "$KEY_OUTPUT" | grep 'Secret key:' | awk '{print $3}')
echo " ✅ Key generated: $ACCESS_KEY"
# Wait for Garage to be ready
echo "⏳ Waiting for Garage API..."
until curl -s -f "http://localhost:3900/v0/status" > /dev/null 2>&1; do
echo " Not ready yet, sleeping 2s..."
sleep 2
done
echo "✅ Garage API is responding!"
# Grant permissions
$GARAGE_BIN bucket allow --read --write --owner "$BUCKET_NAME" --key "$ACCESS_KEY"
echo " ✅ Permissions granted"
# Save credentials
write_credentials "$ACCESS_KEY" "$SECRET_KEY"
echo "🎉 Setup complete!"
echo " Bucket: $BUCKET_NAME"
echo " Access Key: $ACCESS_KEY"
# Stop background Garage
echo "⏹️ Stopping background Garage..."
kill "$GARAGE_PID"
wait "$GARAGE_PID" 2>/dev/null || true
# Start Garage in foreground
echo "🚀 Starting Garage in foreground..."
# exec $GARAGE_BIN "$@"
exec $GARAGE_COMMANDS_EXEC