Skip to content

二进制部署

适用于快速体验或小型团队使用,无需安装 Node.js 开发环境。

前置要求

  • 一台 Linux / macOS / Windows 服务器
  • 已编译好的服务端二进制文件(或从 releases 下载)

部署步骤

1. 上传服务端文件

将编译好的服务端可执行文件上传到服务器:

bash
scp im-server user@your-server:/opt/im/

2. 赋予执行权限

bash
chmod +x /opt/im/im-server

3. 启动服务

bash
cd /opt/im
./im-server

默认监听端口 3000

4. 后台运行(推荐)

使用 nohupsystemd 保持后台运行:

方式一:nohup

bash
nohup ./im-server > im.log 2>&1 &

方式二:systemd

创建服务文件 /etc/systemd/system/im-server.service

ini
[Unit]
Description=IM Server
After=network.target

[Service]
Type=simple
User=www
WorkingDirectory=/opt/im
ExecStart=/opt/im/im-server
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

启动并设置开机自启:

bash
systemctl daemon-reload
systemctl start im-server
systemctl enable im-server

5. 配置反向代理(可选)

使用 Nginx 将域名代理到 IM 服务:

nginx
server {
    listen 443 ssl;
    server_name chat.example.com;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # REST API
    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # WebSocket
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400;
    }
}

6. 验证

bash
# 检查服务是否启动
curl http://localhost:3000/api/push/public-key

# 应返回类似:
# {"code":200,"publicKey":"..."}

注意事项

数据库文件位置

二进制部署模式下,数据库文件默认保存在运行目录下的 data/im.db

权限要求

确保运行目录有读写权限

自定义配置

如需自定义端口或配置,请参考 配置参考