# ======================================== # muxai - 多 AI 并行对话平台 - 环境变量配置示例 # ======================================== # 使用说明: # 1. 复制此文件为 .env:cp .env.example .env # 2. 根据实际需求修改配置值 # 3. .env 文件包含敏感信息,不要提交到版本控制系统 # 4. 环境变量优先级高于配置文件(config/*.json) # # 注意:以下配置为当前系统支持的环境变量 # 其他系统配置请通过后台管理界面或配置文件进行设置 # ======================================== # ==================== 服务器配置 ==================== # 服务器监听端口(默认:3000) PORT=3000 # 运行环境(development/production) # development: 开发模式,显示详细错误信息 # production: 生产模式,优化性能和安全性 NODE_ENV=development # 允许的跨域来源(逗号分隔,用于生产环境) # 开发环境默认允许所有来源 (*) # 生产环境必须明确指定允许的域名 ALLOWED_ORIGINS=http://localhost:3000,https://yourdomain.com # ==================== 安全配置 ==================== # 会话密钥(用于加密用户会话和验证码) # # 🔴 生产环境安全要求: # - 必须使用强随机密钥(至少32字节/64个十六进制字符) # - 不能包含 "change-this"、"secret-key"、"example" 等弱密钥模式 # - 服务器启动时会自动验证,不安全的密钥将导致启动失败 # - 必须通过环境变量设置,不能硬编码到配置文件中 # # ✅ 开发环境配置: # - 可以使用简单的密钥方便调试 # - 服务器会显示警告但允许启动 # - 示例:SESSION_SECRET=dev-secret-key-for-local-testing-only # # 📝 生成安全密钥的命令: # 方法1(推荐):node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" # 方法2:openssl rand -hex 32 # 方法3:python3 -c "import secrets; print(secrets.token_hex(32))" # # ⚠️ 注意事项: # - 不要将包含真实密钥的 .env 文件提交到版本控制 # - 定期轮换生产环境的密钥 # - 不同环境(开发/测试/生产)使用不同的密钥 # # 开发环境示例(简单密钥,仅用于本地开发): # SESSION_SECRET=dev-secret-key-for-local-testing-only # # 生产环境示例(必须使用生成的强随机密钥): # SESSION_SECRET=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2 SESSION_SECRET=change-this-to-a-random-string-in-production # ==================== 加密配置 ==================== # 配置加密密钥(用于加密用户配置中的敏感数据) # # 🔴 生产环境安全要求: # - 必须使用强随机密钥(至少32字节) # - 用于加密用户的 API Key 和 System Prompt # - 必须通过环境变量设置,不能使用默认值 # # ✅ 开发环境配置: # - 可以使用简单的密钥方便调试 # - 系统会使用默认密钥(仅用于本地开发) # # 📝 生成安全密钥的命令: # 方法1(推荐):node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" # 方法2:openssl rand -hex 32 # 方法3:python3 -c "import secrets; print(secrets.token_hex(32))" # # ⚠️ 注意事项: # - 此密钥与 SESSION_SECRET 不同,专门用于配置数据加密 # - 更换密钥后,已加密的数据将无法解密 # - 建议在系统初始化时设置,后续不要更改 # # 开发环境:可以留空,系统使用默认密钥 # 生产环境:必须设置强随机密钥 CONFIG_ENCRYPTION_KEY=your-32-character-encryption-key-here # ==================== 数据库配置 ==================== # 数据库类型(可选值:sqlite/mysql/postgresql/neon) # - sqlite: 本地文件数据库,无需额外安装(默认) # - mysql: MySQL/MariaDB 数据库 # - postgresql: PostgreSQL 数据库 # - neon: Neon Serverless Postgres(云数据库) DB_TYPE=sqlite # --- SQLite 配置(DB_TYPE=sqlite)--- # SQLite 数据库文件路径(相对于项目根目录或绝对路径) DB_PATH=./db/chat.db # --- MySQL 配置(DB_TYPE=mysql)--- # MySQL 数据库连接参数 MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=your-mysql-password MYSQL_DATABASE=muxai # --- PostgreSQL 配置(DB_TYPE=postgresql)--- # PostgreSQL 数据库连接参数 PGHOST=localhost PGPORT=5432 PGUSER=postgres PGPASSWORD=your-postgres-password PGDATABASE=muxai # --- Neon Serverless Postgres 配置(DB_TYPE=neon)--- # Neon 连接字符串(从 Neon 控制台获取) # 支持两种格式: # 1. DATABASE_URL(标准格式) # 2. POSTGRES_URL(Vercel 兼容格式) # 获取连接字符串:https://console.neon.tech/ DATABASE_URL=postgresql://user:password@ep-xxx.aws.neon.tech/neondb?sslmode=require # POSTGRES_URL=postgresql://user:password@ep-xxx.aws.neon.tech/neondb?sslmode=require # ==================== 调试配置(可选)==================== # CSP 报告模式(用于测试 CSP 策略,不强制执行) # 设置为 true 时,CSP 违规不会阻止资源加载,只会发送报告 # CSP_REPORT_ONLY=true # CSP 违规报告端点(用于收集 CSP 违规报告) # 需要配合 CSP_REPORT_ONLY 使用 # CSP_REPORT_URI=https://example.com/api/csp-report # SQL 查询日志(仅开发环境有效) # 设置为 true 时,会在控制台输出所有 SQL 查询语句 # DEBUG_SQL=true # ==================== 快速开始 ==================== # 开发环境(使用 SQLite): # PORT=3000 # NODE_ENV=development # SESSION_SECRET=dev-secret-key-for-local-testing-only # DB_TYPE=sqlite # DB_PATH=./db/chat.db # # 生产环境(使用 Neon): # PORT=80 # NODE_ENV=production # SESSION_SECRET=<使用命令生成的64位十六进制字符串> # DB_TYPE=neon # DATABASE_URL=<你的 Neon 连接字符串> # ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com