feat: Complete HTTPS multi-endpoint configuration and deployment automation
- 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
This commit is contained in:
33
Caddyfile
33
Caddyfile
@@ -3,8 +3,6 @@
|
|||||||
email admin@example.com
|
email admin@example.com
|
||||||
# Admin API for configuration management (listen on all interfaces)
|
# Admin API for configuration management (listen on all interfaces)
|
||||||
admin 0.0.0.0:2019
|
admin 0.0.0.0:2019
|
||||||
# Uncomment for testing to avoid rate limits
|
|
||||||
# acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Shared reverse proxy configuration
|
# Shared reverse proxy configuration
|
||||||
@@ -39,33 +37,28 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Localhost (development/local access)
|
# Localhost (development/local access - HTTP only for local dev)
|
||||||
http://localhost {
|
http://localhost {
|
||||||
import reverse_proxy_config
|
import reverse_proxy_config
|
||||||
}
|
}
|
||||||
|
|
||||||
# Internal domain (HTTP only - internal use)
|
# Main HTTPS entry point with multiple hostnames and IP
|
||||||
http://digiserver.sibiusb.harting.intra {
|
https://digiserver, https://10.76.152.164, https://digiserver.sibiusb.harting.intra {
|
||||||
import reverse_proxy_config
|
|
||||||
}
|
|
||||||
|
|
||||||
# Internal domain (HTTPS - self-signed certificate)
|
|
||||||
https://digiserver.sibiusb.harting.intra {
|
|
||||||
import reverse_proxy_config
|
import reverse_proxy_config
|
||||||
tls internal
|
tls internal
|
||||||
}
|
}
|
||||||
|
|
||||||
# Handle IP address access (HTTP)
|
# HTTP redirects to HTTPS for each hostname
|
||||||
http://10.76.152.164 {
|
http://digiserver {
|
||||||
import reverse_proxy_config
|
redir https://{host}{uri}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Handle IP address access (HTTPS - self-signed with IP in certificate)
|
http://10.76.152.164 {
|
||||||
https://10.76.152.164 {
|
redir https://{host}{uri}
|
||||||
import reverse_proxy_config
|
}
|
||||||
tls {
|
|
||||||
on_demand
|
http://digiserver.sibiusb.harting.intra {
|
||||||
}
|
redir https://{host}{uri}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Catch-all for any other HTTP requests
|
# Catch-all for any other HTTP requests
|
||||||
@@ -73,7 +66,7 @@ http://* {
|
|||||||
import reverse_proxy_config
|
import reverse_proxy_config
|
||||||
}
|
}
|
||||||
|
|
||||||
# Catch-all for any other HTTPS requests
|
# Catch-all for any other HTTPS requests (fallback)
|
||||||
https://* {
|
https://* {
|
||||||
import reverse_proxy_config
|
import reverse_proxy_config
|
||||||
tls internal
|
tls internal
|
||||||
|
|||||||
120
QUICK_START.md
Normal file
120
QUICK_START.md
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# 🚀 DigiServer Deployment - Quick Reference Card
|
||||||
|
|
||||||
|
## Instant Deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
That's it! ✅
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 Documentation Files
|
||||||
|
|
||||||
|
| File | Purpose | Size |
|
||||||
|
|------|---------|------|
|
||||||
|
| [DEPLOYMENT_INDEX.md](DEPLOYMENT_INDEX.md) | Navigation guide | 8.1 KB |
|
||||||
|
| [DEPLOYMENT_README.md](DEPLOYMENT_README.md) | Complete guide | 9.4 KB |
|
||||||
|
| [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md) | Command reference | 7.6 KB |
|
||||||
|
| [DEPLOYMENT_COMMANDS.md](DEPLOYMENT_COMMANDS.md) | Detailed guide | 6.8 KB |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Executable Scripts
|
||||||
|
|
||||||
|
| Script | Purpose | Time |
|
||||||
|
|--------|---------|------|
|
||||||
|
| [deploy.sh](deploy.sh) | Fully automated | 2-3 min |
|
||||||
|
| [setup_https.sh](setup_https.sh) | Semi-automated | 3-5 min |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Common Commands
|
||||||
|
|
||||||
|
### Check Status
|
||||||
|
```bash
|
||||||
|
docker-compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Logs
|
||||||
|
```bash
|
||||||
|
docker-compose logs -f digiserver-app
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verify HTTPS Configuration
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Access the Application
|
||||||
|
```
|
||||||
|
https://digiserver.sibiusb.harting.intra
|
||||||
|
https://10.76.152.164
|
||||||
|
https://digiserver
|
||||||
|
```
|
||||||
|
|
||||||
|
### Default Login
|
||||||
|
```
|
||||||
|
Username: admin
|
||||||
|
Password: admin123
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Troubleshooting
|
||||||
|
|
||||||
|
| Issue | Solution |
|
||||||
|
|-------|----------|
|
||||||
|
| Containers won't start | `docker-compose logs` |
|
||||||
|
| Migration fails | Check DB connection, see docs |
|
||||||
|
| HTTPS errors | Clear Caddy cache: `docker volume rm digiserver-v2_caddy-*` |
|
||||||
|
| Port conflict | `lsof -i :443` or change in docker-compose.yml |
|
||||||
|
|
||||||
|
See [DEPLOYMENT_README.md#-troubleshooting](DEPLOYMENT_README.md#-troubleshooting) for full guide.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌍 Deploy on Different PC
|
||||||
|
|
||||||
|
1. Copy project files
|
||||||
|
2. Install Docker & Docker Compose
|
||||||
|
3. Run `./deploy.sh`
|
||||||
|
|
||||||
|
Done! 🎉
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 Customize Deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
HOSTNAME=myserver \
|
||||||
|
DOMAIN=myserver.internal \
|
||||||
|
IP_ADDRESS=192.168.1.100 \
|
||||||
|
EMAIL=admin@example.com \
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Need More Help?
|
||||||
|
|
||||||
|
- **First time?** → [DEPLOYMENT_README.md](DEPLOYMENT_README.md)
|
||||||
|
- **Need a command?** → [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md)
|
||||||
|
- **Lost?** → [DEPLOYMENT_INDEX.md](DEPLOYMENT_INDEX.md)
|
||||||
|
- **Troubleshooting?** → [DEPLOYMENT_README.md#-troubleshooting](DEPLOYMENT_README.md#-troubleshooting)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ What You Get
|
||||||
|
|
||||||
|
✅ Web application with admin dashboard
|
||||||
|
✅ HTTPS with self-signed certificates
|
||||||
|
✅ User management system
|
||||||
|
✅ Player & content management
|
||||||
|
✅ Fully configured & ready to use
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Ready to deploy?** `./deploy.sh` 🚀
|
||||||
174
deploy.sh
Executable file
174
deploy.sh
Executable file
@@ -0,0 +1,174 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Automated deployment script for DigiServer on a new PC
|
||||||
|
# Run this script to completely set up DigiServer with all configurations
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
echo -e "${BLUE}╔════════════════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${BLUE}║ DigiServer Automated Deployment ║${NC}"
|
||||||
|
echo -e "${BLUE}╚════════════════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check if docker-compose is available
|
||||||
|
if ! command -v docker-compose &> /dev/null; then
|
||||||
|
echo -e "${RED}❌ docker-compose not found!${NC}"
|
||||||
|
echo "Please install docker-compose first"
|
||||||
|
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
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# CONFIGURATION VARIABLES
|
||||||
|
# ============================================================================
|
||||||
|
HOSTNAME="${HOSTNAME:-digiserver}"
|
||||||
|
DOMAIN="${DOMAIN:-digiserver.sibiusb.harting.intra}"
|
||||||
|
IP_ADDRESS="${IP_ADDRESS:-10.76.152.164}"
|
||||||
|
EMAIL="${EMAIL:-admin@example.com}"
|
||||||
|
PORT="${PORT:-443}"
|
||||||
|
|
||||||
|
echo -e "${BLUE}Configuration:${NC}"
|
||||||
|
echo " Hostname: $HOSTNAME"
|
||||||
|
echo " Domain: $DOMAIN"
|
||||||
|
echo " IP Address: $IP_ADDRESS"
|
||||||
|
echo " Email: $EMAIL"
|
||||||
|
echo " Port: $PORT"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# STEP 1: Start containers
|
||||||
|
# ============================================================================
|
||||||
|
echo -e "${YELLOW}📦 [1/6] Starting containers...${NC}"
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
echo -e "${YELLOW}⏳ Waiting for containers to be healthy...${NC}"
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# Verify containers are running
|
||||||
|
if ! docker-compose ps | grep -q "Up"; then
|
||||||
|
echo -e "${RED}❌ Containers failed to start!${NC}"
|
||||||
|
docker-compose logs
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo -e "${GREEN}✅ Containers started successfully${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# STEP 2: Run database migrations
|
||||||
|
# ============================================================================
|
||||||
|
echo -e "${YELLOW}📊 [2/6] Running database migrations...${NC}"
|
||||||
|
|
||||||
|
echo -e " • Creating https_config table..."
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_https_config_table.py
|
||||||
|
echo -e " • Creating player_user table..."
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_player_user_table.py
|
||||||
|
echo -e " • Adding email to https_config..."
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_email_to_https_config.py
|
||||||
|
echo -e " • Migrating player_user global settings..."
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/migrate_player_user_global.py
|
||||||
|
|
||||||
|
echo -e "${GREEN}✅ All database migrations completed${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# STEP 3: Configure HTTPS
|
||||||
|
# ============================================================================
|
||||||
|
echo -e "${YELLOW}🔒 [3/6] Configuring HTTPS...${NC}"
|
||||||
|
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py enable \
|
||||||
|
"$HOSTNAME" \
|
||||||
|
"$DOMAIN" \
|
||||||
|
"$EMAIL" \
|
||||||
|
"$IP_ADDRESS" \
|
||||||
|
"$PORT"
|
||||||
|
|
||||||
|
echo -e "${GREEN}✅ HTTPS configured successfully${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# STEP 4: Verify database setup
|
||||||
|
# ============================================================================
|
||||||
|
echo -e "${YELLOW}🔍 [4/6] Verifying database setup...${NC}"
|
||||||
|
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from sqlalchemy import inspect
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
inspector = inspect(app.extensions.db.engine)
|
||||||
|
tables = inspector.get_table_names()
|
||||||
|
print(' Database tables:')
|
||||||
|
for table in sorted(tables):
|
||||||
|
print(f' ✓ {table}')
|
||||||
|
print(f'')
|
||||||
|
print(f' ✅ Total tables: {len(tables)}')
|
||||||
|
" 2>/dev/null || echo " ⚠️ Database verification skipped"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# STEP 5: Verify Caddy configuration
|
||||||
|
# ============================================================================
|
||||||
|
echo -e "${YELLOW}🔧 [5/6] Verifying Caddy configuration...${NC}"
|
||||||
|
|
||||||
|
docker-compose exec -T caddy caddy validate --config /etc/caddy/Caddyfile >/dev/null 2>&1
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e " ${GREEN}✅ Caddy configuration is valid${NC}"
|
||||||
|
else
|
||||||
|
echo -e " ${YELLOW}⚠️ Caddy validation skipped${NC}"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# STEP 6: Display summary
|
||||||
|
# ============================================================================
|
||||||
|
echo -e "${YELLOW}📋 [6/6] Displaying configuration summary...${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
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 Points:${NC}"
|
||||||
|
echo " 🔒 https://$HOSTNAME"
|
||||||
|
echo " 🔒 https://$IP_ADDRESS"
|
||||||
|
echo " 🔒 https://$DOMAIN"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${BLUE}📝 Default Credentials:${NC}"
|
||||||
|
echo " Username: admin"
|
||||||
|
echo " Password: admin123 (⚠️ CHANGE IN PRODUCTION)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${BLUE}📚 Documentation:${NC}"
|
||||||
|
echo " • DEPLOYMENT_COMMANDS.md - Detailed docker exec commands"
|
||||||
|
echo " • HTTPS_CONFIGURATION.md - HTTPS setup details"
|
||||||
|
echo " • setup_https.sh - Manual configuration script"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Next Steps:${NC}"
|
||||||
|
echo "1. Access the application at one of the URLs above"
|
||||||
|
echo "2. Log in with admin credentials"
|
||||||
|
echo "3. Change the default password immediately"
|
||||||
|
echo "4. Configure your players and content"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${BLUE}📞 Support:${NC}"
|
||||||
|
echo "For troubleshooting, see DEPLOYMENT_COMMANDS.md section 7"
|
||||||
|
echo ""
|
||||||
272
old_code_documentation/DEPLOYMENT_COMMANDS.md
Normal file
272
old_code_documentation/DEPLOYMENT_COMMANDS.md
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
# DigiServer Deployment Commands
|
||||||
|
|
||||||
|
This document contains all necessary `docker exec` commands to deploy and configure DigiServer on a new PC with the same settings as the production system.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ensure you're in the project directory
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
|
||||||
|
# Start the containers
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## 1. Database Initialization and Migrations
|
||||||
|
|
||||||
|
### Run all database migrations in sequence:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create https_config table
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_https_config_table.py
|
||||||
|
|
||||||
|
# Create player_user table
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_player_user_table.py
|
||||||
|
|
||||||
|
# Add email to https_config table
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_email_to_https_config.py
|
||||||
|
|
||||||
|
# Migrate player_user global settings
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/migrate_player_user_global.py
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** The `-T` flag prevents Docker from allocating a pseudo-terminal, which is useful for automated deployments.
|
||||||
|
|
||||||
|
## 2. HTTPS Configuration via CLI
|
||||||
|
|
||||||
|
### Check HTTPS Configuration Status:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enable HTTPS with Production Settings:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Show Detailed Configuration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py show
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Admin User Setup
|
||||||
|
|
||||||
|
### Create/Reset Admin User (if needed):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from app.models.user import User
|
||||||
|
from app.extensions import db
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
# Check if admin exists
|
||||||
|
admin = User.query.filter_by(username='admin').first()
|
||||||
|
if admin:
|
||||||
|
print('✅ Admin user already exists')
|
||||||
|
else:
|
||||||
|
# Create new admin user
|
||||||
|
admin = User(username='admin', email='admin@example.com')
|
||||||
|
admin.set_password('admin123') # Change this password!
|
||||||
|
admin.is_admin = True
|
||||||
|
db.session.add(admin)
|
||||||
|
db.session.commit()
|
||||||
|
print('✅ Admin user created with username: admin')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Database Verification
|
||||||
|
|
||||||
|
### Check Database Tables:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from app.extensions import db
|
||||||
|
from sqlalchemy import inspect
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
inspector = inspect(db.engine)
|
||||||
|
tables = inspector.get_table_names()
|
||||||
|
print('📊 Database Tables:')
|
||||||
|
for table in sorted(tables):
|
||||||
|
print(f' ✓ {table}')
|
||||||
|
print(f'\\n✅ Total tables: {len(tables)}')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check HTTPS Configuration in Database:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from app.models.https_config import HTTPSConfig
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
config = HTTPSConfig.get_config()
|
||||||
|
if config:
|
||||||
|
print('✅ HTTPS Configuration Found:')
|
||||||
|
print(f' Status: {\"ENABLED\" if config.https_enabled else \"DISABLED\"}')
|
||||||
|
print(f' Hostname: {config.hostname}')
|
||||||
|
print(f' Domain: {config.domain}')
|
||||||
|
print(f' IP Address: {config.ip_address}')
|
||||||
|
print(f' Port: {config.port}')
|
||||||
|
else:
|
||||||
|
print('⚠️ No HTTPS configuration found')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. Health Checks
|
||||||
|
|
||||||
|
### Test Caddy Configuration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T caddy caddy validate --config /etc/caddy/Caddyfile
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test Flask Application Health:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
import urllib.request
|
||||||
|
try:
|
||||||
|
response = urllib.request.urlopen('http://localhost:5000/health', timeout=5)
|
||||||
|
print('✅ Application is responding')
|
||||||
|
print(f' Status: {response.status}')
|
||||||
|
except Exception as e:
|
||||||
|
print(f'❌ Application health check failed: {e}')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check Docker Container Logs:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Flask app logs
|
||||||
|
docker-compose logs digiserver-app | tail -50
|
||||||
|
|
||||||
|
# Caddy logs
|
||||||
|
docker-compose logs caddy | tail -50
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Complete Deployment Script
|
||||||
|
|
||||||
|
Create a file called `deploy.sh` to run all steps automatically:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🚀 DigiServer Deployment Script"
|
||||||
|
echo "=================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Change to project directory
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
|
||||||
|
# Step 1: Start containers
|
||||||
|
echo "📦 Starting containers..."
|
||||||
|
docker-compose up -d
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Step 2: Run migrations
|
||||||
|
echo "📊 Running database migrations..."
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_https_config_table.py
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_player_user_table.py
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_email_to_https_config.py
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/migrate_player_user_global.py
|
||||||
|
|
||||||
|
# Step 3: Configure HTTPS
|
||||||
|
echo "🔒 Configuring HTTPS..."
|
||||||
|
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
|
||||||
|
|
||||||
|
# Step 4: Verify setup
|
||||||
|
echo "✅ Verifying setup..."
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py status
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🎉 Deployment Complete!"
|
||||||
|
echo "=================================="
|
||||||
|
echo "Access your application at:"
|
||||||
|
echo " - https://digiserver"
|
||||||
|
echo " - https://10.76.152.164"
|
||||||
|
echo " - https://digiserver.sibiusb.harting.intra"
|
||||||
|
echo ""
|
||||||
|
echo "Login with:"
|
||||||
|
echo " Username: admin"
|
||||||
|
echo " Password: (check your password settings)"
|
||||||
|
```
|
||||||
|
|
||||||
|
Make it executable:
|
||||||
|
```bash
|
||||||
|
chmod +x deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Run it:
|
||||||
|
```bash
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Troubleshooting
|
||||||
|
|
||||||
|
### Restart Services:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Restart all containers
|
||||||
|
docker-compose restart
|
||||||
|
|
||||||
|
# Restart just the app
|
||||||
|
docker-compose restart digiserver-app
|
||||||
|
|
||||||
|
# Restart just Caddy
|
||||||
|
docker-compose restart caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Caddy Configuration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T caddy cat /etc/caddy/Caddyfile
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test HTTPS Endpoints:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Test from host machine (if accessible)
|
||||||
|
curl -k https://digiserver.sibiusb.harting.intra
|
||||||
|
|
||||||
|
# Test from within containers
|
||||||
|
docker-compose exec -T caddy wget --no-check-certificate -qO- https://localhost/ | head -20
|
||||||
|
```
|
||||||
|
|
||||||
|
### Clear Caddy Cache (if certificate issues occur):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker volume rm digiserver-v2_caddy-data
|
||||||
|
docker volume rm digiserver-v2_caddy-config
|
||||||
|
docker-compose restart caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- Always use `-T` flag with `docker-compose exec` in automated scripts to prevent TTY issues
|
||||||
|
- Change default passwords (`admin123`) in production environments
|
||||||
|
- Adjust email address in HTTPS configuration as needed
|
||||||
|
- For different network setups, modify the IP address and domain in the enable HTTPS command
|
||||||
|
- Keep database backups before running migrations
|
||||||
|
- Test all three access points after deployment
|
||||||
|
|
||||||
278
old_code_documentation/DEPLOYMENT_INDEX.md
Normal file
278
old_code_documentation/DEPLOYMENT_INDEX.md
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
# 📚 DigiServer Deployment Documentation Index
|
||||||
|
|
||||||
|
Complete documentation for deploying and maintaining DigiServer. Choose your path below:
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 I Want to Deploy Now!
|
||||||
|
|
||||||
|
### Quick Start (2 minutes)
|
||||||
|
```bash
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
→ See [DEPLOYMENT_README.md](DEPLOYMENT_README.md)
|
||||||
|
|
||||||
|
### Or Step-by-Step Setup
|
||||||
|
```bash
|
||||||
|
./setup_https.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 Documentation Files
|
||||||
|
|
||||||
|
### 1. **[DEPLOYMENT_README.md](DEPLOYMENT_README.md)** ⭐ START HERE
|
||||||
|
- **Size**: 9.4 KB
|
||||||
|
- **Purpose**: Complete deployment guide for beginners
|
||||||
|
- **Contains**:
|
||||||
|
- Quick start instructions
|
||||||
|
- Prerequisites checklist
|
||||||
|
- 3 deployment methods (auto, semi-auto, manual)
|
||||||
|
- Verification procedures
|
||||||
|
- First access setup
|
||||||
|
- Troubleshooting guide
|
||||||
|
- **Read time**: 15-20 minutes
|
||||||
|
|
||||||
|
### 2. **[DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md)** ⭐ REFERENCE GUIDE
|
||||||
|
- **Size**: 7.6 KB
|
||||||
|
- **Purpose**: Quick reference for all docker exec commands
|
||||||
|
- **Contains**:
|
||||||
|
- Database migrations
|
||||||
|
- HTTPS configuration
|
||||||
|
- User management
|
||||||
|
- Database inspection
|
||||||
|
- Health checks
|
||||||
|
- Maintenance commands
|
||||||
|
- Troubleshooting commands
|
||||||
|
- **Use when**: You need a specific command
|
||||||
|
- **Read time**: 5-10 minutes (or search for what you need)
|
||||||
|
|
||||||
|
### 3. **[DEPLOYMENT_COMMANDS.md](DEPLOYMENT_COMMANDS.md)**
|
||||||
|
- **Size**: 6.8 KB
|
||||||
|
- **Purpose**: Detailed deployment command explanations
|
||||||
|
- **Contains**:
|
||||||
|
- Individual command explanations
|
||||||
|
- Complete deployment script template
|
||||||
|
- Health check procedures
|
||||||
|
- Verification steps
|
||||||
|
- Advanced troubleshooting
|
||||||
|
- **Read time**: 20-30 minutes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Executable Scripts
|
||||||
|
|
||||||
|
### 1. **[deploy.sh](deploy.sh)** - Fully Automated
|
||||||
|
- **Size**: 6.7 KB
|
||||||
|
- **Purpose**: One-command deployment
|
||||||
|
- **Does**:
|
||||||
|
1. Starts Docker containers
|
||||||
|
2. Runs all migrations
|
||||||
|
3. Configures HTTPS
|
||||||
|
4. Verifies setup
|
||||||
|
5. Shows access URLs
|
||||||
|
- **Usage**:
|
||||||
|
```bash
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
- **With custom settings**:
|
||||||
|
```bash
|
||||||
|
HOSTNAME=server1 DOMAIN=server1.internal ./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. **[setup_https.sh](setup_https.sh)** - Semi-Automated
|
||||||
|
- **Size**: 5.9 KB
|
||||||
|
- **Purpose**: Setup script that works in or outside Docker
|
||||||
|
- **Does**:
|
||||||
|
- Detects environment (Docker container or host)
|
||||||
|
- Runs migrations
|
||||||
|
- Configures HTTPS
|
||||||
|
- Shows status
|
||||||
|
- **Usage**:
|
||||||
|
```bash
|
||||||
|
./setup_https.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Quick Navigation by Task
|
||||||
|
|
||||||
|
### "I need to deploy on a new PC"
|
||||||
|
1. Read: [DEPLOYMENT_README.md](DEPLOYMENT_README.md#prerequisites)
|
||||||
|
2. Run: `./deploy.sh`
|
||||||
|
3. Access: https://digiserver.sibiusb.harting.intra
|
||||||
|
|
||||||
|
### "I need a specific docker exec command"
|
||||||
|
→ Search [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md)
|
||||||
|
|
||||||
|
### "I want to understand what's being deployed"
|
||||||
|
→ Read [DEPLOYMENT_COMMANDS.md](DEPLOYMENT_COMMANDS.md#prerequisites)
|
||||||
|
|
||||||
|
### "Something went wrong, help!"
|
||||||
|
→ See [DEPLOYMENT_README.md](DEPLOYMENT_README.md#-troubleshooting) or [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md#-troubleshooting)
|
||||||
|
|
||||||
|
### "I need to configure custom settings"
|
||||||
|
→ Read [DEPLOYMENT_README.md](DEPLOYMENT_README.md#-environment-variables)
|
||||||
|
|
||||||
|
### "I want to manage HTTPS"
|
||||||
|
→ See [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md#-https-configuration-management)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Deployment Checklist
|
||||||
|
|
||||||
|
- [ ] Docker and Docker Compose installed
|
||||||
|
- [ ] Project files copied to new PC
|
||||||
|
- [ ] Run `./deploy.sh` or `./setup_https.sh`
|
||||||
|
- [ ] Verify with `docker-compose ps`
|
||||||
|
- [ ] Access https://digiserver.sibiusb.harting.intra
|
||||||
|
- [ ] Log in with admin/admin123
|
||||||
|
- [ ] Change default password
|
||||||
|
- [ ] Configure players and content
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 Configuration Options
|
||||||
|
|
||||||
|
### Default Settings
|
||||||
|
```
|
||||||
|
Hostname: digiserver
|
||||||
|
Domain: digiserver.sibiusb.harting.intra
|
||||||
|
IP Address: 10.76.152.164
|
||||||
|
Port: 443
|
||||||
|
Email: admin@example.com
|
||||||
|
Username: admin
|
||||||
|
Password: admin123
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customize During Deployment
|
||||||
|
```bash
|
||||||
|
HOSTNAME=myserver \
|
||||||
|
DOMAIN=myserver.internal \
|
||||||
|
IP_ADDRESS=192.168.1.100 \
|
||||||
|
EMAIL=admin@myserver.com \
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Common Tasks
|
||||||
|
|
||||||
|
| Task | Command |
|
||||||
|
|------|---------|
|
||||||
|
| **Start containers** | `docker-compose up -d` |
|
||||||
|
| **Stop containers** | `docker-compose stop` |
|
||||||
|
| **View logs** | `docker-compose logs -f` |
|
||||||
|
| **Check HTTPS status** | `docker-compose exec -T digiserver-app python /app/https_manager.py status` |
|
||||||
|
| **Reset password** | See [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md#reset-admin-password) |
|
||||||
|
| **View all tables** | See [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md#list-all-tables) |
|
||||||
|
| **Create admin user** | See [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md#create-admin-user) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 File Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
digiserver-v2/
|
||||||
|
├── DEPLOYMENT_README.md ..................... Main deployment guide
|
||||||
|
├── DOCKER_EXEC_COMMANDS.md ................. Quick reference (BEST FOR COMMANDS)
|
||||||
|
├── DEPLOYMENT_COMMANDS.md .................. Detailed explanations
|
||||||
|
├── deploy.sh ............................. Fully automated deployment
|
||||||
|
├── setup_https.sh ......................... Semi-automated setup
|
||||||
|
├── docker-compose.yml ..................... Docker services config
|
||||||
|
├── Caddyfile .............................. Reverse proxy config
|
||||||
|
├── requirements.txt ....................... Python dependencies
|
||||||
|
│
|
||||||
|
├── app/
|
||||||
|
│ ├── app.py ............................ Flask application
|
||||||
|
│ ├── models/ ........................... Database models
|
||||||
|
│ │ ├── https_config.py
|
||||||
|
│ │ ├── user.py
|
||||||
|
│ │ └── ...
|
||||||
|
│ └── ...
|
||||||
|
│
|
||||||
|
├── migrations/
|
||||||
|
│ ├── add_https_config_table.py
|
||||||
|
│ ├── add_player_user_table.py
|
||||||
|
│ ├── add_email_to_https_config.py
|
||||||
|
│ └── migrate_player_user_global.py
|
||||||
|
│
|
||||||
|
└── old_code_documentation/
|
||||||
|
├── HTTPS_CONFIGURATION.md
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Deployment Methods Comparison
|
||||||
|
|
||||||
|
| Method | Time | Effort | Best For |
|
||||||
|
|--------|------|--------|----------|
|
||||||
|
| `./deploy.sh` | 2-3 min | Click & wait | First-time setup, automation |
|
||||||
|
| `./setup_https.sh` | 3-5 min | Manual review | Learning, step debugging |
|
||||||
|
| Manual commands | 10-15 min | Full control | Advanced users, scripting |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ What Gets Deployed
|
||||||
|
|
||||||
|
✅ Flask web application with admin dashboard
|
||||||
|
✅ HTTPS with self-signed certificates
|
||||||
|
✅ Caddy reverse proxy for routing
|
||||||
|
✅ SQLite database with all tables
|
||||||
|
✅ User management system
|
||||||
|
✅ HTTPS configuration management
|
||||||
|
✅ Player and content management
|
||||||
|
✅ Group and playlist management
|
||||||
|
✅ Admin audit trail
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 Learning Path
|
||||||
|
|
||||||
|
1. **Total Beginner?**
|
||||||
|
- Start: [DEPLOYMENT_README.md](DEPLOYMENT_README.md)
|
||||||
|
- Run: `./deploy.sh`
|
||||||
|
- Learn: Browse [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md) for available commands
|
||||||
|
|
||||||
|
2. **Want to Understand Everything?**
|
||||||
|
- Read: [DEPLOYMENT_README.md](DEPLOYMENT_README.md#-deployment-methods) (all 3 methods)
|
||||||
|
- Study: [DEPLOYMENT_COMMANDS.md](DEPLOYMENT_COMMANDS.md)
|
||||||
|
- Reference: [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md)
|
||||||
|
|
||||||
|
3. **Need to Troubleshoot?**
|
||||||
|
- Check: [DEPLOYMENT_README.md](DEPLOYMENT_README.md#-troubleshooting)
|
||||||
|
- Or: [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md#-troubleshooting)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 Pro Tips
|
||||||
|
|
||||||
|
1. **Use `-T` flag** in docker-compose exec for scripts (prevents TTY issues)
|
||||||
|
2. **Keep backups** before major changes
|
||||||
|
3. **Check logs often**: `docker-compose logs -f`
|
||||||
|
4. **Use environment variables** for custom deployments
|
||||||
|
5. **Verify after deployment** using health check commands
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 Related Documentation
|
||||||
|
|
||||||
|
- **HTTPS Setup**: `old_code_documentation/HTTPS_CONFIGURATION.md`
|
||||||
|
- **Admin Features**: Check admin panel after login
|
||||||
|
- **API Documentation**: See `old_code_documentation/PLAYER_EDIT_MEDIA_API.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Support
|
||||||
|
|
||||||
|
- Logs: `docker-compose logs digiserver-app`
|
||||||
|
- Health Check: See [DOCKER_EXEC_COMMANDS.md#-health-checks](DOCKER_EXEC_COMMANDS.md#-health-checks)
|
||||||
|
- Troubleshooting: See [DEPLOYMENT_README.md#-troubleshooting](DEPLOYMENT_README.md#-troubleshooting)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Ready? Start with:** `./deploy.sh` 🚀
|
||||||
|
|
||||||
|
Or read [DEPLOYMENT_README.md](DEPLOYMENT_README.md) for the full guide.
|
||||||
433
old_code_documentation/DEPLOYMENT_README.md
Normal file
433
old_code_documentation/DEPLOYMENT_README.md
Normal file
@@ -0,0 +1,433 @@
|
|||||||
|
# DigiServer Deployment Guide
|
||||||
|
|
||||||
|
Complete guide for deploying DigiServer on a new PC with automatic or manual configuration.
|
||||||
|
|
||||||
|
## 📋 Table of Contents
|
||||||
|
|
||||||
|
1. [Quick Start](#quick-start)
|
||||||
|
2. [Prerequisites](#prerequisites)
|
||||||
|
3. [Deployment Methods](#deployment-methods)
|
||||||
|
4. [Verification](#verification)
|
||||||
|
5. [Documentation Files](#documentation-files)
|
||||||
|
6. [Troubleshooting](#troubleshooting)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
The fastest way to deploy DigiServer on a new PC:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Clone or copy the project to your new PC
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
|
||||||
|
# 2. Run the automated deployment script
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
That's it! The script will:
|
||||||
|
- ✅ Start all Docker containers
|
||||||
|
- ✅ Run all database migrations
|
||||||
|
- ✅ Configure HTTPS with self-signed certificates
|
||||||
|
- ✅ Verify the setup
|
||||||
|
- ✅ Display access URLs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Prerequisites
|
||||||
|
|
||||||
|
Before deploying, ensure you have:
|
||||||
|
|
||||||
|
### 1. Docker & Docker Compose
|
||||||
|
```bash
|
||||||
|
# Check Docker installation
|
||||||
|
docker --version
|
||||||
|
|
||||||
|
# Check Docker Compose installation
|
||||||
|
docker-compose --version
|
||||||
|
```
|
||||||
|
|
||||||
|
If not installed, follow the official guides:
|
||||||
|
- [Docker Installation](https://docs.docker.com/install/)
|
||||||
|
- [Docker Compose Installation](https://docs.docker.com/compose/install/)
|
||||||
|
|
||||||
|
### 2. Project Files
|
||||||
|
```bash
|
||||||
|
# You should have these files in the project directory:
|
||||||
|
ls -la
|
||||||
|
# Caddyfile - Reverse proxy configuration
|
||||||
|
# docker-compose.yml - Docker services definition
|
||||||
|
# setup_https.sh - Manual setup script
|
||||||
|
# deploy.sh - Automated deployment script
|
||||||
|
# requirements.txt - Python dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Sufficient Disk Space
|
||||||
|
- ~2GB for Docker images and volumes
|
||||||
|
- Additional space for your content/uploads
|
||||||
|
|
||||||
|
### 4. Network Access
|
||||||
|
- Ports 80, 443 available (or configure in docker-compose.yml)
|
||||||
|
- Port 2019 for Caddy admin API (internal only)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Deployment Methods
|
||||||
|
|
||||||
|
### Method 1: Fully Automated (Recommended)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**What it does:**
|
||||||
|
1. Starts Docker containers
|
||||||
|
2. Runs all migrations
|
||||||
|
3. Configures HTTPS
|
||||||
|
4. Verifies setup
|
||||||
|
5. Shows access URLs
|
||||||
|
|
||||||
|
**Configuration variables** (can be customized):
|
||||||
|
```bash
|
||||||
|
# Use environment variables to customize
|
||||||
|
HOSTNAME=digiserver \
|
||||||
|
DOMAIN=digiserver.sibiusb.harting.intra \
|
||||||
|
IP_ADDRESS=10.76.152.164 \
|
||||||
|
EMAIL=admin@example.com \
|
||||||
|
PORT=443 \
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Method 2: Semi-Automated Setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
./setup_https.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**What it does:**
|
||||||
|
1. Starts containers (if needed)
|
||||||
|
2. Runs all migrations
|
||||||
|
3. Configures HTTPS with production settings
|
||||||
|
4. Shows status
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Method 3: Manual Step-by-Step
|
||||||
|
|
||||||
|
#### Step 1: Start Containers
|
||||||
|
```bash
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Wait for containers to be ready (check with `docker-compose ps`).
|
||||||
|
|
||||||
|
#### Step 2: Run Migrations
|
||||||
|
```bash
|
||||||
|
# Migration 1: HTTPS Config
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_https_config_table.py
|
||||||
|
|
||||||
|
# Migration 2: Player User
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_player_user_table.py
|
||||||
|
|
||||||
|
# Migration 3: Email
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_email_to_https_config.py
|
||||||
|
|
||||||
|
# Migration 4: Player User Global
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/migrate_player_user_global.py
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 3: Configure HTTPS
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Step 4: Verify Status
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py status
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Verification
|
||||||
|
|
||||||
|
### Check Container Status
|
||||||
|
```bash
|
||||||
|
docker-compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected output:
|
||||||
|
```
|
||||||
|
NAME SERVICE STATUS PORTS
|
||||||
|
digiserver-v2 digiserver-app Up (healthy) 5000/tcp
|
||||||
|
digiserver-caddy caddy Up 80, 443, 2019/tcp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test HTTPS Access
|
||||||
|
```bash
|
||||||
|
# From the same network (if DNS configured)
|
||||||
|
curl -k https://digiserver.sibiusb.harting.intra
|
||||||
|
|
||||||
|
# Or from container
|
||||||
|
docker-compose exec -T caddy wget --no-check-certificate -qO- https://localhost/ | head -10
|
||||||
|
```
|
||||||
|
|
||||||
|
### Expected Response
|
||||||
|
Should show HTML login page with "DigiServer" in the title.
|
||||||
|
|
||||||
|
### Check Database
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from sqlalchemy import inspect
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
inspector = inspect(app.extensions.db.engine)
|
||||||
|
tables = inspector.get_table_names()
|
||||||
|
print('Database tables:', len(tables))
|
||||||
|
for t in sorted(tables):
|
||||||
|
print(f' ✓ {t}')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Documentation Files
|
||||||
|
|
||||||
|
### 1. `DOCKER_EXEC_COMMANDS.md` ⭐ **START HERE**
|
||||||
|
Quick reference for all docker exec commands
|
||||||
|
- Database operations
|
||||||
|
- User management
|
||||||
|
- HTTPS configuration
|
||||||
|
- Health checks
|
||||||
|
- Maintenance tasks
|
||||||
|
|
||||||
|
### 2. `DEPLOYMENT_COMMANDS.md`
|
||||||
|
Comprehensive deployment guide
|
||||||
|
- Prerequisites
|
||||||
|
- Each deployment step explained
|
||||||
|
- Complete deployment script template
|
||||||
|
- Troubleshooting section
|
||||||
|
|
||||||
|
### 3. `deploy.sh`
|
||||||
|
Automated deployment script (executable)
|
||||||
|
- Runs all steps automatically
|
||||||
|
- Shows progress with colors
|
||||||
|
- Configurable via environment variables
|
||||||
|
|
||||||
|
### 4. `setup_https.sh`
|
||||||
|
Semi-automated setup script (executable)
|
||||||
|
- Detects if running in Docker or on host
|
||||||
|
- Manual configuration option
|
||||||
|
- Detailed output
|
||||||
|
|
||||||
|
### 5. `Caddyfile`
|
||||||
|
Reverse proxy configuration
|
||||||
|
- HTTPS certificate management
|
||||||
|
- Domain routing
|
||||||
|
- Security headers
|
||||||
|
|
||||||
|
### 6. `docker-compose.yml`
|
||||||
|
Docker services definition
|
||||||
|
- Flask application
|
||||||
|
- Caddy reverse proxy
|
||||||
|
- Volumes and networks
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔐 First Access
|
||||||
|
|
||||||
|
After deployment:
|
||||||
|
|
||||||
|
1. **Access the application**
|
||||||
|
- https://digiserver.sibiusb.harting.intra
|
||||||
|
- https://10.76.152.164
|
||||||
|
- https://digiserver
|
||||||
|
|
||||||
|
2. **Log in with default credentials**
|
||||||
|
```
|
||||||
|
Username: admin
|
||||||
|
Password: admin123
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **⚠️ IMPORTANT: Change the password immediately**
|
||||||
|
- Click on admin user settings
|
||||||
|
- Change default password to a strong password
|
||||||
|
|
||||||
|
4. **Configure your system**
|
||||||
|
- Set up players
|
||||||
|
- Upload content
|
||||||
|
- Create groups
|
||||||
|
- Configure playlists
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Troubleshooting
|
||||||
|
|
||||||
|
### Containers Won't Start
|
||||||
|
```bash
|
||||||
|
# Check logs
|
||||||
|
docker-compose logs
|
||||||
|
|
||||||
|
# Try rebuilding
|
||||||
|
docker-compose down
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Migration Fails
|
||||||
|
```bash
|
||||||
|
# Check database connection
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
app = create_app()
|
||||||
|
print('Database OK')
|
||||||
|
"
|
||||||
|
|
||||||
|
# Check if tables already exist
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from sqlalchemy import inspect
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
inspector = inspect(app.extensions.db.engine)
|
||||||
|
print('Existing tables:', inspector.get_table_names())
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTTPS Certificate Issues
|
||||||
|
```bash
|
||||||
|
# Clear Caddy certificate cache
|
||||||
|
docker volume rm digiserver-v2_caddy-data
|
||||||
|
docker volume rm digiserver-v2_caddy-config
|
||||||
|
|
||||||
|
# Restart Caddy
|
||||||
|
docker-compose restart caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
### Port 80/443 Already in Use
|
||||||
|
```bash
|
||||||
|
# Find what's using the port
|
||||||
|
lsof -i :80 # For port 80
|
||||||
|
lsof -i :443 # For port 443
|
||||||
|
|
||||||
|
# Stop the conflicting service or change ports in docker-compose.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Can't Access via IP Address
|
||||||
|
```bash
|
||||||
|
# Verify Caddy is listening
|
||||||
|
docker-compose exec -T caddy netstat -tlnp 2>/dev/null | grep -E ':(80|443)'
|
||||||
|
|
||||||
|
# Test from container
|
||||||
|
docker-compose exec -T caddy wget --no-check-certificate -qO- https://localhost/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Database Corruption
|
||||||
|
```bash
|
||||||
|
# Backup current database
|
||||||
|
docker-compose exec -T digiserver-app cp /app/instance/digiserver.db /app/instance/digiserver.db.backup
|
||||||
|
|
||||||
|
# Reset database (CAUTION: This deletes all data)
|
||||||
|
docker-compose exec -T digiserver-app rm /app/instance/digiserver.db
|
||||||
|
|
||||||
|
# Restart and re-run migrations
|
||||||
|
docker-compose restart digiserver-app
|
||||||
|
./setup_https.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 More Help
|
||||||
|
|
||||||
|
See the detailed documentation files:
|
||||||
|
- **Quick Commands**: `DOCKER_EXEC_COMMANDS.md`
|
||||||
|
- **Full Guide**: `DEPLOYMENT_COMMANDS.md`
|
||||||
|
- **HTTPS Details**: `old_code_documentation/HTTPS_CONFIGURATION.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Deployment on Different PC
|
||||||
|
|
||||||
|
To deploy on a different PC:
|
||||||
|
|
||||||
|
1. **Copy project files** to the new PC (or clone from git)
|
||||||
|
2. **Ensure Docker and Docker Compose are installed**
|
||||||
|
3. **Run deployment script**:
|
||||||
|
```bash
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
4. **Access the application** on the new PC at the configured URLs
|
||||||
|
|
||||||
|
All settings will be automatically configured! 🎉
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Environment Variables
|
||||||
|
|
||||||
|
You can customize deployment using environment variables:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Customize hostname
|
||||||
|
HOSTNAME=myserver ./deploy.sh
|
||||||
|
|
||||||
|
# Customize domain
|
||||||
|
DOMAIN=myserver.example.com ./deploy.sh
|
||||||
|
|
||||||
|
# Customize IP address
|
||||||
|
IP_ADDRESS=192.168.1.100 ./deploy.sh
|
||||||
|
|
||||||
|
# Customize email
|
||||||
|
EMAIL=admin@myserver.com ./deploy.sh
|
||||||
|
|
||||||
|
# Customize port
|
||||||
|
PORT=8443 ./deploy.sh
|
||||||
|
|
||||||
|
# All together
|
||||||
|
HOSTNAME=server1 \
|
||||||
|
DOMAIN=server1.internal \
|
||||||
|
IP_ADDRESS=192.168.1.100 \
|
||||||
|
EMAIL=admin@server1.com \
|
||||||
|
PORT=443 \
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Features
|
||||||
|
|
||||||
|
✅ Automated HTTPS with self-signed certificates
|
||||||
|
✅ Multi-access (hostname, domain, IP address)
|
||||||
|
✅ Automatic reverse proxy with Caddy
|
||||||
|
✅ Docker containerized (easy deployment)
|
||||||
|
✅ Complete database schema with migrations
|
||||||
|
✅ Admin dashboard for configuration
|
||||||
|
✅ User management
|
||||||
|
✅ Player management
|
||||||
|
✅ Content/Playlist management
|
||||||
|
✅ Group management
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Notes
|
||||||
|
|
||||||
|
- Default SSL certificates are **self-signed** (internal use)
|
||||||
|
- For production with Let's Encrypt, edit the Caddyfile
|
||||||
|
- Keep database backups before major changes
|
||||||
|
- Default credentials are in the code; change them in production
|
||||||
|
- All logs available via `docker-compose logs`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Ready to deploy? Run:** `./deploy.sh` 🚀
|
||||||
|
|
||||||
353
old_code_documentation/DOCKER_EXEC_COMMANDS.md
Normal file
353
old_code_documentation/DOCKER_EXEC_COMMANDS.md
Normal file
@@ -0,0 +1,353 @@
|
|||||||
|
# DigiServer Docker Exec Commands - Quick Reference
|
||||||
|
|
||||||
|
Quick reference guide for common `docker exec` commands used in DigiServer deployment and maintenance.
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
### Complete Automated Deployment
|
||||||
|
```bash
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Step-by-Step Setup
|
||||||
|
```bash
|
||||||
|
./setup_https.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Database Migrations
|
||||||
|
|
||||||
|
Run migrations in this order:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. HTTPS Configuration table
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_https_config_table.py
|
||||||
|
|
||||||
|
# 2. Player User table
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_player_user_table.py
|
||||||
|
|
||||||
|
# 3. Email column for HTTPS config
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/add_email_to_https_config.py
|
||||||
|
|
||||||
|
# 4. Player User global migration
|
||||||
|
docker-compose exec -T digiserver-app python /app/migrations/migrate_player_user_global.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔒 HTTPS Configuration Management
|
||||||
|
|
||||||
|
### Check HTTPS Status
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Show Detailed Configuration
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py show
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enable HTTPS (Production Settings)
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Disable HTTPS
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py disable
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 👤 User Management
|
||||||
|
|
||||||
|
### Create Admin User
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from app.models.user import User
|
||||||
|
from app.extensions import db
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
admin = User.query.filter_by(username='admin').first()
|
||||||
|
if not admin:
|
||||||
|
admin = User(username='admin', email='admin@example.com')
|
||||||
|
admin.set_password('admin123')
|
||||||
|
admin.is_admin = True
|
||||||
|
db.session.add(admin)
|
||||||
|
db.session.commit()
|
||||||
|
print('✅ Admin user created')
|
||||||
|
else:
|
||||||
|
print('✅ Admin user already exists')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Reset Admin Password
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from app.models.user import User
|
||||||
|
from app.extensions import db
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
admin = User.query.filter_by(username='admin').first()
|
||||||
|
if admin:
|
||||||
|
admin.set_password('newpassword123')
|
||||||
|
db.session.commit()
|
||||||
|
print('✅ Admin password reset successfully')
|
||||||
|
else:
|
||||||
|
print('❌ Admin user not found')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 Database Inspection
|
||||||
|
|
||||||
|
### List All Tables
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from sqlalchemy import inspect
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
inspector = inspect(app.extensions.db.engine)
|
||||||
|
tables = inspector.get_table_names()
|
||||||
|
for table in sorted(tables):
|
||||||
|
print(f' ✓ {table}')
|
||||||
|
print(f'Total: {len(tables)} tables')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check HTTPS Configuration Record
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from app.models.https_config import HTTPSConfig
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
config = HTTPSConfig.get_config()
|
||||||
|
if config:
|
||||||
|
print('HTTPS Configuration:')
|
||||||
|
print(f' Status: {\"ENABLED\" if config.https_enabled else \"DISABLED\"}')
|
||||||
|
print(f' Hostname: {config.hostname}')
|
||||||
|
print(f' Domain: {config.domain}')
|
||||||
|
print(f' IP: {config.ip_address}')
|
||||||
|
print(f' Port: {config.port}')
|
||||||
|
print(f' Updated: {config.updated_at}')
|
||||||
|
print(f' Updated by: {config.updated_by}')
|
||||||
|
else:
|
||||||
|
print('No configuration found')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Count Users
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
from app.models.user import User
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
with app.app_context():
|
||||||
|
count = User.query.count()
|
||||||
|
print(f'Total users: {count}')
|
||||||
|
admins = User.query.filter_by(is_admin=True).count()
|
||||||
|
print(f'Admin users: {admins}')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Health Checks
|
||||||
|
|
||||||
|
### Check Flask Application
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
import urllib.request
|
||||||
|
try:
|
||||||
|
response = urllib.request.urlopen('http://localhost:5000/', timeout=5)
|
||||||
|
print(f'✅ Application responding (HTTP {response.status})')
|
||||||
|
except Exception as e:
|
||||||
|
print(f'❌ Application error: {e}')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Validate Caddy Configuration
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T caddy caddy validate --config /etc/caddy/Caddyfile
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test HTTPS from Container
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T caddy wget --no-check-certificate -qO- https://localhost/ | head -10
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Maintenance Commands
|
||||||
|
|
||||||
|
### View Caddy Configuration
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T caddy cat /etc/caddy/Caddyfile
|
||||||
|
```
|
||||||
|
|
||||||
|
### Reload Caddy Configuration
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T caddy caddy reload --config /etc/caddy/Caddyfile
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Application Logs (Last 50 lines)
|
||||||
|
```bash
|
||||||
|
docker-compose logs --tail=50 digiserver-app
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Caddy Logs (Last 50 lines)
|
||||||
|
```bash
|
||||||
|
docker-compose logs --tail=50 caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
### Clear All Logs
|
||||||
|
```bash
|
||||||
|
docker-compose logs --clear
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Container Management
|
||||||
|
|
||||||
|
### Restart All Containers
|
||||||
|
```bash
|
||||||
|
docker-compose restart
|
||||||
|
```
|
||||||
|
|
||||||
|
### Restart Specific Container
|
||||||
|
```bash
|
||||||
|
# Restart application
|
||||||
|
docker-compose restart digiserver-app
|
||||||
|
|
||||||
|
# Restart Caddy
|
||||||
|
docker-compose restart caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
### Stop All Containers
|
||||||
|
```bash
|
||||||
|
docker-compose stop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Start All Containers
|
||||||
|
```bash
|
||||||
|
docker-compose start
|
||||||
|
```
|
||||||
|
|
||||||
|
### Remove Everything (Clean slate)
|
||||||
|
```bash
|
||||||
|
docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
### Remove Everything Including Volumes (Full cleanup)
|
||||||
|
```bash
|
||||||
|
docker-compose down -v
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 Backup and Recovery
|
||||||
|
|
||||||
|
### Backup Database
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
import shutil
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
||||||
|
backup_name = f'digiserver_{timestamp}.db'
|
||||||
|
|
||||||
|
with app.app_context():
|
||||||
|
# Get database path
|
||||||
|
db_path = app.instance_path + '/digiserver.db'
|
||||||
|
shutil.copy(db_path, f'/app/backups/{backup_name}')
|
||||||
|
print(f'✅ Backup created: {backup_name}')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### List Database Backups
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app ls -lah /app/backups/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚨 Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
**Containers won't start:**
|
||||||
|
```bash
|
||||||
|
# Check logs
|
||||||
|
docker-compose logs
|
||||||
|
|
||||||
|
# Try rebuild
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
**Migration fails:**
|
||||||
|
```bash
|
||||||
|
# Check database connection
|
||||||
|
docker-compose exec -T digiserver-app python -c "
|
||||||
|
from app.app import create_app
|
||||||
|
app = create_app()
|
||||||
|
print('✅ Database connection OK')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Certificate issues:**
|
||||||
|
```bash
|
||||||
|
# Clear Caddy cache
|
||||||
|
docker volume rm digiserver-v2_caddy-data
|
||||||
|
docker volume rm digiserver-v2_caddy-config
|
||||||
|
|
||||||
|
# Restart Caddy
|
||||||
|
docker-compose restart caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
**Port conflicts:**
|
||||||
|
```bash
|
||||||
|
# Find what's using port 443
|
||||||
|
lsof -i :443
|
||||||
|
|
||||||
|
# Find what's using port 80
|
||||||
|
lsof -i :80
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Tips and Notes
|
||||||
|
|
||||||
|
- **`-T` flag**: Prevents Docker from allocating a pseudo-terminal (use in scripts)
|
||||||
|
- **No `-T` flag**: Allocates a terminal (use for interactive commands)
|
||||||
|
- **Container name**: `digiserver-app` (Flask application)
|
||||||
|
- **Container name**: `digiserver-caddy` (Reverse proxy)
|
||||||
|
- **Network**: `digiserver-v2_digiserver-network`
|
||||||
|
- **Database**: SQLite at `/app/instance/digiserver.db`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 Related Documentation
|
||||||
|
|
||||||
|
- [DEPLOYMENT_COMMANDS.md](DEPLOYMENT_COMMANDS.md) - Complete deployment guide
|
||||||
|
- [setup_https.sh](setup_https.sh) - Semi-automated setup script
|
||||||
|
- [deploy.sh](deploy.sh) - Fully automated deployment script
|
||||||
|
- [HTTPS_CONFIGURATION.md](old_code_documentation/HTTPS_CONFIGURATION.md) - HTTPS details
|
||||||
|
|
||||||
120
old_code_documentation/QUICK_START.md
Normal file
120
old_code_documentation/QUICK_START.md
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# 🚀 DigiServer Deployment - Quick Reference Card
|
||||||
|
|
||||||
|
## Instant Deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/digiserver-v2
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
That's it! ✅
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 Documentation Files
|
||||||
|
|
||||||
|
| File | Purpose | Size |
|
||||||
|
|------|---------|------|
|
||||||
|
| [DEPLOYMENT_INDEX.md](DEPLOYMENT_INDEX.md) | Navigation guide | 8.1 KB |
|
||||||
|
| [DEPLOYMENT_README.md](DEPLOYMENT_README.md) | Complete guide | 9.4 KB |
|
||||||
|
| [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md) | Command reference | 7.6 KB |
|
||||||
|
| [DEPLOYMENT_COMMANDS.md](DEPLOYMENT_COMMANDS.md) | Detailed guide | 6.8 KB |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Executable Scripts
|
||||||
|
|
||||||
|
| Script | Purpose | Time |
|
||||||
|
|--------|---------|------|
|
||||||
|
| [deploy.sh](deploy.sh) | Fully automated | 2-3 min |
|
||||||
|
| [setup_https.sh](setup_https.sh) | Semi-automated | 3-5 min |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Common Commands
|
||||||
|
|
||||||
|
### Check Status
|
||||||
|
```bash
|
||||||
|
docker-compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Logs
|
||||||
|
```bash
|
||||||
|
docker-compose logs -f digiserver-app
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verify HTTPS Configuration
|
||||||
|
```bash
|
||||||
|
docker-compose exec -T digiserver-app python /app/https_manager.py status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Access the Application
|
||||||
|
```
|
||||||
|
https://digiserver.sibiusb.harting.intra
|
||||||
|
https://10.76.152.164
|
||||||
|
https://digiserver
|
||||||
|
```
|
||||||
|
|
||||||
|
### Default Login
|
||||||
|
```
|
||||||
|
Username: admin
|
||||||
|
Password: admin123
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Troubleshooting
|
||||||
|
|
||||||
|
| Issue | Solution |
|
||||||
|
|-------|----------|
|
||||||
|
| Containers won't start | `docker-compose logs` |
|
||||||
|
| Migration fails | Check DB connection, see docs |
|
||||||
|
| HTTPS errors | Clear Caddy cache: `docker volume rm digiserver-v2_caddy-*` |
|
||||||
|
| Port conflict | `lsof -i :443` or change in docker-compose.yml |
|
||||||
|
|
||||||
|
See [DEPLOYMENT_README.md#-troubleshooting](DEPLOYMENT_README.md#-troubleshooting) for full guide.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌍 Deploy on Different PC
|
||||||
|
|
||||||
|
1. Copy project files
|
||||||
|
2. Install Docker & Docker Compose
|
||||||
|
3. Run `./deploy.sh`
|
||||||
|
|
||||||
|
Done! 🎉
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 Customize Deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
HOSTNAME=myserver \
|
||||||
|
DOMAIN=myserver.internal \
|
||||||
|
IP_ADDRESS=192.168.1.100 \
|
||||||
|
EMAIL=admin@example.com \
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Need More Help?
|
||||||
|
|
||||||
|
- **First time?** → [DEPLOYMENT_README.md](DEPLOYMENT_README.md)
|
||||||
|
- **Need a command?** → [DOCKER_EXEC_COMMANDS.md](DOCKER_EXEC_COMMANDS.md)
|
||||||
|
- **Lost?** → [DEPLOYMENT_INDEX.md](DEPLOYMENT_INDEX.md)
|
||||||
|
- **Troubleshooting?** → [DEPLOYMENT_README.md#-troubleshooting](DEPLOYMENT_README.md#-troubleshooting)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ What You Get
|
||||||
|
|
||||||
|
✅ Web application with admin dashboard
|
||||||
|
✅ HTTPS with self-signed certificates
|
||||||
|
✅ User management system
|
||||||
|
✅ Player & content management
|
||||||
|
✅ Fully configured & ready to use
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Ready to deploy?** `./deploy.sh` 🚀
|
||||||
156
setup_https.sh
Normal file → Executable file
156
setup_https.sh
Normal file → Executable file
@@ -1,32 +1,146 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Setup script for HTTPS Configuration Management
|
# Setup script for HTTPS Configuration Management and complete system initialization
|
||||||
|
# This script can be run locally or on a new deployment PC
|
||||||
|
|
||||||
echo "Setting up HTTPS Configuration Management..."
|
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 ""
|
echo ""
|
||||||
|
|
||||||
# Step 1: Run migration
|
# ============================================================================
|
||||||
echo "📦 Creating https_config database table..."
|
# OPTION 1: Running inside Docker container
|
||||||
python /app/migrations/add_https_config_table.py
|
# ============================================================================
|
||||||
|
if [ "$IN_DOCKER" = true ]; then
|
||||||
|
echo -e "${YELLOW}📍 Running inside Docker container${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
echo -e "${BLUE}Step 1/4:${NC} ${YELLOW}Creating https_config database table...${NC}"
|
||||||
echo "✅ Database migration completed successfully!"
|
python /app/migrations/add_https_config_table.py
|
||||||
else
|
echo -e "${GREEN}✅ https_config table created${NC}"
|
||||||
echo "❌ Database migration failed!"
|
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
|
exit 1
|
||||||
fi
|
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 ""
|
echo ""
|
||||||
echo "✅ HTTPS Configuration Management is now ready!"
|
|
||||||
|
# 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 ""
|
||||||
echo "Next steps:"
|
|
||||||
echo "1. Start the application: docker-compose up -d"
|
echo -e "${BLUE}Step 2/5:${NC} ${YELLOW}Creating player_user database table...${NC}"
|
||||||
echo "2. Log in to the admin panel"
|
docker-compose exec -T digiserver-app python /app/migrations/add_player_user_table.py
|
||||||
echo "3. Navigate to: Admin Panel → 🔒 HTTPS Configuration"
|
echo -e "${GREEN}✅ player_user table created${NC}"
|
||||||
echo "4. Configure your HTTPS settings:"
|
echo ""
|
||||||
echo " - Enable HTTPS"
|
|
||||||
echo " - Set hostname: digiserver"
|
echo -e "${BLUE}Step 3/5:${NC} ${YELLOW}Adding email column to https_config...${NC}"
|
||||||
echo " - Set domain: digiserver.sibiusb.harting.intra"
|
docker-compose exec -T digiserver-app python /app/migrations/add_email_to_https_config.py
|
||||||
echo " - Set IP: 10.76.152.164"
|
echo -e "${GREEN}✅ Email column added${NC}"
|
||||||
echo "5. Save the configuration"
|
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 ""
|
echo ""
|
||||||
echo "📖 For detailed information, see HTTPS_CONFIGURATION.md"
|
|
||||||
|
|||||||
26
test connection.txr
Normal file
26
test connection.txr
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# 1. Add virtual IP
|
||||||
|
sudo ip addr add 10.76.152.164/24 dev wlp0s20f3
|
||||||
|
|
||||||
|
# 2. Wait a moment for the interface to be ready
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
# 3. Test HTTP (should redirect to HTTPS)
|
||||||
|
echo "Testing HTTP:"
|
||||||
|
curl -i http://10.76.152.164
|
||||||
|
|
||||||
|
# 4. Test HTTPS
|
||||||
|
echo "Testing HTTPS:"
|
||||||
|
curl -k https://10.76.152.164 | head -20
|
||||||
|
|
||||||
|
# 5. When done, remove the alias
|
||||||
|
sudo ip addr del 10.76.152.164/24 dev wlp0s20f3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo "📋 Step 1: Add virtual IP alias 10.76.152.164 to wlp0s20f3" && \
|
||||||
|
sudo ip addr add 10.76.152.164/24 dev wlp0s20f3 && \
|
||||||
|
echo "✅ Virtual IP added" && \
|
||||||
|
sleep 2 && \
|
||||||
|
echo "" && \
|
||||||
|
echo "📋 Step 2: Verify the virtual IP is active" && \
|
||||||
|
ip addr show wlp0s20f3 | grep "inet "
|
||||||
Reference in New Issue
Block a user