# ==================== 必须配置(启动前) ==================== # 以下配置项必须在项目启动前设置 # 应用端口(默认 8084) APP_PORT=8084 # Docker Compose 镜像(默认正式版 latest;提前测试可改 rc/beta;也可固定具体版本) # 示例: # APP_IMAGE=ghcr.io/fawney19/aether:latest # APP_IMAGE=ghcr.io/fawney19/aether:rc # APP_IMAGE=ghcr.io/fawney19/aether:beta # APP_IMAGE=ghcr.io/fawney19/aether:0.7.0-rc.1 # API Key 前缀(默认 sk) API_KEY_PREFIX=sk # Rust 日志过滤(默认 aether_gateway=info) # 示例: aether_gateway=debug,sqlx=warn RUST_LOG=aether_gateway=info # CORS 配置(跨域带 Cookie 时不要写 *,必须显式列出前端源) # 示例: http://localhost:5173,https://app.example.com # CORS_ORIGINS=http://localhost:5173 # CORS_ALLOW_CREDENTIALS=true # 如果前后端跨站并依赖登录刷新 Cookie,还要配合: # AUTH_REFRESH_COOKIE_SAMESITE=None # AUTH_REFRESH_COOKIE_SECURE=true # 数据库配置 DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_NAME=aether DB_PASSWORD=aether # Redis 配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=aether # JWT密钥(使用 ./generate_keys.sh 生成) # 用于用户登录 token 签名,更换后所有用户需重新登录 JWT_SECRET_KEY=change-this-to-a-secure-random-string # 独立加密密钥(用于加密 Provider API Key 等敏感数据) # 注意:更换此密钥后需要在管理面板重新配置所有 Provider API Key ENCRYPTION_KEY=change-this-to-another-secure-random-string # 启动自举管理员(仅在当前库里还没有活动管理员时生效) # 手动部署时取消注释并设置;install.sh 首次生成配置时会提示输入。 ADMIN_EMAIL=admin@example.com ADMIN_USERNAME=admin123456 # ADMIN_PASSWORD= # ==================== 可选配置(有默认值) ==================== # docker compose 下 app 启动前自动执行 pending migration/backfill(默认 true) # AETHER_GATEWAY_AUTO_PREPARE_DATABASE=true # 管理后台更新策略: # - systemd/二进制部署使用 self:下载 GitHub Release 包,校验 SHA256 后切换 current 并重启。 # - Docker Compose 使用 docker:后台只提示版本,实际更新请在 compose 目录执行 ./update.sh。 # - 源码/本地构建使用 manual:手动拉取源码或下载 release。 # Compose 默认把持久化文件放在 ./datas/{postgres,mysql,sqlite,redis},日志放在 ./logs。 # 分布式/多节点部署不要使用 ./datas 作为共享数据目录;应使用外部共享 Postgres/MySQL 和 Redis。 # 多节点不要从管理后台一键更新单个节点,应使用镜像滚动更新、systemd 分批发布或外部编排。 # AETHER_BASE_DIR=/opt/aether # AETHER_UPDATE_STRATEGY=docker # AETHER_DOCKER_UPDATE_COMMAND=./update.sh # AETHER_GATEWAY_DEPLOYMENT_TOPOLOGY=single-node # AETHER_GATEWAY_NODE_ROLE=all # Docker Compose 默认把应用日志输出到 stdout/stderr。 # 如需文件日志,可改成 file 或 both,并把可写目录挂载到 /opt/aether/logs。 # AETHER_LOG_DESTINATION=stdout # AETHER_LOG_FORMAT=pretty # AETHER_LOG_DIR=/opt/aether/logs # 服务器访问 GitHub 需要代理时可配置;也兼容 UPDATE_PROXY_URL / HTTPS_PROXY / ALL_PROXY / HTTP_PROXY。 # 如果 Aether 跑在 Docker 容器里,想走宿主机代理时请写 host.docker.internal,不要写 127.0.0.1。 # AETHER_UPDATE_PROXY_URL=http://host.docker.internal:7890 # 共享出口触发 GitHub API 限流时可配置只读 token;也兼容 GITHUB_TOKEN / GH_TOKEN。 # AETHER_UPDATE_GITHUB_TOKEN= # 下载超时控制:总超时默认 600 秒;连续无响应/无数据默认 30 秒。 # AETHER_UPDATE_DOWNLOAD_TIMEOUT_SECS=600 # AETHER_UPDATE_DOWNLOAD_IDLE_TIMEOUT_SECS=30 # 本地联调后台在线更新(配合 docker-compose.release-local.yml): # 会用当前源码构建 release-layout 测试镜像,并伪装成较旧版本以触发升级入口。 # AETHER_RELEASE_LOCAL_VERSION=v0.7.0 # AETHER_RELEASE_LOCAL_PORT=18085 # LOCAL_RELEASE_APP_IMAGE=aether-app:release-local # PostgreSQL 连接池配置(默认适合单实例/小型部署;高并发可按需调大) # 推荐计算方式(单实例): # MAX = CPU 核数 × 10(AI 网关偏 IO 等待,可激进些;纯 OLTP 用 × 4) # MIN = MAX × 0.2(保留常驻连接应对突发流量,避免冷启动握手开销) # 多实例部署时请按 实例数 × MAX 控制总和,PG 端 max_connections 至少为该总和 + 20 余量 # AETHER_GATEWAY_DATA_POSTGRES_MIN_CONNECTIONS=4 # AETHER_GATEWAY_DATA_POSTGRES_MAX_CONNECTIONS=20 # AETHER_GATEWAY_DATA_POSTGRES_STATEMENT_CACHE_CAPACITY=100 # AETHER_GATEWAY_DATA_POSTGRES_ACQUIRE_TIMEOUT_MS=3000 # PostgreSQL 性能调优(默认值适合 2核4GB 机器,按实际配置覆盖) # 参考:shared_buffers ≈ 可用内存 25%,effective_cache_size ≈ 可用内存 50-75% # POSTGRES_SHM_SIZE 控制 Docker 容器 /dev/shm;仪表盘统计等并行查询会使用它。 # work_mem 是每个连接每个排序操作的内存,不要设太大(并发数 × work_mem 是实际占用) # | 系统内存 | shared_buffers | effective_cache_size | work_mem | # | 2GB | 256MB | 768MB | 4MB | # | 4GB | 1GB | 3GB | 16MB | # | 8GB | 2GB | 6GB | 16MB | # | 16GB | 4GB | 12GB | 32MB | # | 32GB+ | 8GB | 24GB | 32MB | # POSTGRES_SHARED_BUFFERS=1GB # POSTGRES_EFFECTIVE_CACHE_SIZE=3GB # POSTGRES_SHM_SIZE=512mb # POSTGRES_WORK_MEM=16MB # POSTGRES_MAINTENANCE_WORK_MEM=256MB