fix(start_core): export AUTH_HUB_* env + fix .env path; docs: cutover to smart-camera.zichuan.xyz

This commit is contained in:
ericwyuan
2026-09-01 12:14:51 +08:00
parent 9c4db682d5
commit db4f46140b
2 changed files with 27 additions and 4 deletions

View File

@@ -506,3 +506,19 @@ AI 分析瓶颈: 帧5耗时 229s (疑似 ARM CPU 热降频), 其余帧 50-65s
- 修复:导航改为页面顶部 `st.segmented_control` 横向分段控制器,任何屏宽直接可见;侧边栏保留品牌标题和任务队列状态。 - 修复:导航改为页面顶部 `st.segmented_control` 横向分段控制器,任何屏宽直接可见;侧边栏保留品牌标题和任务队列状态。
浏览器验证:顶部分段导航 5 页可达、成员命名页显示 张三/汤圆/爸、AI 对话页表单正常、无报错。 浏览器验证:顶部分段导航 5 页可达、成员命名页显示 张三/汤圆/爸、AI 对话页表单正常、无报错。
## 摄像头对外入口收口为单一域名 smart-camera.zichuan.xyz (2026-09-01)
**决策**摄像头系统fam-ui 前端 + NAS fam-core :8000 后端)对外只暴露一个域名 `smart-camera.zichuan.xyz`(前端 `/` + 后端 `/api`),下线独立的 `api.zichuan.xyz`,并从 `oracle.zichuan.xyz` 移除摄像头相关路由(其 `/ai``/fam``/wordpress` 仍保留给其它服务)。
**改动(基础设施,不在本仓库)**
- Oracle Caddy`/etc/caddy/Caddyfile`):新增 `smart-camera.zichuan.xyz` 块(`/` 静态 fam-ui + `/api``/login` 反代 `127.0.0.1:8000`,经 frp 隧道回源 NAS删除 `api.zichuan.xyz` 块;`oracle.zichuan.xyz``:80` 兜底块移除摄像头 root + `/api` 路由(改 404
- DNS新增 `smart-camera.zichuan.xyz → 129.146.26.249`RecordId 2387553886
- NAS `/volume1/web/sentinel-home-ai/.env``AUTH_HUB_ISSUER` 改为 `https://auth.zichuan.xyz``AUTH_HUB_REDIRECT_URI` 改为 `https://smart-camera.zichuan.xyz/api/auth/callback`,且 `AUTH_HUB_*` 四行补全 `export` 前缀(见下)。
- auth-hub FAM-Core 客户端 `a2PJTZuKQYxt1oGh` 回调改为 `https://smart-camera.zichuan.xyz/api/auth/callback`(保留旧 IP 作兜底)。
**顺带修复两个生产 Bug**(见 `scripts/start_core.sh`
1. 脚本先 `cd "$APP_DIR"` 再算相对 `SCRIPT_DIR`,导致 `source .env` 路径错位、`set -e` 下直接退出gunicorn 起不来。
2. `.env``AUTH_HUB_*` 是裸赋值(无 `export``source` 后不进环境gunicorn 子进程读不到 → 登录一直 503 fail-closed与之前“生产未部署”一致。脚本加 `set -a` 包裹 source 修复。
**验证**`smart-camera.zichuan.xyz/` 200、`/login` 302→auth.zichuan.xyzredirect_uri=smart-camera`/api/*` 401`oracle.zichuan.xyz/` 404、`/fam` 200`api.zichuan.xyz` 已不通。fam-core 经修复脚本重启后 health ok。

View File

@@ -3,6 +3,7 @@
# 用法: ./scripts/start_core.sh # 用法: ./scripts/start_core.sh
set -e set -e
# APP_DIR = <repo>/fam-core
APP_DIR="$(cd "$(dirname "$0")/.." && pwd)/fam-core" APP_DIR="$(cd "$(dirname "$0")/.." && pwd)/fam-core"
CONFIG_FILE="$APP_DIR/config/config.yaml" CONFIG_FILE="$APP_DIR/config/config.yaml"
@@ -14,10 +15,16 @@ fi
cd "$APP_DIR" cd "$APP_DIR"
# 加载项目级环境变量ORACLE_SYNC_TOKEN 等,与甲骨文端保持一致) # 加载项目级环境变量ORACLE_SYNC_TOKEN / AUTH_HUB_* 等,与甲骨文端保持一致)
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # 注意:.env 里 AUTH_HUB_* 是“裸赋值”(无 export 前缀),必须用 set -a 包裹 source
if [ -f "$SCRIPT_DIR/../.env" ]; then # 否则这些变量只存在于 shell 内、不会 export 给 gunicorn 子进程,导致 fam-core
source "$SCRIPT_DIR/../.env" # 启动后读不到 AUTH_HUB_ISSUER 等、登录被 fail-closed 拒绝(见 auth.py
# 另外 .env 路径基于 $APP_DIR 推导,避免“先 cd 再算 SCRIPT_DIR”的相对路径错位。
ENV_FILE="$APP_DIR/../.env"
if [ -f "$ENV_FILE" ]; then
set -a
source "$ENV_FILE"
set +a
fi fi
# 检查虚拟环境 # 检查虚拟环境