Files
sms_forwarder/docs/deployment.md

4.3 KiB
Raw Blame History

部署指南

本指南介绍如何部署 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 配置

  1. 访问 Pushbullet
  2. 注册账号并在 Android 设备上安装应用
  3. 获取 Access Token
  4. 在配置文件中添加:
notifications:
  services:
    - name: "pushbullet"
      url: "pbul://your-access-token-here"
      enabled: true

FCM 配置

  1. 创建 Firebase 项目
  2. 获取服务器密钥和项目 ID
  3. 在 Android 应用中集成 FCM
  4. 获取设备 token
  5. 配置:
notifications:
  services:
    - name: "fcm"
      url: "fcm://project-id@server-key/device-token"
      enabled: true

Gotify 配置

  1. 部署 Gotify 服务器
  2. 创建应用并获取 token
  3. 配置:
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)

故障排除

常见问题

  1. 服务启动失败

    • 检查配置文件语法
    • 确认端口未被占用
    • 查看详细错误日志
  2. 通知发送失败

    • 验证推送服务配置
    • 检查网络连接
    • 确认 API 密钥有效
  3. 高内存使用

    • 检查日志文件大小
    • 考虑添加日志轮转
    • 监控请求频率

调试命令

# 检查端口占用
netstat -tlnp | grep 8000

# 检查进程状态
ps aux | grep sms-forwarder

# 测试配置文件
uv run python -c "from sms_forwarder.config import get_config; print(get_config())"