2025-12-10 20:52:44 +08:00
|
|
|
|
# ==================== 必须配置(启动前) ====================
|
|
|
|
|
|
# 以下配置项必须在项目启动前设置
|
|
|
|
|
|
|
2026-04-11 17:39:02 +08:00
|
|
|
|
# 应用端口(默认 8084)
|
|
|
|
|
|
APP_PORT=8084
|
|
|
|
|
|
|
2026-05-29 21:39:28 +08:00
|
|
|
|
# 对外访问地址,用于一键安装、CC Switch 导入、支付回调等需要生成公网 URL 的场景。
|
|
|
|
|
|
# 生产环境建议显式配置为不带内部端口的公网域名,例如 https://aether.example.com
|
|
|
|
|
|
# AETHER_PUBLIC_BASE_URL=https://aether.example.com
|
|
|
|
|
|
|
2026-05-14 14:09:27 +08:00
|
|
|
|
# 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
|
|
|
|
|
|
|
2026-09-04 03:45:52 +08:00
|
|
|
|
# Compose 应用容器的非 root 数字身份。Single Node 的 ./data 必须归该身份所有;
|
|
|
|
|
|
# install.sh 会自动写入安装用户的 UID/GID 并迁移旧数据目录。
|
|
|
|
|
|
AETHER_CONTAINER_UID=65532
|
|
|
|
|
|
AETHER_CONTAINER_GID=65532
|
|
|
|
|
|
|
2026-04-11 17:39:02 +08:00
|
|
|
|
# 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
|
2026-05-06 20:03:07 +08:00
|
|
|
|
# CORS_ORIGINS=http://localhost:5173
|
2026-04-11 17:39:02 +08:00
|
|
|
|
# CORS_ALLOW_CREDENTIALS=true
|
|
|
|
|
|
# 如果前后端跨站并依赖登录刷新 Cookie,还要配合:
|
|
|
|
|
|
# AUTH_REFRESH_COOKIE_SAMESITE=None
|
|
|
|
|
|
# AUTH_REFRESH_COOKIE_SECURE=true
|
|
|
|
|
|
|
2025-12-19 17:31:15 +08:00
|
|
|
|
# 数据库配置
|
|
|
|
|
|
DB_HOST=localhost
|
|
|
|
|
|
DB_PORT=5432
|
|
|
|
|
|
DB_USER=postgres
|
|
|
|
|
|
DB_NAME=aether
|
2026-09-04 03:45:52 +08:00
|
|
|
|
DB_PASSWORD=
|
2025-12-19 17:31:15 +08:00
|
|
|
|
|
|
|
|
|
|
# Redis 配置
|
|
|
|
|
|
REDIS_HOST=localhost
|
|
|
|
|
|
REDIS_PORT=6379
|
2026-09-04 03:45:52 +08:00
|
|
|
|
REDIS_PASSWORD=
|
|
|
|
|
|
|
|
|
|
|
|
# 可选 MySQL profile 的应用用户与 root 密码
|
|
|
|
|
|
MYSQL_PASSWORD=
|
|
|
|
|
|
MYSQL_ROOT_PASSWORD=
|
2025-12-10 20:52:44 +08:00
|
|
|
|
|
2026-05-06 20:03:07 +08:00
|
|
|
|
# JWT密钥(使用 ./generate_keys.sh 生成)
|
2025-12-10 20:52:44 +08:00
|
|
|
|
# 用于用户登录 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
|
|
|
|
|
|
|
2026-09-04 03:45:52 +08:00
|
|
|
|
# S3 备份的独立加密密钥(推荐)。未配置时为兼容旧部署,会回退到 ENCRYPTION_KEY。
|
|
|
|
|
|
# 密钥轮换前必须保留旧值,离线恢复工具需要它解密历史备份。
|
|
|
|
|
|
# AETHER_BACKUP_ENCRYPTION_KEY=change-this-to-a-dedicated-secure-random-string
|
|
|
|
|
|
|
2026-04-11 17:39:02 +08:00
|
|
|
|
# 启动自举管理员(仅在当前库里还没有活动管理员时生效)
|
2026-09-03 11:05:59 +08:00
|
|
|
|
# 首次启动前必须设置 ADMIN_PASSWORD;install.sh 首次生成配置时会提示输入。
|
2025-12-10 20:52:44 +08:00
|
|
|
|
ADMIN_EMAIL=admin@example.com
|
2026-05-20 17:41:52 +08:00
|
|
|
|
ADMIN_USERNAME=admin123456
|
2026-05-06 20:03:07 +08:00
|
|
|
|
# ADMIN_PASSWORD=
|
2025-12-10 20:52:44 +08:00
|
|
|
|
|
|
|
|
|
|
# ==================== 可选配置(有默认值) ====================
|
|
|
|
|
|
|
2026-07-10 15:11:49 +08:00
|
|
|
|
# 可信反向代理 IP/CIDR,只有这些来源发送的 X-Real-IP / X-Forwarded-For 会被采用。
|
|
|
|
|
|
# 默认仅信任本机回环代理:127.0.0.0/8,::1/128。
|
|
|
|
|
|
# Docker/Nginx 位于独立容器时,请按实际容器网络设置,例如:172.16.0.0/12。
|
|
|
|
|
|
# AETHER_TRUSTED_PROXY_CIDRS=127.0.0.0/8,::1/128,172.16.0.0/12
|
|
|
|
|
|
|
2026-09-01 20:08:36 +08:00
|
|
|
|
# VS Code Codex 云端协同(仅在叠加 aether-vscodex/docker-compose.aether.yml 时需要)
|
|
|
|
|
|
# 内部 token 至少 24 字节,建议使用:openssl rand -base64 32
|
|
|
|
|
|
# AETHER_VSCODEX_INTERNAL_TOKEN=replace-with-a-long-random-secret
|
|
|
|
|
|
# AETHER_VSCODEX_PUBLIC_WS_URL=wss://aether.example.com/api/vscodex/ws
|
|
|
|
|
|
# AETHER_VSCODEX_ALLOWED_ORIGINS=https://aether.example.com
|
|
|
|
|
|
|
2026-09-03 11:05:59 +08:00
|
|
|
|
# 启动时的数据库准备策略:auto(默认)或 verify-only
|
|
|
|
|
|
# AETHER_GATEWAY_DATABASE_MODE=auto
|
2026-04-25 09:53:21 +08:00
|
|
|
|
|
2026-08-12 16:53:59 +08:00
|
|
|
|
# PostgreSQL 连接池配置(默认每核 4 条、总池至少 32 条且最多 100 条;多实例部署应显式分配每实例预算)
|
2026-06-30 16:54:58 +08:00
|
|
|
|
# AETHER_GATEWAY_DATA_POSTGRES_MIN_CONNECTIONS=12
|
|
|
|
|
|
# AETHER_GATEWAY_DATA_POSTGRES_MAX_CONNECTIONS=80
|
2026-07-12 14:10:54 +08:00
|
|
|
|
# AETHER_GATEWAY_MAX_IN_FLIGHT_REQUESTS=2048
|
|
|
|
|
|
# AETHER_GATEWAY_REQUEST_BODY_BUFFER_BUDGET_MB=256
|
2026-09-04 03:45:52 +08:00
|
|
|
|
# 请求体完整读取总超时默认关闭;确需限制时配置 1000-600000 毫秒的非零值。
|
|
|
|
|
|
# AETHER_GATEWAY_REQUEST_BODY_READ_TIMEOUT_MS=0
|
|
|
|
|
|
# 单请求解压后 Payload 上限(MiB),默认 256;显式设为 0 才表示不限制。
|
|
|
|
|
|
# AETHER_MAX_REQUEST_BODY_MB=256
|
2026-07-12 14:10:54 +08:00
|
|
|
|
# AETHER_GATEWAY_SECURITY_CACHE_TTL_MS=1000
|
2026-09-04 03:45:52 +08:00
|
|
|
|
# AETHER_MAX_REDACTED_SYNC_RESPONSE_BODY_MB=64
|
|
|
|
|
|
# AETHER_MAX_INTERNAL_BUFFERED_BODY_MB=64
|
2026-07-12 14:10:54 +08:00
|
|
|
|
# AETHER_TUNNEL_NODE_STATUS_QUEUE_CAPACITY=1024
|
2026-09-04 03:45:52 +08:00
|
|
|
|
# Tunnel relay 使用的独立 HMAC 密钥。启用 HTTP tunnel relay 或多网关 owner 转发时必须配置,
|
|
|
|
|
|
# 所有网关实例必须使用同一个至少 32 字节的随机值;不要复用 JWT 或数据加密密钥。
|
|
|
|
|
|
# AETHER_TUNNEL_RELAY_AUTH_SECRET=
|
|
|
|
|
|
# 旧版 /api/internal/gateway/* 控制面默认关闭。确需独立服务调用时,配置至少 32 字节的
|
|
|
|
|
|
# 独立 HMAC 密钥;不要复用 JWT、数据加密或 tunnel relay 密钥。多节点必须使用相同值和共享 Redis。
|
|
|
|
|
|
# AETHER_INTERNAL_GATEWAY_AUTH_SECRET=
|
|
|
|
|
|
# 远程 relay 地址必须使用 HTTPS;HTTP 仅允许 localhost 或回环 IP。
|
|
|
|
|
|
# AETHER_TUNNEL_RELAY_BASE_URL=https://gateway-a.example.com
|
2026-09-04 23:44:46 +08:00
|
|
|
|
# 跨网关 relay 解析到受控私有地址时才显式开启;默认关闭以防止被篡改的 attachment
|
|
|
|
|
|
# 记录诱导网关向内网转发 relay 凭据。该开关不放宽普通 provider 的目标地址策略。
|
|
|
|
|
|
# AETHER_TUNNEL_RELAY_ALLOW_PRIVATE_TARGETS=false
|
2026-09-05 03:57:02 +08:00
|
|
|
|
# 更推荐按 relay 主机名精确放行私网部署(逗号分隔,大小写不敏感);不支持通配符/后缀。
|
|
|
|
|
|
# AETHER_TUNNEL_RELAY_PRIVATE_HOST_ALLOWLIST=gateway-a.internal,gateway-b.internal
|
2026-09-04 03:45:52 +08:00
|
|
|
|
# Bark 自建服务默认仅允许公网 HTTPS。确需明文 HTTP 或内网目标时分别显式开启:
|
|
|
|
|
|
# AETHER_BARK_ALLOW_HTTP=false
|
|
|
|
|
|
# AETHER_BARK_ALLOW_PRIVATE_TARGETS=false
|
|
|
|
|
|
|
|
|
|
|
|
# 可选 Provider OAuth 客户端。使用 Gemini CLI / Antigravity 浏览器授权时必须配置
|
|
|
|
|
|
# 对应的 client secret;client ID 未配置时使用内置的公开 native-app client ID。
|
|
|
|
|
|
# AETHER_GEMINI_CLI_OAUTH_CLIENT_ID=
|
|
|
|
|
|
# AETHER_GEMINI_CLI_OAUTH_CLIENT_SECRET=
|
|
|
|
|
|
# AETHER_ANTIGRAVITY_OAUTH_CLIENT_ID=
|
|
|
|
|
|
# AETHER_ANTIGRAVITY_OAUTH_CLIENT_SECRET=
|
2026-05-20 17:41:52 +08:00
|
|
|
|
|
2026-06-30 16:54:58 +08:00
|
|
|
|
# PostgreSQL 容器调优:docker-compose.yml 已内置通用默认值,通常不用配置。
|
|
|
|
|
|
# 只有在 Postgres 独占大内存、或压测显示 DB 缓存/排序/维护任务成为瓶颈时再覆盖。
|
|
|
|
|
|
# 内置默认:shared_buffers=1GB, effective_cache_size=3GB, shm_size=512mb,
|
|
|
|
|
|
# work_mem=16MB, maintenance_work_mem=256MB。
|
|
|
|
|
|
# POSTGRES_SHARED_BUFFERS=8GB
|
|
|
|
|
|
# POSTGRES_EFFECTIVE_CACHE_SIZE=24GB
|
|
|
|
|
|
# POSTGRES_SHM_SIZE=2gb
|
2026-05-21 01:36:05 +08:00
|
|
|
|
# POSTGRES_WORK_MEM=16MB
|
2026-06-30 16:54:58 +08:00
|
|
|
|
# POSTGRES_MAINTENANCE_WORK_MEM=1GB
|