186 lines
5.3 KiB
Bash
Executable File
186 lines
5.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Configure - Generate configuration files
|
|
# Run as appuser (mariano), no sudo required
|
|
#
|
|
# Usage:
|
|
# ./configure.sh
|
|
#
|
|
# Generates:
|
|
# - Nginx configs for core_nest
|
|
# - Validates .env files
|
|
# - Outputs to .generated/ directory
|
|
#
|
|
# After running this, admin runs: sudo ./setup.sh
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
GEN_DIR="$SCRIPT_DIR/.generated"
|
|
CORE_NEST_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
echo "=== Core Nest Configure ==="
|
|
echo ""
|
|
echo "This script generates configuration files for deployment."
|
|
echo "Run as appuser (no sudo required)."
|
|
echo ""
|
|
|
|
# Ensure we're NOT running as root
|
|
if [ "$EUID" -eq 0 ]; then
|
|
echo "ERROR: Do not run this script with sudo"
|
|
echo "Run as appuser instead: ./configure.sh"
|
|
exit 1
|
|
fi
|
|
|
|
# =============================================================================
|
|
# 1. Create .generated directory
|
|
# =============================================================================
|
|
echo "Step 1: Preparing output directory..."
|
|
mkdir -p "$GEN_DIR"
|
|
echo " Output directory: $GEN_DIR"
|
|
|
|
# =============================================================================
|
|
# 2. Load and validate environment
|
|
# =============================================================================
|
|
echo ""
|
|
echo "Step 2: Loading environment..."
|
|
|
|
# Load core_nest/.env
|
|
if [ -f "$CORE_NEST_ROOT/.env" ]; then
|
|
set -a
|
|
source "$CORE_NEST_ROOT/.env"
|
|
set +a
|
|
echo " Loaded: core_nest/.env"
|
|
else
|
|
echo " ERROR: core_nest/.env not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Validate required vars
|
|
REQUIRED_VARS="NEST_NAME DEPLOYMENT_NAME NETWORK_NAME MANAGED_DOMAIN PAWPRINT_DOMAIN"
|
|
MISSING=""
|
|
for var in $REQUIRED_VARS; do
|
|
if [ -z "${!var}" ]; then
|
|
MISSING="$MISSING $var"
|
|
fi
|
|
done
|
|
|
|
if [ -n "$MISSING" ]; then
|
|
echo " ERROR: Missing required vars in core_nest/.env:$MISSING"
|
|
exit 1
|
|
fi
|
|
|
|
echo " NEST_NAME: $NEST_NAME"
|
|
echo " DEPLOYMENT_NAME: $DEPLOYMENT_NAME"
|
|
echo " MANAGED_DOMAIN: $MANAGED_DOMAIN"
|
|
echo " PAWPRINT_DOMAIN: $PAWPRINT_DOMAIN"
|
|
|
|
# =============================================================================
|
|
# 3. Check .env files for services
|
|
# =============================================================================
|
|
echo ""
|
|
echo "Step 3: Checking service .env files..."
|
|
|
|
for service in amar pawprint; do
|
|
SERVICE_DIR="$CORE_NEST_ROOT/$service"
|
|
if [ ! -f "$SERVICE_DIR/.env" ]; then
|
|
if [ -f "$SERVICE_DIR/.env.example" ]; then
|
|
echo " Creating $service/.env from example..."
|
|
cp "$SERVICE_DIR/.env.example" "$SERVICE_DIR/.env"
|
|
echo " ⚠️ Edit $service/.env with production values before deployment"
|
|
else
|
|
echo " ERROR: $service/.env.example not found"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo " ✓ $service/.env exists"
|
|
fi
|
|
done
|
|
|
|
# =============================================================================
|
|
# 4. Generate Nginx configuration
|
|
# =============================================================================
|
|
echo ""
|
|
echo "Step 4: Generating nginx configuration..."
|
|
|
|
TEMPLATE="$SCRIPT_DIR/nginx/core_nest.conf.template"
|
|
OUTPUT="$GEN_DIR/core_nest.nginx.conf"
|
|
|
|
if [ ! -f "$TEMPLATE" ]; then
|
|
echo " ERROR: Template not found: $TEMPLATE"
|
|
exit 1
|
|
fi
|
|
|
|
# Check for SSL certificates (just warn, don't fail)
|
|
SSL_CERT_AMAR="/etc/letsencrypt/live/nest.mcrn.ar/fullchain.pem"
|
|
SSL_KEY_AMAR="/etc/letsencrypt/live/nest.mcrn.ar/privkey.pem"
|
|
SSL_CERT_PAWPRINT="/etc/letsencrypt/live/mcrn.ar/fullchain.pem"
|
|
SSL_KEY_PAWPRINT="/etc/letsencrypt/live/mcrn.ar/privkey.pem"
|
|
|
|
echo " Checking SSL certificates..."
|
|
for cert in "$SSL_CERT_AMAR" "$SSL_KEY_AMAR" "$SSL_CERT_PAWPRINT" "$SSL_KEY_PAWPRINT"; do
|
|
if [ -f "$cert" ]; then
|
|
echo " ✓ $(basename $cert)"
|
|
else
|
|
echo " ⚠️ Missing: $cert"
|
|
echo " Admin will need to generate SSL certificates"
|
|
fi
|
|
done
|
|
|
|
# Generate nginx config from template
|
|
export NEST_NAME DEPLOYMENT_NAME MANAGED_DOMAIN PAWPRINT_DOMAIN
|
|
export SSL_CERT_AMAR SSL_KEY_AMAR SSL_CERT_PAWPRINT SSL_KEY_PAWPRINT
|
|
|
|
envsubst < "$TEMPLATE" > "$OUTPUT"
|
|
|
|
echo " ✓ Generated: $OUTPUT"
|
|
|
|
# =============================================================================
|
|
# 5. Generate deployment summary
|
|
# =============================================================================
|
|
echo ""
|
|
echo "Step 5: Generating deployment summary..."
|
|
|
|
SUMMARY="$GEN_DIR/DEPLOYMENT.txt"
|
|
|
|
cat > "$SUMMARY" <<EOF
|
|
Core Nest Deployment Configuration
|
|
Generated: $(date)
|
|
User: $USER
|
|
Host: $(hostname)
|
|
|
|
=== Environment ===
|
|
NEST_NAME=$NEST_NAME
|
|
DEPLOYMENT_NAME=$DEPLOYMENT_NAME
|
|
NETWORK_NAME=$NETWORK_NAME
|
|
MANAGED_DOMAIN=$MANAGED_DOMAIN
|
|
PAWPRINT_DOMAIN=$PAWPRINT_DOMAIN
|
|
|
|
=== Generated Files ===
|
|
- core_nest.nginx.conf → /etc/nginx/sites-available/core_nest.conf
|
|
|
|
=== Next Steps ===
|
|
1. Review generated files in: $GEN_DIR
|
|
2. Have admin run: sudo ./setup.sh
|
|
EOF
|
|
|
|
echo " ✓ Generated: $SUMMARY"
|
|
|
|
# =============================================================================
|
|
# Done
|
|
# =============================================================================
|
|
echo ""
|
|
echo "=== Configuration Complete ==="
|
|
echo ""
|
|
echo "Generated files in: $GEN_DIR"
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " 1. Review generated nginx config:"
|
|
echo " cat $OUTPUT"
|
|
echo ""
|
|
echo " 2. Have system admin run:"
|
|
echo " sudo ./setup.sh"
|
|
echo ""
|
|
echo " 3. Or review deployment summary:"
|
|
echo " cat $SUMMARY"
|
|
echo ""
|