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

# 开发 Docker 入口（docker/entrypoint.sh）：迁移完成后是否执行 php artisan optimize（默认 false；生产见 .env.prod.example / entrypoint.prod.sh）
AUTO_OPTIMIZE=false
# Docker 入口启动时自动修正 storage/bootstrap/cache 权限，适配宿主机 bind mount。
AUTO_FIX_STORAGE_PERMISSIONS=true
GEOFLOW_ITEMS_PER_PAGE=12
GEOFLOW_ADMIN_ITEMS_PER_PAGE=20
# 标题库 AI 生成时从关键词库随机抽取条数上限（1–100）
GEOFLOW_TITLE_AI_KEYWORD_SAMPLE_LIMIT=10
# true 时记录知识库检索「查询向量」是否由 embedding 接口生成（验证用，默认 false）
GEOFLOW_DEBUG_KNOWLEDGE_QUERY_EMBEDDING=false
# URL 智能采集 SSRF 防护默认严格；仅在明确受控的透明代理/Docker/VPN 混合 DNS 环境中开启。
URL_IMPORT_ALLOW_MIXED_DNS=false
# 后端 AI/Gemini 等出站 HTTP 代理；Docker 中访问宿主机代理请使用 host.docker.internal，而不是 127.0.0.1。
# 默认只有 AI/Embedding 供应商域名走代理，避免 WordPress REST 和目标站 Agent 通信被代理截获；需要全局代理时设为 *。
# GEOFLOW_HTTP_PROXY=http://host.docker.internal:9999
# GEOFLOW_HTTPS_PROXY=http://host.docker.internal:9999
# GEOFLOW_PROXY_HOSTS=generativelanguage.googleapis.com,api.openai.com,api.deepseek.com
GEOFLOW_NO_PROXY=localhost,127.0.0.1,::1,postgres,redis,host.docker.internal
GEOFLOW_UPLOAD_URL=/assets/images/
GEOFLOW_MAX_UPLOAD_BYTES=2097152
GEOFLOW_CACHE_ENABLED=true
GEOFLOW_CACHE_TTL=3600
GEOFLOW_MAX_LOGIN_ATTEMPTS=5
GEOFLOW_LOGIN_LOCKOUT_SECONDS=900
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
# 如需首次空库安装时写入前台模板演示分类和文章，再显式开启。
GEOFLOW_SEED_FRONTEND_DEMO=false
# 演示数据默认只补缺，不覆盖你已修改的网站设置、广告、分类和文章；仅调试演示库时开启。
GEOFLOW_SEED_FRONTEND_DEMO_OVERWRITE=false
# 默认管理员尚未成功登录前，登录页会展示一次初始账号提示；生产对外部署如不希望页面提示，可设为 false。
GEOFLOW_INITIAL_ADMIN_HINT_ENABLED=true
# 变更后所有管理员会再次看到后台项目说明弹窗
GEOFLOW_WELCOME_INTRO_VERSION=2.1
# 后台右上角通知会每天最多拉取一次 GitHub version.json；如需关闭，设置为 false
GEOFLOW_UPDATE_CHECK_ENABLED=true
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_EXECUTION_ENABLED=false
GEOFLOW_UPDATE_ROLLBACK_ENABLED=false
GEOFLOW_UPDATE_BACKUP_KEEP=10
GEOFLOW_UPDATE_BACKUP_PATH=geoflow-updates
GEOFLOW_UPDATE_ALLOWED_REPOSITORY=https://github.com/yaojingang/GEOFlow
GEOFLOW_UPDATE_ARCHIVE_MAX_BYTES=52428800
GEOFLOW_UPDATE_ARCHIVE_MAX_FILES=2000
GEOFLOW_UPDATE_ARCHIVE_MAX_FILE_BYTES=52428800
GEOFLOW_UPDATE_ARCHIVE_MAX_UNCOMPRESSED_BYTES=157286400
GEOFLOW_UPDATE_MIN_FREE_DISK_BYTES=209715200
GEOFLOW_UPDATE_PREFLIGHT_CHECK_GIT_DIRTY=true
GEOFLOW_UPDATE_REQUIRE_ADMIN_PASSWORD=true
GEOFLOW_UPDATE_ALLOW_ARCHIVE_APPLY=false
GEOFLOW_UPDATE_DATABASE_BACKUP_ENABLED=true
GEOFLOW_UPDATE_LOCK_TTL=900

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=18081
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
FILESYSTEM_DISK=local
# 生产与计划一致用 redis；本机未装 Redis 时可改为 sync 或 database
QUEUE_CONNECTION=redis

CACHE_STORE=database
# CACHE_PREFIX=

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
# 须大于应用内最长队列任务 timeout（如 ProcessGeoFlowTaskJob 为 300 秒）
REDIS_QUEUE_RETRY_AFTER=360

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
# 每次启动执行 php artisan migrate --force（数据库结构随仓库更新；设为 false 需自行迁移）
AUTO_MIGRATE=true
# compose 的 init 服务专用：先 migrate，再由 geoflow:install 判断空库后只执行一次安装填充
AUTO_INIT_ONCE=true
# 已迁移数据库上单独执行一次 geoflow:install；常驻服务默认不要开启
# AUTO_INSTALL_ONCE=false
