-
Notifications
You must be signed in to change notification settings - Fork 782
Expand file tree
/
Copy path.env.example
More file actions
309 lines (289 loc) · 13 KB
/
Copy path.env.example
File metadata and controls
309 lines (289 loc) · 13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
APP_NAME=Laravel
APP_ENV=production
# 留空则由 Docker 入口执行 key:generate 写入;勿向容器注入「空」的 APP_KEY 环境变量,否则无法写入有效密钥。
APP_KEY=
APP_DEBUG=false
APP_URL=https://your-domain.com
SITE_URL=
ASSET_URL=
# 反向代理/CDN/一级目录部署时按需设置,例如 *、REMOTE_ADDR 或具体代理 IP。
TRUSTED_PROXIES=
# Laravel Boost 仅用于本地调试;生产/公开部署应关闭浏览器日志脚本注入。
BOOST_BROWSER_LOGS_WATCHER=false
# docker-compose.yml 中 app 服务宿主机端口映射(与 APP_URL 一致)
APP_PORT=18080
APP_TIMEZONE=Asia/Shanghai
# --- GEOFlow(遗留 config.php 对齐,见 config/geoflow.php)---
SITE_NAME="智能GEO内容系统"
SITE_FULL_NAME="GEO+AI内容生成系统"
SITE_URL="${APP_URL}"
SITE_DESCRIPTION=
SITE_KEYWORDS=
ADMIN_BASE_PATH=geo_admin
# 前台 Blade 翻译语言(与 APP_LOCALE 独立;默认 zh_CN 对齐旧站中文导航)
GEOFLOW_PUBLIC_LOCALE=zh_CN
# 后台帮助助手使用本地知识检索和一次对话模型调用。完成普通文本检测后开启。
GEOFLOW_ADMIN_UI_V3_ENABLED=true
GEOFLOW_AI_WORKSPACE_RUNTIME_ENABLED=false
GEOFLOW_AI_WORKSPACE_RETENTION_DAYS=90
GEOFLOW_AI_WORKSPACE_GLOBAL_CONCURRENCY=10
GEOFLOW_AI_WORKSPACE_CONCURRENCY_CACHE_STORE=redis
GEOFLOW_AI_WORKSPACE_ADMIN_DAILY_MODEL_CALLS=200
GEOFLOW_AI_WORKSPACE_MODEL_TOTAL_TIMEOUT=90
GEOFLOW_AI_WORKSPACE_MODEL_ATTEMPT_TIMEOUT=30
GEOFLOW_AI_WORKSPACE_HISTORY_CHAR_BUDGET=16000
GEOFLOW_AI_WORKSPACE_GENERATION_LEASE_SECONDS=180
GEOFLOW_AI_WORKSPACE_REQUIRE_VERIFIED_MODEL=true
# 托管渠道站点默认关闭。启用前需完成泛 DNS、通配符 TLS、可信代理和 Nginx 三入口配置。
GEOFLOW_HOSTED_SITES_ENABLED=false
GEOFLOW_PRIMARY_HOSTS=your-domain.com,www.your-domain.com
GEOFLOW_HOSTED_SITE_ROOT_DOMAINS=
# Nginx 三入口使用单个主站域名、可选空格分隔别名,以及单个托管根域。
GEOFLOW_NGINX_PRIMARY_HOST=your-domain.com
GEOFLOW_NGINX_PRIMARY_ALIASES=www.your-domain.com
GEOFLOW_NGINX_HOSTED_ROOT_DOMAIN=sites.your-domain.com
GEOFLOW_NGINX_PUBLIC_SCHEME=https
GEOFLOW_NGINX_PUBLIC_PORT=443
GEOFLOW_HOSTED_SITE_RESOLVER_POSITIVE_TTL=300
GEOFLOW_HOSTED_SITE_RESOLVER_NEGATIVE_TTL=30
GEOFLOW_HOSTED_SITE_DAILY_PUBLISH_LIMIT=3
GEOFLOW_HOSTED_SITE_MIN_PUBLISH_INTERVAL_MINUTES=360
GEOFLOW_HOSTED_SITE_MIN_ARTICLES_BEFORE_INDEX=10
GEOFLOW_HOSTED_SITE_FAILURE_COOLDOWN_THRESHOLD=3
GEOFLOW_HOSTED_SITE_FAILURE_COOLDOWN_MINUTES=60
GEOFLOW_HOSTED_SITE_RESERVATION_TTL_MINUTES=30
GEOFLOW_HOSTED_SITE_RECONCILE_LIMIT=500
GEOFLOW_HOSTED_SITE_STALE_SENDING_SECONDS=150
GEOFLOW_HOSTED_SITE_CERTIFIED_THEMES=default
GEOFLOW_HOSTED_SITE_NETWORK_PREFLIGHT=false
GEOFLOW_HOSTED_SITE_PREFLIGHT_TIMEOUT=8
GEOFLOW_HOSTED_SITE_PREFLIGHT_FRESH_MINUTES=15
GEOFLOW_HOSTED_SITE_INDEX_OBSERVATION_MINUTES=30
# 开发 Docker 入口(docker/entrypoint.sh):迁移完成后是否执行 php artisan optimize(默认 false;生产见 .env.prod.example / entrypoint.prod.sh)
AUTO_OPTIMIZE=false
# Docker init 服务启动时修正 storage/bootstrap/cache 权限;常驻服务已关闭重复扫描。
AUTO_FIX_STORAGE_PERMISSIONS=true
GEOFLOW_ITEMS_PER_PAGE=12
GEOFLOW_ADMIN_ITEMS_PER_PAGE=20
GEOFLOW_TITLE_AI_MAX_MANUAL_RETRIES=3
GEOFLOW_TITLE_AI_SUBMIT_RATE_PER_MINUTE=6
GEOFLOW_TITLE_AI_SUBMIT_IP_RATE_PER_MINUTE=12
GEOFLOW_TITLE_AI_MAX_ACTIVE_RUNS_PER_ADMIN=3
GEOFLOW_TITLE_AI_MAX_PENDING_TITLES_PER_MODEL=300000
GEOFLOW_TITLE_AI_MAX_COUNT=100000
GEOFLOW_TITLE_AI_CONFIRMATION_THRESHOLD=1000
GEOFLOW_TITLE_AI_BATCH_SIZE=50
GEOFLOW_TITLE_AI_RATE_PER_MINUTE=30
GEOFLOW_TITLE_AI_MAX_EMPTY_BATCHES=3
GEOFLOW_TITLE_AI_MAX_BATCH_ATTEMPTS=3
GEOFLOW_TITLE_AI_MAX_REQUEST_MULTIPLIER=3
GEOFLOW_TITLE_AI_REQUEST_TIMEOUT_SECONDS=90
GEOFLOW_TITLE_AI_LEASE_SECONDS=420
GEOFLOW_TITLE_AI_RECOVERY_STALE_SECONDS=300
GEOFLOW_AI_QUALITY_REQUEST_TIMEOUT_SECONDS=160
GEOFLOW_AI_QUALITY_DEADLINE_SECONDS=180
GEOFLOW_AI_QUALITY_SAMPLED_FALLBACK_SECONDS=45
GEOFLOW_AI_QUALITY_SAMPLED_REQUEST_TIMEOUT_SECONDS=35
GEOFLOW_AI_QUALITY_SAMPLED_MAX_CHARACTERS=6000
GEOFLOW_AI_QUALITY_SAMPLED_MAX_RANGES=12
GEOFLOW_AI_QUALITY_FULL_ONLINE_MAX_CHARACTERS=60000
GEOFLOW_AI_QUALITY_SAMPLED_AUTO_RELEASE_ENABLED=true
GEOFLOW_AI_QUALITY_PERSISTENCE_RESERVE_SECONDS=10
GEOFLOW_AI_QUALITY_WORKER_STALE_SECONDS=300
GEOFLOW_AI_QUALITY_JOB_TIMEOUT_SECONDS=245
GEOFLOW_AI_QUALITY_WORKER_TIMEOUT_SECONDS=250
GEOFLOW_AI_QUALITY_STOP_GRACE_PERIOD=260s
GEOFLOW_AI_QUALITY_MAX_OUTPUT_TOKENS=2048
GEOFLOW_AI_QUALITY_MAX_MODEL_CANDIDATES=2
GEOFLOW_AI_QUALITY_MAX_EVIDENCE=12
GEOFLOW_AI_QUALITY_MAX_EVIDENCE_CHARACTERS=6000
GEOFLOW_AI_QUALITY_MAX_FACT_RETRIEVALS=6
GEOFLOW_AI_QUALITY_QUEUE=ai-quality
GEOFLOW_AI_QUALITY_BACKFILL_QUEUE=ai-quality-backfill
AI_QUALITY_QUEUE_REPLICAS=2
GEOFLOW_AI_QUALITY_EXECUTION_VERSION=legacy
GEOFLOW_AI_QUALITY_PRINCIPLE_V2_PERCENT=0
GEOFLOW_AI_QUALITY_FAST_V2_PERCENT=0
GEOFLOW_AI_QUALITY_SCORING_V2_PERCENT=0
GEOFLOW_AI_QUALITY_SHADOW_V2_PERCENT=0
GEOFLOW_AI_QUALITY_EVIDENCE_CACHE_TTL_SECONDS=86400
GEOFLOW_AI_QUALITY_EVIDENCE_CACHE_ENABLED=true
GEOFLOW_AI_QUALITY_CIRCUIT_CONSECUTIVE_FAILURES=5
GEOFLOW_AI_QUALITY_CIRCUIT_SAMPLE_SIZE=10
GEOFLOW_AI_QUALITY_CIRCUIT_FAILURE_PERCENT=50
GEOFLOW_AI_QUALITY_CIRCUIT_OPEN_SECONDS=60
GEOFLOW_AI_QUALITY_FRONT_QUEUE_WAIT_SECONDS=10
GEOFLOW_AI_QUALITY_BACKFILL_QUOTA_RESERVE=2
GEOFLOW_AI_QUALITY_RECOVERY_STALE_SECONDS=60
GEOFLOW_AI_QUALITY_STRUCTURED_REPROBE_SECONDS=86400
GEOFLOW_AI_QUALITY_OPTIMIZATION_ENABLED=false
GEOFLOW_AI_QUALITY_OPTIMIZATION_AUTO_APPLY_ENABLED=false
GEOFLOW_AI_QUALITY_OPTIMIZATION_PERCENT=0
GEOFLOW_AI_QUALITY_OPTIMIZATION_AUTO_APPLY_PERCENT=0
GEOFLOW_AI_QUALITY_OPTIMIZATION_QUEUE=ai-content-optimization
GEOFLOW_AI_QUALITY_OPTIMIZATION_BULK_QUEUE=ai-content-optimization-bulk
GEOFLOW_AI_QUALITY_OPTIMIZATION_BULK_QUOTA_RESERVE=2
GEOFLOW_AI_QUALITY_OPTIMIZATION_MAX_MODEL_ATTEMPTS=2
GEOFLOW_AI_QUALITY_OPTIMIZATION_MAX_ROUNDS=3
GEOFLOW_AI_QUALITY_OPTIMIZATION_MAX_EDIT_CHARACTERS=8000
GEOFLOW_AI_QUALITY_OPTIMIZATION_ROUND_ESTIMATED_SECONDS=235
GEOFLOW_AI_QUALITY_OPTIMIZATION_LEASE_SECONDS=300
GEOFLOW_AI_QUALITY_OPTIMIZATION_RECOVERY_STALE_SECONDS=300
GEOFLOW_AI_QUALITY_OPTIMIZATION_JOB_TIMEOUT_SECONDS=850
GEOFLOW_AI_QUALITY_OPTIMIZATION_WORKER_TIMEOUT_SECONDS=900
AI_QUALITY_OPTIMIZATION_QUEUE_REPLICAS=2
# true 时记录知识库检索「查询向量」是否由 embedding 接口生成(验证用,默认 false)
GEOFLOW_DEBUG_KNOWLEDGE_QUERY_EMBEDDING=false
# 私网出站仅允许精确 host:port(逗号分隔);留空时全部拒绝,不支持通配符或路径。
GEOFLOW_OUTBOUND_PRIVATE_TARGETS=
GEOFLOW_OUTBOUND_JSON_MAX_BYTES=4194304
GEOFLOW_OUTBOUND_AI_MAX_BYTES=8388608
GEOFLOW_OUTBOUND_IMPORT_MAX_BYTES=5242880
GEOFLOW_OUTBOUND_METADATA_MAX_BYTES=1048576
GEOFLOW_OUTBOUND_RESPONSE_MAX_BYTES=52428800
# 安全出站网关会绕过系统/进程 HTTP 代理并固定已校验 IP,避免代理改写目标。
GEOFLOW_UPLOAD_URL=/assets/images/
GEOFLOW_MAX_UPLOAD_BYTES=2097152
# 旧客户端直接提交图片路径的兼容开关,默认关闭;仅在受控迁移窗口临时开启。
GEOFLOW_LEGACY_IMAGE_PATH_INPUT=false
# 全新空库的手动迁移可在单次命令中临时设为 true;Docker init 服务已限定作用域,已有迁移历史或业务数据时该标志无效。
GEOFLOW_SECURITY_FRESH_INSTALL_CONFIRMED=false
# 已有数据升级专用的一次性确认;仅在 down、停止并排空全部 web/worker/scheduler/在途请求后临时改为 true,迁移完成立即恢复 false。
GEOFLOW_SECURITY_UPGRADE_DRAIN_CONFIRMED=false
# 完成 managed image hash readiness 并确认全部进程均为新版本前保持默认 false。
GEOFLOW_MANAGED_IMAGE_DELETION_ENABLED=false
# 安全审计判定 deleting 操作中断的短阈值,以及 present 无引用成为长期 orphan 的独立阈值。
GEOFLOW_SECURITY_AUDIT_DELETING_STALE_MINUTES=15
GEOFLOW_SECURITY_AUDIT_ORPHAN_AGE_HOURS=24
GEOFLOW_CACHE_ENABLED=true
GEOFLOW_CACHE_TTL=3600
GEOFLOW_MAX_LOGIN_ATTEMPTS=5
GEOFLOW_LOGIN_LOCKOUT_SECONDS=900
GEOFLOW_ADMIN_REMEMBER_MINUTES=43200
GEOFLOW_SESSION_TIMEOUT=2592000
GEOFLOW_API_LOGIN_RATE_LIMIT_ATTEMPTS=10
GEOFLOW_API_LOGIN_RATE_LIMIT_DECAY=60
GEOFLOW_API_TOKEN_DEFAULT_TTL_DAYS=30
# 首次空库安装写入的默认后台账号;重复执行安装命令不会覆盖已有账号。开发环境默认 password,生产环境见 .env.prod.example。
GEOFLOW_ADMIN_USERNAME=admin
GEOFLOW_ADMIN_EMAIL=admin@example.com
GEOFLOW_ADMIN_PASSWORD=password
# 兼容旧配置名;正式安装入口不会执行演示 Seeder,请保持 false。
GEOFLOW_SEED_FRONTEND_DEMO=false
# 仅供测试环境显式调用 FrontendDemoSeeder 时控制覆盖行为,正式环境请保持 false。
GEOFLOW_SEED_FRONTEND_DEMO_OVERWRITE=false
# 默认管理员尚未成功登录前,登录页会展示一次初始账号提示;生产对外部署如不希望页面提示,可设为 false。
GEOFLOW_INITIAL_ADMIN_HINT_ENABLED=true
GEOFLOW_KNOWLEDGE_EMBEDDING_JOB_SIZE=32
GEOFLOW_WORKER_STALE_SECONDS=120
# 变更后所有管理员会再次看到后台项目说明弹窗
GEOFLOW_WELCOME_INTRO_VERSION=3.0
# 匿名统计只发送随机实例 ID、管理员摘要、版本和后台活跃事件;留空监控地址时不会发出请求。
GEOFLOW_TELEMETRY_ENABLED=false
GEOFLOW_TELEMETRY_ENDPOINT=
GEOFLOW_TELEMETRY_INTERVAL_SECONDS=86400
# 后台右上角通知会每天最多拉取一次 GitHub version.json;如需关闭,设置为 false
GEOFLOW_UPDATE_CHECK_ENABLED=true
GEOFLOW_UPDATER_INSTANCE_ID=primary
GEOFLOW_UPDATER_READ_TIMEOUT_SECONDS=10
GEOFLOW_UPDATER_SOCKET=/run/geoflow-updater/geoflow-updater.sock
GEOFLOW_UPDATER_CONTROL_TOKEN_FILE=/run/secrets/geoflow-updater-control-token
GEOFLOW_UPDATER_HOST_ROOT=
GEOFLOW_UPDATE_METADATA_URL=https://raw.githubusercontent.com/yaojingang/GEOFlow/main/version.json
GEOFLOW_UPDATE_METADATA_CACHE_TTL=86400
GEOFLOW_UPDATE_CENTER_ENABLED=true
GEOFLOW_UPDATE_REQUIRE_ADMIN_PASSWORD=true
APP_LOCALE=zh_CN
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database
# PHP_CLI_SERVER_WORKERS=4
BCRYPT_ROUNDS=12
LOG_CHANNEL=daily
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
# Docker Compose 默认值;若改为宿主机直连数据库/Redis,再按实际环境修改。
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=geo_flow
DB_USERNAME=geo_user
DB_PASSWORD=geo_password
POSTGRES_DATA_DIR=./docker-data/dev/postgres
POSTGRES_CONTAINER_DATA_DIR=/var/lib/postgresql
SESSION_DRIVER=database
SESSION_LIFETIME=43200
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=geoflow-reverb-app
REVERB_APP_KEY=geoflow-reverb-key
REVERB_APP_SECRET=geoflow-reverb-secret
REVERB_HOST=localhost
REVERB_PORT=18080
REVERB_SCHEME=http
REVERB_BROADCAST_HOST=reverb
REVERB_BROADCAST_PORT=8080
REVERB_BROADCAST_SCHEME=http
REVERB_SERVER_HOST=0.0.0.0
REVERB_SERVER_PORT=8080
REVERB_SERVER_PATH=/reverb
REVERB_ALLOWED_ORIGINS=localhost
FILESYSTEM_DISK=local
# 生产与计划一致用 redis;本机未装 Redis 时可改为 sync 或 database
QUEUE_CONNECTION=redis
DB_QUEUE_RETRY_AFTER=960
CACHE_STORE=database
CACHE_LIMITER_STORE=database
# CACHE_PREFIX=
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
# 须大于应用内最长队列任务 timeout(系统更新任务为 900 秒)
REDIS_QUEUE_RETRY_AFTER=960
QUEUE_CONTAINER_MEMORY_LIMIT=384m
KNOWLEDGE_QUEUE_CONTAINER_MEMORY_LIMIT=256m
AI_QUALITY_QUEUE_CONTAINER_MEMORY_LIMIT=384m
AI_QUALITY_BACKFILL_QUEUE_CONTAINER_MEMORY_LIMIT=256m
HORIZON_MAX_PROCESSES=3
MAIL_MAILER=log
MAIL_SCHEME=null
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"
# --- Docker 入口 geoflow-entrypoint(docker-compose 启动 app/queue 等时)---
# 每次启动执行 composer install(拉代码后依赖变更;设为 false 可加快本地反复重启)
COMPOSER_ON_START=true
# Docker 构建和启动期 composer install 使用的 Packagist 镜像;留空可恢复官方源。
COMPOSER_PACKAGIST_MIRROR=
# Docker 基础镜像可按网络情况切换为镜像代理地址,例如 m.daocloud.io/docker.io/library/php:8.4-cli-bookworm。
GEOFLOW_APP_IMAGE=geoflow-app-prod:latest
GEOFLOW_WEB_IMAGE=geoflow-web-prod:latest
COMPOSER_IMAGE=composer:2
PHP_FPM_IMAGE=php:8.4-fpm-bookworm
NGINX_IMAGE=nginx:1.31.1-alpine
PGVECTOR_IMAGE=pgvector/pgvector:pg18
REDIS_IMAGE=redis:8-alpine
# 仅当上述镜像地址不含可识别主版本(例如使用纯 digest)时,为独立更新工具显式指定。
GEOFLOW_UPDATER_POSTGRES_MAJOR=
GEOFLOW_UPDATER_REDIS_MAJOR=
# 每次启动执行 php artisan migrate --force(数据库结构随仓库更新;设为 false 需自行迁移)
AUTO_MIGRATE=true
# compose 的 init 服务专用:先 migrate,再由 geoflow:install 判断空库后只执行一次安装填充
AUTO_INIT_ONCE=true
# 已迁移数据库上单独执行一次 geoflow:install;常驻服务默认不要开启
# AUTO_INSTALL_ONCE=false