123 lines
4.2 KiB
Markdown
123 lines
4.2 KiB
Markdown
---
|
||
|
||
## 🔧 隧道访问与视频播放修复 (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` 中的白名单缺少 `weixin` 和 `kuaishou`。
|
||
- **现象**:当 `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 修改**:在首页和发布管理页面的顶部导航栏添加红色的“退出”按钮 (位于最右侧)。
|
||
- **逻辑实现**:
|
||
```javascript
|
||
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),防止未授权访问管理后台。
|
||
- **WebSocket**:Nginx 配置 `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 进行播放。
|