265 lines
4.3 KiB
Markdown
265 lines
4.3 KiB
Markdown
# 部署指南
|
||
|
||
本指南介绍如何部署 SMS Forwarder 服务器。
|
||
|
||
## 部署方式
|
||
|
||
### 1. 本地部署
|
||
|
||
#### 环境要求
|
||
- Python 3.10+
|
||
- uv 包管理器
|
||
|
||
#### 安装步骤
|
||
|
||
```bash
|
||
# 1. 克隆项目
|
||
git clone <repository-url>
|
||
cd notification
|
||
|
||
# 2. 安装依赖
|
||
uv sync
|
||
|
||
# 3. 复制配置文件
|
||
cp config.example.yaml config.yaml
|
||
|
||
# 4. 编辑配置文件
|
||
nano config.yaml
|
||
|
||
# 5. 运行服务器
|
||
uv run sms-forwarder
|
||
```
|
||
|
||
### 2. Docker 部署
|
||
|
||
#### 创建 Dockerfile
|
||
|
||
```dockerfile
|
||
FROM python:3.10-slim
|
||
|
||
WORKDIR /app
|
||
|
||
# 安装 uv
|
||
RUN pip install uv
|
||
|
||
# 复制项目文件
|
||
COPY . .
|
||
|
||
# 安装依赖
|
||
RUN uv sync
|
||
|
||
# 创建日志目录
|
||
RUN mkdir -p logs
|
||
|
||
# 暴露端口
|
||
EXPOSE 8000
|
||
|
||
# 启动命令
|
||
CMD ["uv", "run", "sms-forwarder"]
|
||
```
|
||
|
||
#### 构建和运行
|
||
|
||
```bash
|
||
# 构建镜像
|
||
docker build -t sms-forwarder .
|
||
|
||
# 运行容器
|
||
docker run -d \
|
||
--name sms-forwarder \
|
||
-p 8000:8000 \
|
||
-v $(pwd)/config.yaml:/app/config.yaml \
|
||
-v $(pwd)/logs:/app/logs \
|
||
sms-forwarder
|
||
```
|
||
|
||
### 3. systemd 服务部署
|
||
|
||
#### 创建服务文件
|
||
|
||
```bash
|
||
sudo nano /etc/systemd/system/sms-forwarder.service
|
||
```
|
||
|
||
```ini
|
||
[Unit]
|
||
Description=SMS Forwarder Service
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=your-user
|
||
WorkingDirectory=/path/to/sms-forwarder
|
||
Environment=PATH=/path/to/sms-forwarder/.venv/bin
|
||
ExecStart=/path/to/sms-forwarder/.venv/bin/python -m sms_forwarder.main
|
||
Restart=always
|
||
RestartSec=10
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
#### 启用服务
|
||
|
||
```bash
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable sms-forwarder
|
||
sudo systemctl start sms-forwarder
|
||
sudo systemctl status sms-forwarder
|
||
```
|
||
|
||
## 配置推送服务
|
||
|
||
### Pushbullet 配置
|
||
|
||
1. 访问 [Pushbullet](https://www.pushbullet.com/)
|
||
2. 注册账号并在 Android 设备上安装应用
|
||
3. 获取 Access Token:
|
||
- 访问 https://www.pushbullet.com/#settings/account
|
||
- 创建 Access Token
|
||
4. 在配置文件中添加:
|
||
|
||
```yaml
|
||
notifications:
|
||
services:
|
||
- name: "pushbullet"
|
||
url: "pbul://your-access-token-here"
|
||
enabled: true
|
||
```
|
||
|
||
### FCM 配置
|
||
|
||
1. 创建 Firebase 项目
|
||
2. 获取服务器密钥和项目 ID
|
||
3. 在 Android 应用中集成 FCM
|
||
4. 获取设备 token
|
||
5. 配置:
|
||
|
||
```yaml
|
||
notifications:
|
||
services:
|
||
- name: "fcm"
|
||
url: "fcm://project-id@server-key/device-token"
|
||
enabled: true
|
||
```
|
||
|
||
### Gotify 配置
|
||
|
||
1. 部署 Gotify 服务器
|
||
2. 创建应用并获取 token
|
||
3. 配置:
|
||
|
||
```yaml
|
||
notifications:
|
||
services:
|
||
- name: "gotify"
|
||
url: "gotify://your-server.com/app-token"
|
||
enabled: true
|
||
```
|
||
|
||
## 安全配置
|
||
|
||
### 1. 生成强 API 密钥
|
||
|
||
```bash
|
||
# 使用 Python 生成随机密钥
|
||
python -c "import secrets; print(secrets.token_urlsafe(32))"
|
||
```
|
||
|
||
### 2. 配置防火墙
|
||
|
||
```bash
|
||
# 只允许特定 IP 访问
|
||
sudo ufw allow from YOUR_IPHONE_IP to any port 8000
|
||
```
|
||
|
||
### 3. 使用 HTTPS
|
||
|
||
#### 使用 nginx 反向代理
|
||
|
||
```nginx
|
||
server {
|
||
listen 443 ssl;
|
||
server_name your-domain.com;
|
||
|
||
ssl_certificate /path/to/cert.pem;
|
||
ssl_certificate_key /path/to/key.pem;
|
||
|
||
location / {
|
||
proxy_pass http://127.0.0.1:8000;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
}
|
||
}
|
||
```
|
||
|
||
## 监控和维护
|
||
|
||
### 1. 日志监控
|
||
|
||
```bash
|
||
# 查看实时日志
|
||
tail -f logs/sms_forwarder.log
|
||
|
||
# 查看错误日志
|
||
grep ERROR logs/sms_forwarder.log
|
||
```
|
||
|
||
### 2. 健康检查
|
||
|
||
```bash
|
||
# 检查服务状态
|
||
curl http://localhost:8000/health
|
||
|
||
# 检查系统状态
|
||
curl http://localhost:8000/status
|
||
```
|
||
|
||
### 3. 性能监控
|
||
|
||
可以使用以下工具监控服务器性能:
|
||
- Prometheus + Grafana
|
||
- htop / top
|
||
- systemd journal
|
||
|
||
### 4. 备份配置
|
||
|
||
```bash
|
||
# 定期备份配置文件
|
||
cp config.yaml config.yaml.backup.$(date +%Y%m%d)
|
||
```
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **服务启动失败**
|
||
- 检查配置文件语法
|
||
- 确认端口未被占用
|
||
- 查看详细错误日志
|
||
|
||
2. **通知发送失败**
|
||
- 验证推送服务配置
|
||
- 检查网络连接
|
||
- 确认 API 密钥有效
|
||
|
||
3. **高内存使用**
|
||
- 检查日志文件大小
|
||
- 考虑添加日志轮转
|
||
- 监控请求频率
|
||
|
||
### 调试命令
|
||
|
||
```bash
|
||
# 检查端口占用
|
||
netstat -tlnp | grep 8000
|
||
|
||
# 检查进程状态
|
||
ps aux | grep sms-forwarder
|
||
|
||
# 测试配置文件
|
||
uv run python -c "from sms_forwarder.config import get_config; print(get_config())"
|
||
```
|