Files
ViGent2/Docs/DevLogs/Day10.md
Kevin Wong c6c4b2313f 更新
2026-01-26 16:38:30 +08:00

4.2 KiB
Raw Blame History

## 🔧 隧道访问与视频播放修复 (11:00) ### 问题描述 在通过 FRP 隧道 (如 http://8.148.x.x:3002) 访问时发现: 1. 视频无法播放:后端返回 404 (Not Found)。 2. 发布页账号列表为空:后端返回 500 (Internal Server Error)。 ### 解决方案 #### 1. 视频播放修复 - 后端 (main.py):这是根源问题。后端缺少 uploads 目录的挂载,导致静态资源无法访问。 python app.mount("/uploads", StaticFiles(directory=str(settings.UPLOAD_DIR)), name="uploads") - 前端 (next.config.ts):添加反向代理规则,将 /outputs/uploads 转发到后端端口 8006。 typescript { source: '/uploads/:path*', destination: 'http://localhost:8006/uploads/:path*', }, { source: '/outputs/:path*', destination: 'http://localhost:8006/outputs/:path*', } #### 2. 账号列表 500 错误修复 - 根源backend/app/core/paths.py 中的白名单缺少 weixinkuaishou。 - 现象:当 PublishService 遍历所有平台时,遇到未在白名单的平台直接抛出 ValueError,导致整个接口崩溃。 - 修复:更新白名单。 python VALID_PLATFORMS: Set[str] = {"bilibili", "douyin", "xiaohongshu", "weixin", "kuaishou"} ### 结果 - 视频预览和历史视频均可正常播放。 - 发布页账号列表恢复显示。

🚀 Nginx HTTPS 部署 (11:30)

需求

用户在阿里云服务器上配置了 SSL 证书,需要通过 HTTPS 访问应用。

解决方案

提供了 Nginx 配置文件 nginx_vigent.conf,配置了:

  1. HTTP -> HTTPS 重定向
  2. SSL 证书路径 (/etc/letsencrypt/live/vigent.hbyrkj.top/...)。
  3. 反向代理 到本地 FRP 端口 (3002)。
  4. WebSocket 支持 (用于 Next.js 热更和通信)。

结果

  • 用户可通过 https://vigent.hbyrkj.top 安全访问。
  • 代码自适应:前端 API_BASE 为空字符串,自动适配 HTTPS 协议,无需修改代码。

🎨 UI 细节优化 (11:45)

修改

  • 修改 frontend/src/app/layout.tsx 中的 Metadata。
  • 标题从 Create Next App 改为 ViGent

结果

  • 浏览器标签页名称已更新。

🚪 用户登录退出功能 (12:00)

需求

用户反馈没有退出的入口。

解决方案

  • UI 修改:在首页和发布管理页面的顶部导航栏添加红色的“退出”按钮 (位于最右侧)。
  • 逻辑实现
    onClick={async () => {
      if (confirm('确定要退出登录吗?')) {
        await fetch(`${API_BASE}/api/auth/logout`, { method: 'POST' });
        window.location.href = '/login';
      }
    }}
    
  • 部署:已同步代码并重建前端。

🚢 Supabase 服务部署 (16:10)

需求

由于需要多用户隔离和更完善的权限管理,决定从纯本地文件存储迁移到 Supabase BaaS 架构。

实施步骤

  1. Docker 部署 (Ubuntu)

    • 使用官方 docker-compose.yml
    • 端口冲突解决
      • Moodist 占用 4000 -> 迁移 Analytics 到 4004
      • code-server 占用 8443 -> 迁移 Kong HTTPS 到 8444
      • 自定义端口Studio (3003), API (8008)。
  2. 安全加固 (Aliyun Nginx)

    • 双域名策略
      • supabase.hbyrkj.top -> Studio (3003)
      • api.hbyrkj.top -> API (8008)
    • SSL:配置 Let's Encrypt 证书。
    • 访问控制:为 Studio 域名添加 auth_basic (htpasswd),防止未授权访问管理后台。
    • WebSocketNginx 配置 Upgrade 头支持 Realtime 功能。
  3. 数据库初始化

    • 使用 backend/database/schema.sql 初始化了 users, social_accounts 等表结构。

下一步计划 (Storage Migration)

目前文件仍存储在本地磁盘,无法通过 RLS 进行隔离。 计划改造 LatentSync 流程

  1. 后端集成 Supabase Storage SDK。
  2. 实现 Download (Storage) -> Local Process (LatentSync) -> Upload (Storage) 闭环。
  3. 前端改为请求 Signed URL 进行播放。