Files
sms_forwarder/docs/deployment.md

265 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署指南
本指南介绍如何部署 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())"
```