Files
sms_forwarder/docs/deployment.md
root c2fb0c440f 修复Docker构建问题和优化配置
- 修复Dockerfile缺少uv.lock和README.md文件的问题
- 更新.dockerignore以正确包含README.md文件
- 优化docker-compose.yml配置
- 更新部署文档
- 添加Docker快速启动指南
2025-07-17 20:06:48 +08:00

6.1 KiB
Raw Blame History

SMS Forwarder 部署指南

本指南介绍如何使用 Docker 部署 SMS Forwarder 服务器。

推荐部署方式Docker

Docker 部署具有以下优势:

  • 环境一致性,无依赖问题
  • 一键部署,简单快速
  • 自动重启和健康检查
  • 资源隔离和限制
  • 易于备份和迁移

快速开始

1. 环境要求

  • Docker 20.10+
  • Docker Compose 2.0+
  • 2GB+ 可用内存
  • 开放端口 12152

2. 克隆项目

git clone https://gitea.nosuchip.de/zack/sms_forwarder.git
cd sms_forwarder

3. 配置服务

# 复制配置文件模板
cp config.example.yaml config.yaml

# 编辑配置文件
nano config.yaml

4. 一键部署

# 执行自动部署脚本
./scripts/deploy.sh

部署脚本会自动:

  • 检查 Docker 环境
  • 构建应用镜像
  • 启动服务容器
  • 运行健康检查
  • 显示服务信息

手动部署步骤

如果你不想使用自动部署脚本,可以手动执行以下步骤:

1. 构建镜像

docker build -t sms-forwarder:latest .

2. 启动服务

只启动 SMS Forwarder

docker-compose up -d

同时启动 SMS Forwarder 和 Gotify

docker-compose --profile gotify up -d

3. 验证部署

# 检查容器状态
docker-compose ps

# 查看日志
docker-compose logs -f sms-forwarder

# 测试健康检查
curl http://localhost:12152/health

配置说明

核心配置项

编辑 config.yaml 文件,配置以下关键项:

# 服务器配置
server:
  host: "0.0.0.0"
  port: 12152
  api_key: "your-secret-api-key"  # 必须修改

# 通知服务配置
notifications:
  services:
    # Gotify推荐低延迟
    - name: "gotify"
      url: "gotifys://your-domain.com/YOUR_APP_TOKEN"
      enabled: true

    # ntfy备用
    - name: "ntfy"
      url: "ntfy://your-unique-topic/"
      enabled: true

推送服务选择

  1. 自建 Gotify(最推荐)

    • 延迟1-3 秒
    • 完全自主控制
    • 启动方式:docker-compose --profile gotify up -d
  2. ntfy(简单易用)

    • 延迟5-15 秒
    • 无需自建服务器
    • 在 Android 上安装 ntfy 应用并订阅主题

服务管理

使用管理脚本

项目提供了便捷的管理脚本:

# 查看所有可用命令
./scripts/docker-manage.sh help

# 常用命令
./scripts/docker-manage.sh status    # 查看服务状态
./scripts/docker-manage.sh logs      # 查看实时日志
./scripts/docker-manage.sh test      # 发送测试通知
./scripts/docker-manage.sh restart   # 重启服务
./scripts/docker-manage.sh stop      # 停止服务

手动管理命令

# 查看容器状态
docker-compose ps

# 查看日志
docker-compose logs -f sms-forwarder

# 重启服务
docker-compose restart sms-forwarder

# 停止所有服务
docker-compose down

# 重新构建镜像
docker-compose build --no-cache

测试部署

自动测试

# 使用测试脚本
./scripts/test-docker.sh

手动测试

# 1. 健康检查
curl http://localhost:12152/health

# 2. 查看服务状态
curl http://localhost:12152/status

# 3. 发送测试通知
curl -X POST "http://localhost:12152/notify/simple" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "your-api-key",
    "content": "测试通知",
    "sender": "测试"
  }'

生产环境配置

1. 安全设置

# config.yaml
security:
  # 限制访问 IP可选
  allowed_ips: ["192.168.1.100"]  # 你的 iPhone IP
  # 请求频率限制
  rate_limit: 60

2. 使用强 API 密钥

# 生成强密钥
python3 -c "import secrets; print(secrets.token_urlsafe(32))"

3. 反向代理(可选)

如果需要 HTTPS 或域名访问,可以使用 nginx

# 启动带 nginx 的配置
docker-compose -f docker-compose.prod.yml --profile nginx up -d

监控和维护

1. 日志管理

# 查看实时日志
docker-compose logs -f sms-forwarder

# 查看最近 100 行日志
docker-compose logs --tail=100 sms-forwarder

# 查看错误日志
docker-compose logs sms-forwarder | grep ERROR

2. 资源监控

# 查看容器资源使用
docker stats sms-forwarder --no-stream

# 查看详细信息
./scripts/docker-manage.sh stats

3. 数据备份

# 备份配置和数据
tar -czf sms_forwarder_backup_$(date +%Y%m%d).tar.gz \
  config.yaml logs/ data/ gotify_data/

# 恢复备份
tar -xzf sms_forwarder_backup_20240117.tar.gz

故障排除

常见问题

  1. 容器启动失败

    # 查看详细错误信息
    docker-compose logs sms-forwarder
    
    # 检查配置文件
    docker-compose config
    
  2. 端口被占用

    # 检查端口占用
    netstat -tlnp | grep 12152
    
    # 修改端口(在 docker-compose.yml 中)
    ports:
      - "12153:12152"  # 使用不同的外部端口
    
  3. 通知发送失败

    # 检查服务状态
    curl http://localhost:12152/status
    
    # 查看详细日志
    docker-compose logs -f sms-forwarder
    
    # 测试网络连接
    docker-compose exec sms-forwarder curl -I https://ntfy.sh
    
  4. 配置文件问题

    # 验证 YAML 语法
    python3 -c "import yaml; yaml.safe_load(open('config.yaml'))"
    
    # 重新生成配置
    cp config.example.yaml config.yaml
    

性能优化

  1. 资源限制调整

    # docker-compose.yml
    deploy:
      resources:
        limits:
          memory: 512M  # 增加内存限制
          cpus: '1.0'   # 增加 CPU 限制
    
  2. 日志轮转

    # docker-compose.yml
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    

更新和维护

更新应用

# 1. 拉取最新代码
git pull

# 2. 重新构建和部署
./scripts/deploy.sh

# 或手动更新
docker-compose build --no-cache
docker-compose up -d

定期维护

# 清理未使用的 Docker 资源
docker system prune -f

# 查看磁盘使用
du -sh logs/ data/ gotify_data/

# 备份重要数据
./scripts/backup.sh  # 如果有备份脚本