📚 重写 Docker 部署文档和 README
- 重写 docs/deployment.md,专注于 Docker 部署 - 更新 README.md,添加功能特性和管理命令 - 新增 docs/docker-quickstart.md 快速开始指南 - 优化文档结构,提供更清晰的部署流程 - 添加故障排除和维护指南
This commit is contained in:
124
README.md
124
README.md
@ -1,71 +1,109 @@
|
||||
# SMS Forwarder
|
||||
|
||||
一个将 iOS 短信转发到 Android 设备的通知服务器。
|
||||
🚀 一个将 iOS 短信转发到 Android 设备的高性能通知服务器
|
||||
|
||||
## 功能特性
|
||||
[](https://www.docker.com/)
|
||||
[](https://www.python.org/)
|
||||
[](https://fastapi.tiangolo.com/)
|
||||
[](LICENSE)
|
||||
|
||||
- 接收来自 iPhone 快捷指令的短信内容
|
||||
- 支持多种推送方式(Pushbullet、FCM、Gotify、ntfy 等)
|
||||
- 基于 FastAPI 的高性能 HTTP 服务器
|
||||
- 使用 Apprise 库支持 80+ 种通知服务
|
||||
- YAML 配置文件,支持多推送目标
|
||||
- API 密钥认证,确保安全性
|
||||
- 完整的日志记录和错误处理
|
||||
## ✨ 功能特性
|
||||
|
||||
## 快速开始
|
||||
- 📱 **iPhone 集成**:通过快捷指令自动转发短信
|
||||
- 🔔 **多种推送**:支持 Gotify、ntfy、Pushbullet 等 80+ 种通知服务
|
||||
- ⚡ **低延迟**:Gotify 1-3秒,ntfy 5-15秒延迟
|
||||
- 🐳 **Docker 部署**:一键部署,环境隔离
|
||||
- 🔒 **安全认证**:API 密钥 + IP 白名单 + 速率限制
|
||||
- 📊 **监控完善**:健康检查、状态监控、详细日志
|
||||
- 🎯 **高性能**:基于 FastAPI,支持高并发
|
||||
- 🛠️ **易于管理**:提供完整的管理脚本
|
||||
|
||||
### 1. 环境要求
|
||||
## 🚀 快速开始(推荐 Docker)
|
||||
|
||||
- Python 3.10+
|
||||
- uv 包管理器
|
||||
|
||||
### 2. 安装
|
||||
### 1. 克隆项目
|
||||
|
||||
```bash
|
||||
# 克隆项目
|
||||
git clone <repository-url>
|
||||
cd notification
|
||||
|
||||
# 使用 uv 安装依赖
|
||||
uv sync
|
||||
git clone https://gitea.nosuchip.de/zack/sms_forwarder.git
|
||||
cd sms_forwarder
|
||||
```
|
||||
|
||||
### 3. 配置
|
||||
|
||||
复制配置文件模板并编辑:
|
||||
### 2. 配置服务
|
||||
|
||||
```bash
|
||||
# 复制配置文件
|
||||
cp config.example.yaml config.yaml
|
||||
|
||||
# 编辑配置(必须修改 API 密钥和推送服务)
|
||||
nano config.yaml
|
||||
```
|
||||
|
||||
编辑 `config.yaml` 文件,配置你的推送服务。
|
||||
|
||||
### 4. 运行
|
||||
### 3. 一键部署
|
||||
|
||||
```bash
|
||||
# 开发模式
|
||||
uv run uvicorn sms_forwarder.main:app --reload --host 0.0.0.0 --port 8000
|
||||
# 自动部署(推荐)
|
||||
./scripts/deploy.sh
|
||||
|
||||
# 生产模式
|
||||
uv run sms-forwarder
|
||||
# 或手动部署
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 支持的推送服务
|
||||
### 4. 验证部署
|
||||
|
||||
- **Pushbullet** - 推荐,设置简单
|
||||
- **FCM (Firebase Cloud Messaging)** - Google 官方推送
|
||||
- **Gotify** - 自托管推送服务
|
||||
- **ntfy** - 开源推送服务
|
||||
- **Discord、Telegram、Slack** 等 80+ 种服务
|
||||
```bash
|
||||
# 测试服务
|
||||
./scripts/test-docker.sh
|
||||
|
||||
## iPhone 快捷指令配置
|
||||
# 查看状态
|
||||
./scripts/docker-manage.sh status
|
||||
```
|
||||
|
||||
详见 [iPhone 配置指南](docs/iphone-setup.md)
|
||||
服务启动后访问:
|
||||
- 🌐 **API 文档**:http://localhost:12152/docs
|
||||
- 💚 **健康检查**:http://localhost:12152/health
|
||||
- 📊 **服务状态**:http://localhost:12152/status
|
||||
|
||||
## API 文档
|
||||
## 📋 支持的推送服务
|
||||
|
||||
服务器启动后访问 `http://localhost:8000/docs` 查看 API 文档。
|
||||
| 服务 | 延迟 | 特点 | 推荐度 |
|
||||
|------|------|------|--------|
|
||||
| **Gotify** | 1-3秒 | 自托管,完全控制 | ⭐⭐⭐⭐⭐ |
|
||||
| **ntfy** | 5-15秒 | 免费,无需注册 | ⭐⭐⭐⭐ |
|
||||
| **Pushbullet** | 30秒-2分钟 | 设置简单 | ⭐⭐⭐ |
|
||||
| **其他** | 变化 | Discord、Telegram、Slack 等 80+ 种 | ⭐⭐ |
|
||||
|
||||
## 许可证
|
||||
## 📱 客户端配置
|
||||
|
||||
MIT License
|
||||
### iPhone 快捷指令
|
||||
详见 [iPhone 配置指南](docs/simple-iphone-setup.md)
|
||||
|
||||
### Android 客户端
|
||||
- **Gotify**:[F-Droid](https://f-droid.org/packages/com.github.gotify/) | [GitHub](https://github.com/gotify/android)
|
||||
- **ntfy**:[Google Play](https://play.google.com/store/apps/details?id=io.heckel.ntfy) | [F-Droid](https://f-droid.org/packages/io.heckel.ntfy/)
|
||||
|
||||
## 🛠️ 管理命令
|
||||
|
||||
```bash
|
||||
# 服务管理
|
||||
./scripts/docker-manage.sh status # 查看状态
|
||||
./scripts/docker-manage.sh logs # 查看日志
|
||||
./scripts/docker-manage.sh restart # 重启服务
|
||||
./scripts/docker-manage.sh test # 测试通知
|
||||
|
||||
# 部署管理
|
||||
./scripts/deploy.sh # 重新部署
|
||||
./scripts/test-docker.sh # 完整测试
|
||||
```
|
||||
|
||||
## 📚 文档
|
||||
|
||||
- 📖 [部署指南](docs/deployment.md) - 详细的 Docker 部署说明
|
||||
- 📱 [iPhone 配置](docs/simple-iphone-setup.md) - 快捷指令设置
|
||||
- 🔧 [高级配置](docs/iphone-setup.md) - 完整配置选项
|
||||
|
||||
## 🤝 贡献
|
||||
|
||||
欢迎提交 Issue 和 Pull Request!
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
MIT License - 详见 [LICENSE](LICENSE) 文件
|
||||
|
@ -33,14 +33,11 @@ services:
|
||||
image: gotify/server
|
||||
container_name: gotify
|
||||
ports:
|
||||
- "8080:80"
|
||||
- "24545:80"
|
||||
volumes:
|
||||
- gotify_data:/app/data
|
||||
- ./gotify_data:/app/data
|
||||
environment:
|
||||
- GOTIFY_DEFAULTUSER_PASS=admin
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- gotify
|
||||
|
||||
volumes:
|
||||
gotify_data:
|
||||
|
@ -1,264 +1,351 @@
|
||||
# 部署指南
|
||||
# SMS Forwarder 部署指南
|
||||
|
||||
本指南介绍如何部署 SMS Forwarder 服务器。
|
||||
本指南介绍如何使用 Docker 部署 SMS Forwarder 服务器。
|
||||
|
||||
## 部署方式
|
||||
## 推荐部署方式:Docker
|
||||
|
||||
### 1. 本地部署
|
||||
Docker 部署具有以下优势:
|
||||
- ✅ 环境一致性,无依赖问题
|
||||
- ✅ 一键部署,简单快速
|
||||
- ✅ 自动重启和健康检查
|
||||
- ✅ 资源隔离和限制
|
||||
- ✅ 易于备份和迁移
|
||||
|
||||
#### 环境要求
|
||||
- Python 3.10+
|
||||
- uv 包管理器
|
||||
## 快速开始
|
||||
|
||||
#### 安装步骤
|
||||
### 1. 环境要求
|
||||
|
||||
- Docker 20.10+
|
||||
- Docker Compose 2.0+
|
||||
- 2GB+ 可用内存
|
||||
- 开放端口 12152
|
||||
|
||||
### 2. 克隆项目
|
||||
|
||||
```bash
|
||||
# 1. 克隆项目
|
||||
git clone <repository-url>
|
||||
cd notification
|
||||
git clone https://gitea.nosuchip.de/zack/sms_forwarder.git
|
||||
cd sms_forwarder
|
||||
```
|
||||
|
||||
# 2. 安装依赖
|
||||
uv sync
|
||||
### 3. 配置服务
|
||||
|
||||
# 3. 复制配置文件
|
||||
```bash
|
||||
# 复制配置文件模板
|
||||
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"]
|
||||
```
|
||||
|
||||
#### 构建和运行
|
||||
### 4. 一键部署
|
||||
|
||||
```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
|
||||
# 执行自动部署脚本
|
||||
./scripts/deploy.sh
|
||||
```
|
||||
|
||||
### 3. systemd 服务部署
|
||||
部署脚本会自动:
|
||||
- 检查 Docker 环境
|
||||
- 构建应用镜像
|
||||
- 启动服务容器
|
||||
- 运行健康检查
|
||||
- 显示服务信息
|
||||
|
||||
#### 创建服务文件
|
||||
## 手动部署步骤
|
||||
|
||||
如果你不想使用自动部署脚本,可以手动执行以下步骤:
|
||||
|
||||
### 1. 构建镜像
|
||||
|
||||
```bash
|
||||
sudo nano /etc/systemd/system/sms-forwarder.service
|
||||
docker build -t sms-forwarder:latest .
|
||||
```
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=SMS Forwarder Service
|
||||
After=network.target
|
||||
### 2. 启动服务
|
||||
|
||||
[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
|
||||
#### 只启动 SMS Forwarder
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
#### 启用服务
|
||||
#### 同时启动 SMS Forwarder 和 Gotify
|
||||
```bash
|
||||
docker-compose --profile gotify up -d
|
||||
```
|
||||
|
||||
### 3. 验证部署
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable sms-forwarder
|
||||
sudo systemctl start sms-forwarder
|
||||
sudo systemctl status sms-forwarder
|
||||
# 检查容器状态
|
||||
docker-compose ps
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f sms-forwarder
|
||||
|
||||
# 测试健康检查
|
||||
curl http://localhost:12152/health
|
||||
```
|
||||
|
||||
## 配置推送服务
|
||||
## 配置说明
|
||||
|
||||
### 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. 配置:
|
||||
编辑 `config.yaml` 文件,配置以下关键项:
|
||||
|
||||
```yaml
|
||||
# 服务器配置
|
||||
server:
|
||||
host: "0.0.0.0"
|
||||
port: 12152
|
||||
api_key: "your-secret-api-key" # 必须修改
|
||||
|
||||
# 通知服务配置
|
||||
notifications:
|
||||
services:
|
||||
# Gotify(推荐,低延迟)
|
||||
- name: "gotify"
|
||||
url: "gotify://your-server.com/app-token"
|
||||
url: "gotifys://your-domain.com/YOUR_APP_TOKEN"
|
||||
enabled: true
|
||||
|
||||
# ntfy(备用)
|
||||
- name: "ntfy"
|
||||
url: "ntfy://your-unique-topic/"
|
||||
enabled: true
|
||||
```
|
||||
|
||||
## 安全配置
|
||||
### 推送服务选择
|
||||
|
||||
### 1. 生成强 API 密钥
|
||||
1. **自建 Gotify**(最推荐)
|
||||
- 延迟:1-3 秒
|
||||
- 完全自主控制
|
||||
- 启动方式:`docker-compose --profile gotify up -d`
|
||||
|
||||
2. **ntfy**(简单易用)
|
||||
- 延迟:5-15 秒
|
||||
- 无需自建服务器
|
||||
- 在 Android 上安装 ntfy 应用并订阅主题
|
||||
|
||||
## 服务管理
|
||||
|
||||
### 使用管理脚本
|
||||
|
||||
项目提供了便捷的管理脚本:
|
||||
|
||||
```bash
|
||||
# 使用 Python 生成随机密钥
|
||||
python -c "import secrets; print(secrets.token_urlsafe(32))"
|
||||
# 查看所有可用命令
|
||||
./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 # 停止服务
|
||||
```
|
||||
|
||||
### 2. 配置防火墙
|
||||
### 手动管理命令
|
||||
|
||||
```bash
|
||||
# 只允许特定 IP 访问
|
||||
sudo ufw allow from YOUR_IPHONE_IP to any port 8000
|
||||
# 查看容器状态
|
||||
docker-compose ps
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f sms-forwarder
|
||||
|
||||
# 重启服务
|
||||
docker-compose restart sms-forwarder
|
||||
|
||||
# 停止所有服务
|
||||
docker-compose down
|
||||
|
||||
# 重新构建镜像
|
||||
docker-compose build --no-cache
|
||||
```
|
||||
|
||||
### 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;
|
||||
}
|
||||
}
|
||||
```bash
|
||||
# 使用测试脚本
|
||||
./scripts/test-docker.sh
|
||||
```
|
||||
|
||||
### 手动测试
|
||||
|
||||
```bash
|
||||
# 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. 安全设置
|
||||
|
||||
```yaml
|
||||
# config.yaml
|
||||
security:
|
||||
# 限制访问 IP(可选)
|
||||
allowed_ips: ["192.168.1.100"] # 你的 iPhone IP
|
||||
# 请求频率限制
|
||||
rate_limit: 60
|
||||
```
|
||||
|
||||
### 2. 使用强 API 密钥
|
||||
|
||||
```bash
|
||||
# 生成强密钥
|
||||
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
|
||||
```
|
||||
|
||||
### 3. 反向代理(可选)
|
||||
|
||||
如果需要 HTTPS 或域名访问,可以使用 nginx:
|
||||
|
||||
```bash
|
||||
# 启动带 nginx 的配置
|
||||
docker-compose -f docker-compose.prod.yml --profile nginx up -d
|
||||
```
|
||||
|
||||
## 监控和维护
|
||||
|
||||
### 1. 日志监控
|
||||
### 1. 日志管理
|
||||
|
||||
```bash
|
||||
# 查看实时日志
|
||||
tail -f logs/sms_forwarder.log
|
||||
docker-compose logs -f sms-forwarder
|
||||
|
||||
# 查看最近 100 行日志
|
||||
docker-compose logs --tail=100 sms-forwarder
|
||||
|
||||
# 查看错误日志
|
||||
grep ERROR logs/sms_forwarder.log
|
||||
docker-compose logs sms-forwarder | grep ERROR
|
||||
```
|
||||
|
||||
### 2. 健康检查
|
||||
### 2. 资源监控
|
||||
|
||||
```bash
|
||||
# 检查服务状态
|
||||
curl http://localhost:8000/health
|
||||
# 查看容器资源使用
|
||||
docker stats sms-forwarder --no-stream
|
||||
|
||||
# 检查系统状态
|
||||
curl http://localhost:8000/status
|
||||
# 查看详细信息
|
||||
./scripts/docker-manage.sh stats
|
||||
```
|
||||
|
||||
### 3. 性能监控
|
||||
|
||||
可以使用以下工具监控服务器性能:
|
||||
- Prometheus + Grafana
|
||||
- htop / top
|
||||
- systemd journal
|
||||
|
||||
### 4. 备份配置
|
||||
### 3. 数据备份
|
||||
|
||||
```bash
|
||||
# 定期备份配置文件
|
||||
cp config.yaml config.yaml.backup.$(date +%Y%m%d)
|
||||
# 备份配置和数据
|
||||
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. **服务启动失败**
|
||||
- 检查配置文件语法
|
||||
- 确认端口未被占用
|
||||
- 查看详细错误日志
|
||||
1. **容器启动失败**
|
||||
```bash
|
||||
# 查看详细错误信息
|
||||
docker-compose logs sms-forwarder
|
||||
|
||||
2. **通知发送失败**
|
||||
- 验证推送服务配置
|
||||
- 检查网络连接
|
||||
- 确认 API 密钥有效
|
||||
# 检查配置文件
|
||||
docker-compose config
|
||||
```
|
||||
|
||||
3. **高内存使用**
|
||||
- 检查日志文件大小
|
||||
- 考虑添加日志轮转
|
||||
- 监控请求频率
|
||||
2. **端口被占用**
|
||||
```bash
|
||||
# 检查端口占用
|
||||
netstat -tlnp | grep 12152
|
||||
|
||||
### 调试命令
|
||||
# 修改端口(在 docker-compose.yml 中)
|
||||
ports:
|
||||
- "12153:12152" # 使用不同的外部端口
|
||||
```
|
||||
|
||||
3. **通知发送失败**
|
||||
```bash
|
||||
# 检查服务状态
|
||||
curl http://localhost:12152/status
|
||||
|
||||
# 查看详细日志
|
||||
docker-compose logs -f sms-forwarder
|
||||
|
||||
# 测试网络连接
|
||||
docker-compose exec sms-forwarder curl -I https://ntfy.sh
|
||||
```
|
||||
|
||||
4. **配置文件问题**
|
||||
```bash
|
||||
# 验证 YAML 语法
|
||||
python3 -c "import yaml; yaml.safe_load(open('config.yaml'))"
|
||||
|
||||
# 重新生成配置
|
||||
cp config.example.yaml config.yaml
|
||||
```
|
||||
|
||||
### 性能优化
|
||||
|
||||
1. **资源限制调整**
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M # 增加内存限制
|
||||
cpus: '1.0' # 增加 CPU 限制
|
||||
```
|
||||
|
||||
2. **日志轮转**
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
```
|
||||
|
||||
## 更新和维护
|
||||
|
||||
### 更新应用
|
||||
|
||||
```bash
|
||||
# 检查端口占用
|
||||
netstat -tlnp | grep 8000
|
||||
# 1. 拉取最新代码
|
||||
git pull
|
||||
|
||||
# 检查进程状态
|
||||
ps aux | grep sms-forwarder
|
||||
# 2. 重新构建和部署
|
||||
./scripts/deploy.sh
|
||||
|
||||
# 测试配置文件
|
||||
uv run python -c "from sms_forwarder.config import get_config; print(get_config())"
|
||||
# 或手动更新
|
||||
docker-compose build --no-cache
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 定期维护
|
||||
|
||||
```bash
|
||||
# 清理未使用的 Docker 资源
|
||||
docker system prune -f
|
||||
|
||||
# 查看磁盘使用
|
||||
du -sh logs/ data/ gotify_data/
|
||||
|
||||
# 备份重要数据
|
||||
./scripts/backup.sh # 如果有备份脚本
|
||||
```
|
||||
|
222
docs/docker-quickstart.md
Normal file
222
docs/docker-quickstart.md
Normal file
@ -0,0 +1,222 @@
|
||||
# Docker 快速开始指南
|
||||
|
||||
本指南将帮助你在 5 分钟内使用 Docker 部署 SMS Forwarder。
|
||||
|
||||
## 🎯 目标
|
||||
|
||||
- ✅ 在 VPS 上部署 SMS Forwarder
|
||||
- ✅ 配置推送服务(Gotify 或 ntfy)
|
||||
- ✅ 设置 iPhone 快捷指令
|
||||
- ✅ 实现短信自动转发
|
||||
|
||||
## 📋 前提条件
|
||||
|
||||
- VPS 服务器(1GB+ 内存)
|
||||
- Docker 和 Docker Compose
|
||||
- 域名(可选,用于 HTTPS)
|
||||
|
||||
## 🚀 部署步骤
|
||||
|
||||
### 1. 克隆项目
|
||||
|
||||
```bash
|
||||
# SSH 到你的 VPS
|
||||
ssh user@your-vps
|
||||
|
||||
# 克隆项目
|
||||
git clone https://gitea.nosuchip.de/zack/sms_forwarder.git
|
||||
cd sms_forwarder
|
||||
```
|
||||
|
||||
### 2. 配置服务
|
||||
|
||||
```bash
|
||||
# 复制配置文件
|
||||
cp config.example.yaml config.yaml
|
||||
|
||||
# 编辑配置
|
||||
nano config.yaml
|
||||
```
|
||||
|
||||
**必须修改的配置项**:
|
||||
|
||||
```yaml
|
||||
server:
|
||||
api_key: "your-secret-api-key-here" # 生成强密钥
|
||||
|
||||
notifications:
|
||||
services:
|
||||
# 选择一种推送方式
|
||||
- name: "ntfy"
|
||||
url: "ntfy://your-unique-topic-name/"
|
||||
enabled: true
|
||||
```
|
||||
|
||||
### 3. 生成 API 密钥
|
||||
|
||||
```bash
|
||||
# 生成强密钥
|
||||
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
|
||||
```
|
||||
|
||||
将生成的密钥填入 `config.yaml` 的 `server.api_key` 字段。
|
||||
|
||||
### 4. 选择推送方式
|
||||
|
||||
#### 方案 A:使用 ntfy(推荐新手)
|
||||
|
||||
```yaml
|
||||
notifications:
|
||||
services:
|
||||
- name: "ntfy"
|
||||
url: "ntfy://sms-forward-$(whoami)-$(date +%s)/"
|
||||
enabled: true
|
||||
```
|
||||
|
||||
在 Android 设备上:
|
||||
1. 安装 ntfy 应用
|
||||
2. 订阅主题:`sms-forward-$(whoami)-$(date +%s)`
|
||||
|
||||
#### 方案 B:自建 Gotify(推荐进阶)
|
||||
|
||||
```bash
|
||||
# 启动 SMS Forwarder + Gotify
|
||||
docker-compose --profile gotify up -d
|
||||
```
|
||||
|
||||
然后:
|
||||
1. 访问 `http://your-vps:24545`
|
||||
2. 登录(admin/admin)
|
||||
3. 创建应用获取 Token
|
||||
4. 更新配置文件中的 Gotify URL
|
||||
|
||||
### 5. 部署服务
|
||||
|
||||
```bash
|
||||
# 一键部署
|
||||
./scripts/deploy.sh
|
||||
```
|
||||
|
||||
或手动部署:
|
||||
|
||||
```bash
|
||||
# 构建并启动
|
||||
docker-compose up -d
|
||||
|
||||
# 查看状态
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
### 6. 测试部署
|
||||
|
||||
```bash
|
||||
# 运行测试
|
||||
./scripts/test-docker.sh
|
||||
```
|
||||
|
||||
如果测试通过,你应该在 Android 设备上收到测试通知。
|
||||
|
||||
## 📱 配置 iPhone
|
||||
|
||||
### 1. 创建快捷指令
|
||||
|
||||
1. 打开 iPhone "快捷指令" 应用
|
||||
2. 点击 "+" 创建新快捷指令
|
||||
3. 添加 "获取我的快捷指令的输入" 动作
|
||||
4. 添加 "获取 URL 内容" 动作
|
||||
|
||||
### 2. 配置 HTTP 请求
|
||||
|
||||
- **URL**: `http://your-vps:12152/notify/simple`
|
||||
- **方法**: POST
|
||||
- **请求体**: JSON
|
||||
- **标头**: `Content-Type: application/json`
|
||||
|
||||
**请求体内容**:
|
||||
```json
|
||||
{
|
||||
"api_key": "your-api-key-here",
|
||||
"content": "快捷指令输入"
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 设置自动化
|
||||
|
||||
1. 点击 "自动化" → "+"
|
||||
2. 选择 "收到信息时"
|
||||
3. 选择 "任何人" 或特定联系人
|
||||
4. 选择你创建的快捷指令
|
||||
5. 关闭 "运行前询问"
|
||||
|
||||
## 🔧 管理和维护
|
||||
|
||||
### 常用命令
|
||||
|
||||
```bash
|
||||
# 查看服务状态
|
||||
./scripts/docker-manage.sh status
|
||||
|
||||
# 查看实时日志
|
||||
./scripts/docker-manage.sh logs
|
||||
|
||||
# 重启服务
|
||||
./scripts/docker-manage.sh restart
|
||||
|
||||
# 发送测试通知
|
||||
./scripts/docker-manage.sh test
|
||||
```
|
||||
|
||||
### 更新服务
|
||||
|
||||
```bash
|
||||
# 拉取最新代码
|
||||
git pull
|
||||
|
||||
# 重新部署
|
||||
./scripts/deploy.sh
|
||||
```
|
||||
|
||||
## 🛡️ 安全建议
|
||||
|
||||
1. **使用强 API 密钥**
|
||||
2. **限制访问 IP**(在 config.yaml 中配置)
|
||||
3. **使用 HTTPS**(配置域名和 SSL 证书)
|
||||
4. **定期备份配置**
|
||||
|
||||
## 🆘 故障排除
|
||||
|
||||
### 服务无法启动
|
||||
|
||||
```bash
|
||||
# 查看错误日志
|
||||
docker-compose logs sms-forwarder
|
||||
|
||||
# 检查配置文件
|
||||
docker-compose config
|
||||
```
|
||||
|
||||
### 通知发送失败
|
||||
|
||||
```bash
|
||||
# 检查网络连接
|
||||
docker-compose exec sms-forwarder curl -I https://ntfy.sh
|
||||
|
||||
# 验证配置
|
||||
curl http://localhost:12152/status
|
||||
```
|
||||
|
||||
### iPhone 快捷指令不工作
|
||||
|
||||
1. 检查网络连接
|
||||
2. 确认 API 密钥正确
|
||||
3. 查看服务器日志
|
||||
4. 测试 API 端点
|
||||
|
||||
## 🎉 完成
|
||||
|
||||
如果一切正常,你现在应该能够:
|
||||
- ✅ 在 iPhone 上收到短信时自动触发快捷指令
|
||||
- ✅ 快捷指令将短信内容发送到你的服务器
|
||||
- ✅ 服务器将通知推送到你的 Android 设备
|
||||
|
||||
享受你的短信转发服务吧!🎊
|
Reference in New Issue
Block a user