文档中心 / 进阶:基础服务部署

进阶:基础服务部署

私有阁对基础服务的要求非常克制:一台 MySQL 即可完整运行。音视频中继(TURN)与苹果推送(APNs)属于可选增强,按业务需要逐步开启。本文给出每个组件在生产环境的专业部署建议。

服务总览

组件是否必需用途
MySQL必需用户、消息、群组、云盘元数据
TURN / STUN建议跨网络音视频中继,弱网环境下保障通话成功率
APNsiOS 必需iOS 离线消息推送
Nginx生产建议TLS 终结、反代、静态资源

MySQL

建议独立实例或独占实例部署,创建 utf8mb4 库与专用账号:

sql
CREATE DATABASE siyouge DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'siyouge'@'127.0.0.1' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON siyouge.* TO 'siyouge'@'127.0.0.1';
FLUSH PRIVILEGES;

要点:

  • 账号只允许本机或内网来源连接,不要使用 % 放开公网;
  • innodb_buffer_pool_size 建议设为可用内存的 50% 左右;
  • 服务端首次启动会自动建表,无需手工导入。

TURN 音视频中继

双方都在对称 NAT 后时,P2P 直连会失败,需要 TURN 服务器中继音视频流。推荐开源 coturn:

bash
apt install coturn

/etc/turnserver.conf 最小配置:

text
listening-port=3478
fingerprint
lt-cred-mech
user=siyouge:强密码
realm=im.example.com

防火墙放行 3478(UDP/TCP)与 49152-65535 中继端口段,然后写入服务端 .env:

dotenv
TURN_SERVER_URL=turn:你的服务器IP:3478
TURN_USERNAME=siyouge
TURN_PASSWORD=强密码
STUN_SERVER_URL=stun:你的服务器IP:3478

APNs 推送

iOS 离线推送需要 Apple Push 令牌。在 Apple Developer 后台创建 Key(APNs AuthKey .p8),记录 Key ID 与 Team ID,把 .p8 文件放到服务器安全目录,再配置 .env:

dotenv
APNS_KEY_ID=你的KeyID
APNS_TEAM_ID=你的TeamID
APNS_KEY_PATH=/www/siyouge/secrets/AuthKey.p8
APNS_BUNDLE_ID=com.yourcompany.imm

注意 APNS_BUNDLE_ID 必须与 iOS 工程的 Bundle Identifier 一致,否则推送静默失败。

备份与恢复

数据库每日定时备份,上传目录按容量增量备份:

bash
mysqldump -usiyouge -p siyouge | gzip > /backup/siyouge-$(date +%F).sql.gz

恢复:gunzip < 备份文件 | mysql -usiyouge -p siyouge。建议把备份同步到对象存储或另一台机器,异地容灾。

生产检查

  • MySQL 仅内网可达,账号最小权限;
  • TURN 连通性用 Trickle ICE 测试通过;
  • iOS 真机杀掉 App 后仍能收到推送;
  • 备份任务在 crontab 中生效,并做过一次完整恢复演练。