#!/bin/bash # CarrotSkin 环境变量检查脚本 echo "🔍 检查 CarrotSkin 环境变量配置..." # 必需的环境变量列表 REQUIRED_VARS=( "DATABASE_HOST" "DATABASE_USERNAME" "DATABASE_PASSWORD" "DATABASE_NAME" "REDIS_HOST" "RUSTFS_ENDPOINT" "RUSTFS_ACCESS_KEY" "RUSTFS_SECRET_KEY" "RUSTFS_BUCKET_TEXTURES" "RUSTFS_BUCKET_AVATARS" "JWT_SECRET" ) # 检查.env文件是否存在 if [ ! -f ".env" ]; then echo "❌ .env 文件不存在" echo "💡 请复制 .env.example 为 .env 并配置相关变量" exit 1 fi echo "✅ .env 文件存在" # 加载.env文件 set -a source .env 2>/dev/null set +a # 检查必需的环境变量 missing_vars=() for var in "${REQUIRED_VARS[@]}"; do if [ -z "${!var}" ]; then missing_vars+=("$var") fi done if [ ${#missing_vars[@]} -gt 0 ]; then echo "❌ 缺少以下必需的环境变量:" for var in "${missing_vars[@]}"; do echo " - $var" done echo "" echo "💡 请在 .env 文件中设置这些变量" exit 1 fi echo "✅ 所有必需的环境变量都已设置" # 检查关键配置的合理性 echo "" echo "📋 当前配置概览:" echo " 数据库: $DATABASE_USERNAME@$DATABASE_HOST:${DATABASE_PORT:-5432}/$DATABASE_NAME" echo " Redis: $REDIS_HOST:${REDIS_PORT:-6379}" echo " RustFS: $RUSTFS_ENDPOINT" echo " 存储桶: $RUSTFS_BUCKET_TEXTURES, $RUSTFS_BUCKET_AVATARS" echo " JWT密钥长度: ${#JWT_SECRET} 字符" # 检查JWT密钥长度 if [ ${#JWT_SECRET} -lt 32 ]; then echo "⚠️ JWT密钥过短,建议使用至少32字符的随机字符串" fi # 检查默认密码 if [ "$JWT_SECRET" = "your-jwt-secret-key-change-this-in-production" ]; then echo "⚠️ 使用的是默认JWT密钥,生产环境中请更改" fi if [ "$DATABASE_PASSWORD" = "123456" ] || [ "$DATABASE_PASSWORD" = "your_password_here" ] || [ "$DATABASE_PASSWORD" = "carrotskin123" ]; then echo "⚠️ 使用的是默认数据库密码,生产环境中请更改" fi if [ "$RUSTFS_ACCESS_KEY" = "your_access_key" ] || [ "$RUSTFS_SECRET_KEY" = "your_secret_key" ] || [ "$RUSTFS_ACCESS_KEY" = "rustfsadmin" ]; then echo "⚠️ 使用的是默认RustFS凭证,生产环境中请更改" fi echo "" echo "🎉 环境变量检查完成!"