stupa-pdf-api/scripts/create-env.sh

129 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# STUPA PDF API Environment Setup Script
# This script helps create a .env file with all required configurations
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Default values
DEFAULT_MYSQL_DB="stupa"
DEFAULT_MYSQL_USER="stupa"
DEFAULT_MYSQL_PORT="3306"
DEFAULT_RATE_IP_PER_MIN="60"
DEFAULT_RATE_KEY_PER_MIN="30"
echo -e "${GREEN}STUPA PDF API - Environment Configuration${NC}"
echo "=========================================="
echo ""
# Check if .env already exists
if [ -f .env ]; then
echo -e "${YELLOW}Warning: .env file already exists!${NC}"
read -p "Do you want to overwrite it? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Aborted."
exit 1
fi
echo ""
fi
# Function to generate random password
generate_password() {
openssl rand -base64 32 | tr -d "=+/" | cut -c1-25
}
# Database Configuration
echo -e "${GREEN}Database Configuration${NC}"
echo "----------------------"
read -p "MySQL Database name [${DEFAULT_MYSQL_DB}]: " MYSQL_DB
MYSQL_DB=${MYSQL_DB:-$DEFAULT_MYSQL_DB}
read -p "MySQL Username [${DEFAULT_MYSQL_USER}]: " MYSQL_USER
MYSQL_USER=${MYSQL_USER:-$DEFAULT_MYSQL_USER}
read -p "MySQL Port [${DEFAULT_MYSQL_PORT}]: " MYSQL_PORT
MYSQL_PORT=${MYSQL_PORT:-$DEFAULT_MYSQL_PORT}
# Generate secure passwords
echo ""
echo -e "${YELLOW}Generating secure passwords...${NC}"
MYSQL_PASSWORD=$(generate_password)
MYSQL_ROOT_PASSWORD=$(generate_password)
MASTER_KEY=$(generate_password)
echo "MySQL Password: ${MYSQL_PASSWORD}"
echo "MySQL Root Password: ${MYSQL_ROOT_PASSWORD}"
echo "Master Key: ${MASTER_KEY}"
echo ""
# Rate Limiting Configuration
echo -e "${GREEN}Rate Limiting Configuration${NC}"
echo "---------------------------"
read -p "Rate limit per IP per minute [${DEFAULT_RATE_IP_PER_MIN}]: " RATE_IP_PER_MIN
RATE_IP_PER_MIN=${RATE_IP_PER_MIN:-$DEFAULT_RATE_IP_PER_MIN}
read -p "Rate limit per key per minute [${DEFAULT_RATE_KEY_PER_MIN}]: " RATE_KEY_PER_MIN
RATE_KEY_PER_MIN=${RATE_KEY_PER_MIN:-$DEFAULT_RATE_KEY_PER_MIN}
# Application Configuration
echo ""
echo -e "${GREEN}Application Configuration${NC}"
echo "------------------------"
read -p "Timezone [Europe/Berlin]: " TZ
TZ=${TZ:-"Europe/Berlin"}
# Create .env file
echo ""
echo -e "${GREEN}Creating .env file...${NC}"
cat > .env << EOF
# STUPA PDF API Configuration
# Generated on $(date)
# Database Configuration
MYSQL_HOST=db
MYSQL_PORT=${MYSQL_PORT}
MYSQL_DB=${MYSQL_DB}
MYSQL_USER=${MYSQL_USER}
MYSQL_PASSWORD=${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
# Authentication
MASTER_KEY=${MASTER_KEY}
# Rate Limiting
RATE_IP_PER_MIN=${RATE_IP_PER_MIN}
RATE_KEY_PER_MIN=${RATE_KEY_PER_MIN}
# Application Settings
TZ=${TZ}
# PDF Templates (paths inside container)
QSM_TEMPLATE=/app/assets/qsm.pdf
VSM_TEMPLATE=/app/assets/vsm.pdf
# Frontend Configuration
NODE_ENV=production
EOF
echo -e "${GREEN}✓ .env file created successfully!${NC}"
echo ""
echo -e "${YELLOW}Important Security Notes:${NC}"
echo "1. Keep the .env file secure and never commit it to version control"
echo "2. Save the passwords in a secure password manager"
echo "3. The Master Key is used for admin access - keep it safe!"
echo ""
echo -e "${GREEN}Next Steps:${NC}"
echo "1. Review the .env file and adjust values if needed"
echo "2. Run 'docker compose up -d' to start the application"
echo "3. Access the application at http://localhost:3000"
echo "4. Access the API directly at http://localhost:8000"
echo "5. Access Adminer (database UI) at http://localhost:8080"