- Enhanced Caddyfile with consolidated HTTPS block supporting all access points - Added support for https://digiserver, https://10.76.152.164, and https://digiserver.sibiusb.harting.intra - Configured Caddy reverse proxy with HTTP/3 (QUIC), TLS 1.3+, and HTTP/2 support - Implemented security headers (X-Frame-Options, X-Content-Type-Options, X-XSS-Protection) - Added HTTP to HTTPS automatic redirects for all endpoints - Enhanced setup_https.sh with improved error handling and progress reporting - Created deploy.sh for fully automated one-command deployment - Added comprehensive deployment documentation (5 guides) - Configured 2GB file upload limit and 300s request/response timeouts - Added Caddy admin API on port 2019 for configuration management - Implemented health checks and container dependency management - All volumes persistent and properly isolated - Production-ready configuration with environment variable parameterization
147 lines
5.9 KiB
Bash
Executable File
147 lines
5.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# Setup script for HTTPS Configuration Management and complete system initialization
|
||
# This script can be run locally or on a new deployment PC
|
||
|
||
set -e # Exit on any error
|
||
|
||
# Colors for output
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Determine if we're running in Docker or on host
|
||
IN_DOCKER=false
|
||
if [ -f /.dockerenv ]; then
|
||
IN_DOCKER=true
|
||
fi
|
||
|
||
echo -e "${BLUE}╔════════════════════════════════════════════════════════════════╗${NC}"
|
||
echo -e "${BLUE}║ DigiServer HTTPS Configuration Setup ║${NC}"
|
||
echo -e "${BLUE}╚════════════════════════════════════════════════════════════════╝${NC}"
|
||
echo ""
|
||
|
||
# ============================================================================
|
||
# OPTION 1: Running inside Docker container
|
||
# ============================================================================
|
||
if [ "$IN_DOCKER" = true ]; then
|
||
echo -e "${YELLOW}📍 Running inside Docker container${NC}"
|
||
echo ""
|
||
|
||
echo -e "${BLUE}Step 1/4:${NC} ${YELLOW}Creating https_config database table...${NC}"
|
||
python /app/migrations/add_https_config_table.py
|
||
echo -e "${GREEN}✅ https_config table created${NC}"
|
||
echo ""
|
||
|
||
echo -e "${BLUE}Step 2/4:${NC} ${YELLOW}Creating player_user database table...${NC}"
|
||
python /app/migrations/add_player_user_table.py
|
||
echo -e "${GREEN}✅ player_user table created${NC}"
|
||
echo ""
|
||
|
||
echo -e "${BLUE}Step 3/4:${NC} ${YELLOW}Adding email column to https_config...${NC}"
|
||
python /app/migrations/add_email_to_https_config.py
|
||
echo -e "${GREEN}✅ Email column added${NC}"
|
||
echo ""
|
||
|
||
echo -e "${BLUE}Step 4/4:${NC} ${YELLOW}Migrating player_user global settings...${NC}"
|
||
python /app/migrations/migrate_player_user_global.py
|
||
echo -e "${GREEN}✅ Player user migration completed${NC}"
|
||
echo ""
|
||
|
||
echo -e "${GREEN}✅ HTTPS Configuration Management is now ready!${NC}"
|
||
echo ""
|
||
echo -e "${BLUE}ℹ️ Next steps:${NC}"
|
||
echo "1. Log in to the admin panel"
|
||
echo "2. Navigate to: Admin Panel → 🔒 HTTPS Configuration"
|
||
echo "3. Configure your HTTPS settings:"
|
||
echo " - Enable HTTPS"
|
||
echo " - Set hostname: digiserver"
|
||
echo " - Set domain: digiserver.sibiusb.harting.intra"
|
||
echo " - Set IP: 10.76.152.164"
|
||
echo "4. Save the configuration"
|
||
echo ""
|
||
exit 0
|
||
fi
|
||
|
||
# ============================================================================
|
||
# OPTION 2: Running on host machine with docker-compose
|
||
# ============================================================================
|
||
echo -e "${YELLOW}📍 Running on host machine${NC}"
|
||
echo ""
|
||
|
||
# Check if docker-compose is available
|
||
if ! command -v docker-compose &> /dev/null; then
|
||
echo -e "${RED}❌ docker-compose not found!${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# Check if we're in the project directory
|
||
if [ ! -f "docker-compose.yml" ]; then
|
||
echo -e "${RED}❌ docker-compose.yml not found!${NC}"
|
||
echo "Please run this script from the digiserver-v2 directory"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${BLUE}Checking container status...${NC}"
|
||
RUNNING=$(docker-compose ps -q digiserver-app 2>/dev/null || echo "")
|
||
if [ -z "$RUNNING" ]; then
|
||
echo -e "${YELLOW}📦 Starting containers...${NC}"
|
||
docker-compose up -d
|
||
echo -e "${YELLOW}⏳ Waiting for containers to be ready...${NC}"
|
||
sleep 5
|
||
fi
|
||
|
||
echo -e "${GREEN}✅ Containers are running${NC}"
|
||
echo ""
|
||
|
||
# Run all migrations
|
||
echo -e "${BLUE}Step 1/5:${NC} ${YELLOW}Creating https_config database table...${NC}"
|
||
docker-compose exec -T digiserver-app python /app/migrations/add_https_config_table.py
|
||
echo -e "${GREEN}✅ https_config table created${NC}"
|
||
echo ""
|
||
|
||
echo -e "${BLUE}Step 2/5:${NC} ${YELLOW}Creating player_user database table...${NC}"
|
||
docker-compose exec -T digiserver-app python /app/migrations/add_player_user_table.py
|
||
echo -e "${GREEN}✅ player_user table created${NC}"
|
||
echo ""
|
||
|
||
echo -e "${BLUE}Step 3/5:${NC} ${YELLOW}Adding email column to https_config...${NC}"
|
||
docker-compose exec -T digiserver-app python /app/migrations/add_email_to_https_config.py
|
||
echo -e "${GREEN}✅ Email column added${NC}"
|
||
echo ""
|
||
|
||
echo -e "${BLUE}Step 4/5:${NC} ${YELLOW}Migrating player_user global settings...${NC}"
|
||
docker-compose exec -T digiserver-app python /app/migrations/migrate_player_user_global.py
|
||
echo -e "${GREEN}✅ Player user migration completed${NC}"
|
||
echo ""
|
||
|
||
# Configure HTTPS automatically
|
||
echo -e "${BLUE}Step 5/5:${NC} ${YELLOW}Configuring HTTPS settings...${NC}"
|
||
docker-compose exec -T digiserver-app python /app/https_manager.py enable \
|
||
digiserver \
|
||
digiserver.sibiusb.harting.intra \
|
||
admin@example.com \
|
||
10.76.152.164 \
|
||
443
|
||
|
||
echo -e "${GREEN}✅ HTTPS configured successfully${NC}"
|
||
echo ""
|
||
|
||
# Display configuration status
|
||
echo -e "${BLUE}Configuration Status:${NC}"
|
||
docker-compose exec -T digiserver-app python /app/https_manager.py status
|
||
echo ""
|
||
|
||
echo -e "${GREEN}╔════════════════════════════════════════════════════════════════╗${NC}"
|
||
echo -e "${GREEN}║ 🎉 Deployment Complete! ║${NC}"
|
||
echo -e "${GREEN}╚════════════════════════════════════════════════════════════════╝${NC}"
|
||
echo ""
|
||
echo -e "${BLUE}Access your application at:${NC}"
|
||
echo " 🔒 https://digiserver"
|
||
echo " 🔒 https://10.76.152.164"
|
||
echo " 🔒 https://digiserver.sibiusb.harting.intra"
|
||
echo ""
|
||
echo -e "${BLUE}📖 For more deployment commands, see: DEPLOYMENT_COMMANDS.md${NC}"
|
||
echo ""
|