# 服务器部署环境变量模板 # 使用方式:复制到 /opt/edu/.env 并填入生产值 # cp infra/deploy.env.example /opt/edu/.env # vim /opt/edu/.env # # 安全警告: # - 此文件含敏感信息,禁止提交到 Git # - .gitignore 已忽略 .env # - 仅 SRE AI 或人类决策者可编辑 # ============ 数据库(服务器已有 MySQL)============ # DATABASE_URL 中的 host 需用容器名(如 edu-mysql)而非 localhost # 因为应用容器通过 edu-shared 网络访问 MySQL 容器 DATABASE_URL=mysql://edu:changeme@edu-mysql:3306/next_edu_cloud # ============ Redis(服务器已有 Redis)============ # 同理用容器名 REDIS_URL=redis://edu-redis:6379 # ============ JWT(生产密钥,必须修改)============ # 生成方式:openssl rand -hex 32 JWT_SECRET=CHANGE_ME_TO_STRONG_RANDOM_SECRET JWT_ISSUER=next-edu-cloud JWT_AUDIENCE=next-edu-cloud # ============ 服务端口 ============ API_GATEWAY_PORT=8080 TEACHER_PORTAL_PORT=3000 ADMIN_PORTAL_PORT=4003 # ============ Kafka(P3+ 启用,留空则 Outbox publisher 持续重试)============ KAFKA_BROKERS= # ============ 可观测性(P6 启用)============ # OTLP collector 端点,留空则服务跳过 trace 上报 OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318 LOG_LEVEL=info # ============ Neo4j(content 服务,留空则降级模式)============ NEO4J_URL= NEO4J_PASSWORD= # ============ Elasticsearch(msg 服务,留空则降级模式)============ ES_URL= # ============ ClickHouse(data-ana 服务,留空则降级模式)============ CLICKHOUSE_HOST= CLICKHOUSE_PORT=8123 CLICKHOUSE_DATABASE=edu_analytics CLICKHOUSE_USER= CLICKHOUSE_PASSWORD= # ============ LLM 配置(ai 服务,留空则降级模式)============ OPENAI_API_KEY= OPENAI_BASE_URL=https://api.openai.com/v1 ANTHROPIC_API_KEY=