small fix, don't worry about it

This commit is contained in:
Tomas Dvorak
2026-04-10 12:02:36 +02:00
parent 08bd0c6e5c
commit 08cb5754f3
638 changed files with 57332 additions and 34706 deletions
+264
View File
@@ -0,0 +1,264 @@
#!/bin/bash
# Production Readiness Check Script
# This script validates that all production requirements are met
set -e
echo "🔍 Containr Production Readiness Check"
echo "========================================"
echo ""
ERRORS=0
WARNINGS=0
# Color codes
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
error() {
echo -e "${RED}❌ ERROR: $1${NC}"
((ERRORS++))
}
warning() {
echo -e "${YELLOW}⚠️ WARNING: $1${NC}"
((WARNINGS++))
}
success() {
echo -e "${GREEN}$1${NC}"
}
info() {
echo "$1"
}
# Check if production env file exists
ENV_FILE=".env.prod"
if [ ! -f "$ENV_FILE" ] && [ -f ".env" ]; then
ENV_FILE=".env"
fi
if [ ! -f "$ENV_FILE" ]; then
error "No production env file found. Copy .env.production.example to .env.prod"
else
success "$ENV_FILE exists"
fi
# Load environment variables
if [ -f "$ENV_FILE" ]; then
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
fi
echo ""
echo "1. Environment Configuration"
echo "----------------------------"
# Check ENVIRONMENT
if [ "$ENVIRONMENT" != "production" ]; then
warning "ENVIRONMENT is not set to 'production' (current: ${ENVIRONMENT:-not set})"
else
success "ENVIRONMENT is set to production"
fi
# Check JWT_SECRET
if [ -z "$JWT_SECRET" ] || [ "$JWT_SECRET" = "your-secret-key-change-in-production" ]; then
error "JWT_SECRET is not set or using default value"
elif [ ${#JWT_SECRET} -lt 32 ]; then
error "JWT_SECRET must be at least 32 characters (current: ${#JWT_SECRET})"
else
success "JWT_SECRET is properly configured"
fi
# Check BETTER_AUTH_SECRET
if [ -z "$BETTER_AUTH_SECRET" ] || [ "$BETTER_AUTH_SECRET" = "PLACEHOLDER_BETTER_AUTH_SECRET_CHANGE_ME_32CHARS_MIN" ]; then
error "BETTER_AUTH_SECRET is not set or using placeholder"
elif [ ${#BETTER_AUTH_SECRET} -lt 32 ]; then
error "BETTER_AUTH_SECRET must be at least 32 characters"
else
success "BETTER_AUTH_SECRET is properly configured"
fi
# Check COOKIE_SECURE
if [ "$COOKIE_SECURE" != "true" ]; then
error "COOKIE_SECURE must be 'true' in production (current: ${COOKIE_SECURE:-not set})"
else
success "COOKIE_SECURE is enabled"
fi
# Check CORS_ORIGINS
if [ -z "$CORS_ORIGINS" ] || [ "$CORS_ORIGINS" = "*" ]; then
error "CORS_ORIGINS must be set to specific domains in production"
elif [[ "$CORS_ORIGINS" == *"*"* ]]; then
error "CORS_ORIGINS cannot contain wildcards in production"
else
success "CORS_ORIGINS is properly configured"
fi
echo ""
echo "2. Database Configuration"
echo "-------------------------"
# Check database password
if [ -z "$POSTGRES_PASSWORD" ] || [ "$POSTGRES_PASSWORD" = "dev_password_123" ]; then
error "POSTGRES_PASSWORD is not set or using default value"
else
success "POSTGRES_PASSWORD is configured"
fi
# Check Redis password
if [ -z "$REDIS_PASSWORD" ] || [ "$REDIS_PASSWORD" = "dev_redis_123" ]; then
error "REDIS_PASSWORD is not set or using default value"
else
success "REDIS_PASSWORD is configured"
fi
# Check AUTO_MIGRATE
if [ "$AUTO_MIGRATE" = "true" ]; then
success "AUTO_MIGRATE is enabled"
else
warning "AUTO_MIGRATE is disabled - ensure migrations are run manually"
fi
# Check SEED_DATA_ON_START
if [ "$SEED_DATA_ON_START" = "true" ]; then
error "SEED_DATA_ON_START must be false in production"
else
success "SEED_DATA_ON_START is disabled"
fi
echo ""
echo "3. Security Configuration"
echo "-------------------------"
# Check CONTAINR_AGENT_AUTH_TOKEN
if [ -z "$CONTAINR_AGENT_AUTH_TOKEN" ] || [ "$CONTAINR_AGENT_AUTH_TOKEN" = "replace_with_strong_agent_secret" ]; then
error "CONTAINR_AGENT_AUTH_TOKEN is not set or using placeholder"
else
success "CONTAINR_AGENT_AUTH_TOKEN is configured"
fi
# Check BCRYPT_COST
if [ -z "$BCRYPT_COST" ]; then
warning "BCRYPT_COST not set, using default"
elif [ "$BCRYPT_COST" -lt 12 ]; then
warning "BCRYPT_COST should be at least 12 for production (current: $BCRYPT_COST)"
else
success "BCRYPT_COST is properly configured"
fi
echo ""
echo "4. Domain Configuration"
echo "-----------------------"
# Check DOMAIN
if [ -z "$DOMAIN" ] || [ "$DOMAIN" = "localhost" ]; then
error "DOMAIN must be set to your actual domain"
else
success "DOMAIN is configured: $DOMAIN"
fi
# Check ACME_EMAIL
if [ -z "$ACME_EMAIL" ] || [ "$ACME_EMAIL" = "admin@localhost" ]; then
warning "ACME_EMAIL should be set to a valid email for SSL certificates"
else
success "ACME_EMAIL is configured"
fi
echo ""
echo "5. File Structure"
echo "-----------------"
# Check critical files
CRITICAL_FILES=(
"docker-compose.yml"
"infra/docker-compose.yml"
"app/backend/Dockerfile"
"app/frontend/Dockerfile"
"app/backend/go.mod"
"app/frontend/package.json"
)
for file in "${CRITICAL_FILES[@]}"; do
if [ -f "$file" ]; then
success "$file exists"
else
error "$file is missing"
fi
done
echo ""
echo "6. Docker Configuration"
echo "-----------------------"
# Check if Docker is installed
if command -v docker &> /dev/null; then
success "Docker is installed"
docker --version
else
error "Docker is not installed"
fi
# Check if Docker Compose is available
if docker compose version &> /dev/null; then
success "Docker Compose is available"
docker compose version
else
error "Docker Compose is not available"
fi
# Validate docker-compose.yml
if [ -f "infra/docker-compose.yml" ]; then
if docker compose -f infra/docker-compose.yml config -q 2>/dev/null; then
success "docker-compose.yml is valid"
else
error "docker-compose.yml has syntax errors"
fi
fi
echo ""
echo "7. Build Checks"
echo "---------------"
# Check backend build
if [ -f "app/backend/go.mod" ]; then
cd app/backend
if go mod verify &> /dev/null; then
success "Backend Go modules are valid"
else
warning "Backend Go modules verification failed"
fi
cd ../..
fi
# Check frontend build
if [ -f "app/frontend/package.json" ]; then
if [ -d "app/frontend/node_modules" ]; then
success "Frontend dependencies are installed"
else
warning "Frontend dependencies not installed - run 'npm install'"
fi
fi
echo ""
echo "========================================"
echo "Summary"
echo "========================================"
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
echo -e "${GREEN}✅ All checks passed! Ready for production deployment.${NC}"
exit 0
elif [ $ERRORS -eq 0 ]; then
echo -e "${YELLOW}⚠️ $WARNINGS warning(s) found. Review before deploying.${NC}"
exit 0
else
echo -e "${RED}$ERRORS error(s) and $WARNINGS warning(s) found.${NC}"
echo -e "${RED}Please fix all errors before deploying to production.${NC}"
exit 1
fi