4.3 KiB
4.3 KiB
部署指南
本指南介绍如何部署 SMS Forwarder 服务器。
部署方式
1. 本地部署
环境要求
- Python 3.10+
- uv 包管理器
安装步骤
# 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
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"]
构建和运行
# 构建镜像
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 服务部署
创建服务文件
sudo nano /etc/systemd/system/sms-forwarder.service
[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
启用服务
sudo systemctl daemon-reload
sudo systemctl enable sms-forwarder
sudo systemctl start sms-forwarder
sudo systemctl status sms-forwarder
配置推送服务
Pushbullet 配置
- 访问 Pushbullet
- 注册账号并在 Android 设备上安装应用
- 获取 Access Token:
- 访问 https://www.pushbullet.com/#settings/account
- 创建 Access Token
- 在配置文件中添加:
notifications:
services:
- name: "pushbullet"
url: "pbul://your-access-token-here"
enabled: true
FCM 配置
- 创建 Firebase 项目
- 获取服务器密钥和项目 ID
- 在 Android 应用中集成 FCM
- 获取设备 token
- 配置:
notifications:
services:
- name: "fcm"
url: "fcm://project-id@server-key/device-token"
enabled: true
Gotify 配置
- 部署 Gotify 服务器
- 创建应用并获取 token
- 配置:
notifications:
services:
- name: "gotify"
url: "gotify://your-server.com/app-token"
enabled: true
安全配置
1. 生成强 API 密钥
# 使用 Python 生成随机密钥
python -c "import secrets; print(secrets.token_urlsafe(32))"
2. 配置防火墙
# 只允许特定 IP 访问
sudo ufw allow from YOUR_IPHONE_IP to any port 8000
3. 使用 HTTPS
使用 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. 日志监控
# 查看实时日志
tail -f logs/sms_forwarder.log
# 查看错误日志
grep ERROR logs/sms_forwarder.log
2. 健康检查
# 检查服务状态
curl http://localhost:8000/health
# 检查系统状态
curl http://localhost:8000/status
3. 性能监控
可以使用以下工具监控服务器性能:
- Prometheus + Grafana
- htop / top
- systemd journal
4. 备份配置
# 定期备份配置文件
cp config.yaml config.yaml.backup.$(date +%Y%m%d)
故障排除
常见问题
-
服务启动失败
- 检查配置文件语法
- 确认端口未被占用
- 查看详细错误日志
-
通知发送失败
- 验证推送服务配置
- 检查网络连接
- 确认 API 密钥有效
-
高内存使用
- 检查日志文件大小
- 考虑添加日志轮转
- 监控请求频率
调试命令
# 检查端口占用
netstat -tlnp | grep 8000
# 检查进程状态
ps aux | grep sms-forwarder
# 测试配置文件
uv run python -c "from sms_forwarder.config import get_config; print(get_config())"