# we-mp-rss 从零部署

## 环境

- OS: Ubuntu 22.04+
- Python: 3.11+
- 上游仓库: `https://github.com/rachelos/we-mp-rss`

## 步骤

### 1. 获取源码

```bash
# 方式A：从另一台服务器通过 HTTP + Tunnel 拉取
# 源端：cd ~/project && python3 -m http.server 9999 &
# 目标端：wget -q -r -np -nH --cut-dirs=0 \
#   -X ".arts,.github,.vscode,docs,compose,Dockerfiles,public,qtserver" \
#   https://temp.gdcjgk.net/

# 方式B：GitHub clone
git clone https://github.com/rachelos/we-mp-rss.git ~/project/we-mp-rss-main
```

### 2. 安装依赖

```bash
cd ~/project/we-mp-rss-main
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
playwright install chromium
```

### 3. 创建目录结构

```bash
mkdir -p ~/project/we-mp-rss-data ~/project/state ~/project/config ~/project/scripts
```

### 4. 配置

```bash
cp config.example.yaml config.yaml
```

创建 `~/project/.env`：
```
DB=sqlite:////home/ubuntu/project/we-mp-rss-data/db.db
PORT=8001
ENABLE_JOB=True
BROWSER_TYPE=chromium
WE_MP_RSS_AK=admin
WE_MP_RSS_SK=admin888
```

### 5. 修复 message_task.py（空文件）

如果 `apis/message_task.py` 为 0 bytes，启动报 `ImportError: cannot import name 'router'`：

```python
# apis/message_task.py — 最小 stub
from fastapi import APIRouter
router = APIRouter(prefix="/wx/message_tasks", tags=["消息任务"])
```

实际消息任务路由在 `apis/cascade.py`，此文件仅需提供 router 供 `web.py` 注册。

### 6. systemd 服务

```ini
# /etc/systemd/system/we-mp-rss.service
[Unit]
Description=We-MP-RSS
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/project/we-mp-rss-main
Environment=DB=sqlite:////home/ubuntu/project/we-mp-rss-data/db.db
Environment=PORT=8001
Environment=ENABLE_JOB=True
Environment=BROWSER_TYPE=chromium
Environment=WE_MP_RSS_AK=admin
Environment=WE_MP_RSS_SK=admin888
ExecStart=/home/ubuntu/project/we-mp-rss-main/venv/bin/python /home/ubuntu/project/we-mp-rss-main/main.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
```

```bash
sudo cp /tmp/we-mp-rss.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now we-mp-rss
```

### 7. 验证

```bash
# 本地
curl -sI http://localhost:8001/  # 405 Method Not Allowed = OK

# 外网（需 Tunnel 已路由 rss.gdcjgk.net → :8001）
curl -sI https://rss.gdcjgk.net/  # 同上
```

### 8. 初始化

访问 `https://rss.gdcjgk.net`，添加订阅公众号（广东中职菌 MP_WXS_3886864470, 中职生 MP_WXS_3596295911），扫码登录授权。

## 跨服务器文件传输（Lighthouse 双机）

**场景**：两台 Lighthouse 实例，都在 Cloudflare tunnel 后，需要传输文件。

**方法**：
1. 源服务器启动 HTTP：`cd ~/project && python3 -m http.server 9999 &`
2. 源服务器 Tunnel 加临时路由：`temp.gdcjgk.net → localhost:9999`
3. Cloudflare Dashboard 加 Public Hostname（**关键**，否则 `server: cloudflare`）
4. 目标服务器 `wget` 拉取
5. 关闭源 HTTP + 删 tunnel 路由 + 删 Dashboard hostname

**注意**：TAT API、SSH 均不可用时，此方法为最后手段。
