Skip to content

普通部署

本文档介绍如何在 Linux 服务器上通过 Node.js 环境部署 TG2Trade 系统。

1. 环境准备

在开始部署之前,请确保服务器满足以下条件。

1.1 运行环境

项目要求说明
操作系统Linux(Ubuntu 20.04+ / CentOS 7+)生产环境建议使用 Linux 服务器
Node.js>= 20建议使用 LTS 版本
包管理器pnpm本项目使用 pnpm 管理依赖
数据库SQLite本地文件型数据库,无需额外安装
进程管理pm2用于进程守护和自动重启

1.2 安装依赖软件

如果尚未安装所需软件,请依次执行以下命令:

安装 Node.js 20:

bash
# 使用 NodeSource 官方源安装(推荐)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

验证安装

安装完成后,运行以下命令确认版本:

bash
node -v    # 应输出 v20.x.x
npm -v     # 应输出 10.x.x

安装 pnpm:

bash
npm install -g pnpm

安装 pm2:

bash
npm install -g pm2

什么是 pm2?

pm2 是 Node.js 应用的进程管理工具,可以守护应用进程、自动重启崩溃的应用、记录日志等。

1.3 网络要求

  • 服务器需能连接到 Telegram 服务器(部分网络环境可能需要配置代理)
  • 如需连接交易所进行真实交易,需能访问对应交易所 API
  • 建议服务器网络稳定,避免消息接收延迟

2. 下载发布包

bash
# 进入应用目录
mkdir -p /opt/TG2Trade && cd /opt/TG2Trade
# 下载发布包(wget / curl 二选一)
wget -O TG2Trade-Node.tar.gz https://download.mw3ai.com/TG2Trade-Node.tar.gz
# 或
# curl -O https://download.mw3ai.com/TG2Trade-Node.tar.gz

提示

如果下载速度较慢,可以先用浏览器下载到本地,再通过 SCP 等工具上传到服务器的 /tmp 目录。

3. 首次部署

按顺序执行以下步骤即可完成部署。

3.1 解压发布包

bash
# 解压到应用目录
tar -xzf TG2Trade-Node.tar.gz

3.2 配置环境变量

bash
# 默认端口为 3000,如需修改端口号编辑 .env 文件
nano .env

3.3 环境变量说明

变量名必填默认值说明
DATABASE_URLfile:./data/data.dbSQLite 数据库文件路径
PORT3000Web 管理面板端口

3.4 安装依赖并启动

bash
# 确保在应用目录下
cd /opt/TG2Trade
# 启动应用
bash scripts/start.sh

3.5 确认服务运行

bash
# 查看 pm2 进程状态
pm2 status

预期 tg2trade 状态为 online

┌─────┬──────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name         │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼──────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ tg2trade     │ default     │ 1.0.0   │ fork    │ 12345    │ 5s     │ 0    │ online    │ 0%       │ 80.0mb   │ root     │ disabled │
└─────┴──────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

3.6 访问管理面板

打开浏览器访问:

http://<服务器IP>:3000

防火墙设置

如果无法访问,请检查服务器防火墙是否已放行 3000 端口:

bash
# Ubuntu(ufw)
sudo ufw allow 3000

# CentOS(firewalld)
sudo firewall-cmd --add-port=3000/tcp --permanent
sudo firewall-cmd --reload

云服务器额外步骤

如果使用阿里云 / 腾讯云等云服务器,还需要在安全组中添加入方向规则,放行 TCP 3000 端口。


4. 版本升级

升级只需替换程序文件,已有的数据和配置不会被覆盖

4.1 下载新版本

bash
cd /opt/TG2Trade
# 下载新版本发布包(wget / curl 二选一)
wget -O TG2Trade-Node.tar.gz https://download.mw3ai.com/TG2Trade-Node.tar.gz
# 或
# curl -O https://download.mw3ai.com/TG2Trade-Node.tar.gz

4.2 更新应用

bash
# 进入应用目录
cd /opt/TG2Trade
# 解压新版本(⚠️重要:排除 .env 配置文件和 data 数据目录)
tar -xzf TG2Trade-Node.tar.gz --exclude=.env --exclude=data
# 重启应用
bash scripts/start.sh

4.3 验证升级

bash
# 确认进程正常运行
pm2 status
# 查看日志确认无错误
pm2 logs tg2trade --lines 20

5. 日常运维

5.1 常用命令

bash
# 查看应用状态
pm2 status

# 重启应用
pm2 restart tg2trade

# 停止应用
pm2 stop tg2trade

# 启动应用
pm2 start tg2trade

# 查看实时日志(Ctrl+C 退出)
pm2 logs tg2trade

# 查看最近 100 行日志
pm2 logs tg2trade --lines 100

5.2 日常检查项

  • 检查 pm2 进程是否正常运行:pm2 status
  • 检查日志是否有持续的新信号产生
  • 检查交易日志是否有异常订单
  • 检查服务器磁盘空间是否充足:df -h
  • 检查内存使用是否正常:free -h

5.3 备份建议

建议定期备份以下数据:

bash
# 进入应用目录
cd /opt/TG2Trade

# 备份数据库
cp data/data.db data/data.db.backup.$(date +%Y%m%d)

# 备份 .env 配置文件
cp .env .env.backup.$(date +%Y%m%d)

自动化备份

可将以上命令添加为定时任务(crontab),实现每日自动备份:

bash
# 编辑定时任务
crontab -e
# 添加以下行(每天凌晨 2 点执行备份)
0 2 * * * cd /opt/TG2Trade && cp data/data.db data/data.db.backup.$(date +\%Y\%m\%d) && cp .env .env.backup.$(date +\%Y\%m\%d)

6. 常见问题

6.1 端口被占用

bash
# 查看占用 3000 端口的进程
lsof -i :3000

解决方法: 修改 .env 中的 PORT 为其他端口(如 8080),然后重启应用:

bash
cd /opt/TG2Trade
# 编辑 .env,将 PORT 改为 8080
nano .env
# 重启应用
pm2 restart tg2trade

6.2 pm2 进程异常退出

bash
# 查看错误日志
pm2 logs tg2trade --err
# 或查看所有日志
pm2 logs tg2trade --lines 50

常见原因:

  • 端口被占用 → 参考 6.1
  • 内存不足 → 检查服务器内存使用 free -h
  • 依赖缺失 → 重新执行 pnpm install

6.3 数据库文件损坏

bash
# 1. 停止应用
pm2 stop tg2trade
# 2. 恢复备份(替换为实际备份文件名)
cd /opt/TG2Trade
cp data/data.db.backup.20260721 data/data.db
# 3. 重启应用
pm2 start tg2trade