部署前准备

开始部署前,请确认您已准备好以下环境和资源。

  • 服务器要求Linux系统(CentOS/Ubuntu/Debian),1核1G内存即可
  • 域名(可选)用于HTTPS和支付回调
  • 源码下载从「历史版本」页面下载最新版,前端 web/dist 已预构建,无需 npm run build
部署方式适合人群难度
宝塔 新手/不熟悉命令行
Docker 熟悉Docker ⭐⭐
脚本 有Linux基础 ⭐⭐

宝塔面板部署(推荐·新手友好)

宝塔是可视化服务器管理面板,图形化操作,新手友好。

1 安装宝塔面板

宝塔是可视化服务器管理面板,适合新手。在服务器终端执行以下命令安装:

Terminal
$ if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

安装完成后终端会显示面板地址、用户名、密码,请妥善保存。

2 安装PM2管理器

登录宝塔面板 → 左侧「软件商店」→ 搜索「PM2管理器」→ 点击安装,安装时 Node 版本选 v22 LTS,会自动带 Node.js。

小提示 如果软件商店找不到PM2管理器,在终端执行 npm install pm2 -g 也可以。
3 上传并解压源码
  1. 宝塔左侧「文件」→ 进入 /www/wwwroot/
  2. 上传 Asolica-v5.4.4.zip
  3. 右键解压,解压后文件夹改名为 asolica
4 执行一键安装

宝塔左侧「终端」,执行:

Terminal
$ cd /www/wwwroot/asolica $ bash install.sh

脚本自动检测Node.js、安装PM2、装后端依赖、创建配置文件。

5 修改配置并启动

修改 .envnano .env 或宝塔文件管理器双击编辑,只需要改一行:BASE_URL=https://你的域名.com

JWT_SECRET 留空,首次启动自动生成。

启动命令:

Terminal
$ pm2 start ecosystem.config.cjs --env production $ pm2 save $ pm2 startup

pm2 startup 后复制终端输出的命令再执行一次(设置开机自启)。

6 添加站点(图形化反代)

不需要手动编辑nginx.conf!图形化操作即可:

  1. 宝塔左侧「网站」→「添加站点」
  2. 填写你的域名,根目录任意(如 /www/wwwroot/你的域名),PHP版本选「纯静态」→ 提交
  3. 点击刚添加的站点名称 →「反向代理」→「添加反向代理」
  4. 代理名称填 Asolica,目标URL填 http://127.0.0.1:3200 → 提交
⚠️ 重要警告 不要在Nginx配置中添加 Cross-Origin-* 头,会导致移动端白屏!
7 申请SSL证书(HTTPS)
  1. 点击站点 →「SSL」→ 选择「Let's Encrypt」→ 勾选域名 → 申请
  2. 申请成功后开启「强制HTTPS」
🎉 部署完成
  • 查看密码:cat /www/wwwroot/asolica/server/data/admin_password.txt
  • 后台地址:https://你的域名/#/login

Docker 部署

使用 Docker Compose 容器化部署,环境隔离、升级方便。

1 安装Docker
Terminal
$ curl -fsSL https://get.docker.com | sh $ systemctl start docker && systemctl enable docker
2 下载源码并解压

上传源码到服务器(如 /opt/asolica),解压后进入目录,确保包含 docker-compose.yml

3 配置环境
Terminal
$ cp .env.example .env $ nano .env # 修改 BASE_URL=https://你的域名.com,JWT_SECRET留空自动生成
4 启动容器
Terminal
$ docker compose up -d
5 查看密码并配置反代

查看密码:cat server/data/admin_password.txt

然后配置Nginx反代(用宝塔图形化添加反代,目标URL填 http://127.0.0.1:3200,参考上一章节步骤6)。

数据持久化说明 server/dataserver/uploads 通过卷挂载,容器删除数据不丢。

一键脚本部署

一行命令自动完成全部安装,适合快速体验。生产环境建议用宝塔或Docker。

Terminal
$ curl -fsSL https://asolica.app/install.sh | bash

脚本自动安装Node.js、PM2、下载源码、启动服务。执行完成后编辑 .env 配置 BASE_URL,然后 pm2 restart asolica-server,再配置Nginx反代和SSL即可。

绑定域名与反向代理

不管哪种部署方式,绑定域名最省事的方法就是用宝塔面板图形化操作。

方案A(推荐):宝塔图形化操作

  1. 宝塔左侧「网站」→「添加站点」
  2. 填写域名,根目录任意,PHP选「纯静态」→ 提交
  3. 点击站点 →「反向代理」→「添加反向代理」
  4. 代理名称填 Asolica,目标URL填 http://127.0.0.1:3200 → 提交

方案B:不用宝塔,Nginx全量代理

最简Nginx配置(全量代理到Node.js,无需配置静态文件root路径):

nginx.conf
server { listen 80; server_name your-domain.com; client_max_body_size 8m; # 封禁敏感文件 location ~* \.(db|sqlite|env|sh|log|bak)$ { deny all; return 404; } location ~ /\. { deny all; return 404; } location / { proxy_pass http://127.0.0.1:3200; proxy_http_version 1.1; 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; proxy_connect_timeout 30s; proxy_read_timeout 60s; } }
⚠️ 禁止添加Cross-Origin-*头 千万不要添加 Cross-Origin-Opener-Policy、Cross-Origin-Embedder-Policy 等头,会导致移动端白屏!

申请HTTPS证书

生产环境必须配置HTTPS,支付回调强制要求HTTPS。

宝塔方式(推荐)

  1. 点击站点 →「SSL」→ 选择「Let's Encrypt」→ 勾选域名 → 申请
  2. 申请成功后开启「强制HTTPS」

证书自动续期,无需手动操作。

环境变量配置

.env 是核心配置文件,以下是常用配置项。

变量必填说明
BASE_URL 你的域名,https://开头,不带尾斜杠
JWT_SECRET 自动 留空首次启动自动生成32位随机密钥
PORT 默认3200
NODE_ENV 默认production

修改后重启:pm2 restart asolica-serverdocker compose restart

手动生成密钥命令:

Terminal
$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

版本升级(保留数据)

升级新版同时保留所有数据,备份data目录是最重要的一步

PM2升级(宝塔)

Terminal
$ cd /www/wwwroot/asolica $ cp -r server/data server/data_backup_$(date +%Y%m%d) $ pm2 stop asolica-server # 上传新源码覆盖(保留server/data目录!) $ bash install.sh $ pm2 start ecosystem.config.cjs --env production

Docker升级

Terminal
$ cd /opt/asolica $ cp -r server/data server/data_backup_$(date +%Y%m%d) $ docker compose down # 替换源码(保留server/data) $ docker compose up -d --build
提示 备份data目录是最重要的一步,不要删!启动时系统会自动迁移数据库表结构,无需手动操作。

全新部署(清除数据)

彻底清除旧数据从零开始。

⚠️ 为什么删了文件旧数据还在? 数据在 server/data/ 目录。只删代码文件不删data目录,数据不会丢。此操作不可逆!

PM2全新部署

Terminal
$ pm2 stop asolica-server && pm2 delete asolica-server && pm2 save $ rm -rf /www/wwwroot/asolica

然后按宝塔部署步骤重新来。

Docker全新部署

Terminal
$ docker compose down -v $ rm -rf server/data server/uploads server/backups $ docker volume prune -f

常用运维命令

日常运维常用命令速查。

PM2 命令 PM2

查看状态
pm2 list
查看日志
pm2 logs asolica-server
重启
pm2 restart asolica-server
停止
pm2 stop asolica-server

Docker 命令 Docker

查看状态
docker compose ps
查看日志
docker compose logs -f
重启
docker compose restart
停止
docker compose down

通用命令(两种环境都适用)

查看管理员密码
cat server/data/admin_password.txt
重置密码(PM2)
cd server && node scripts/reset-password.js
重置密码(Docker)
docker compose exec asolica node server/scripts/reset-password.js
手动备份
cp server/data/asolica.db server/data/asolica_backup_$(date +%Y%m%d).db
健康检查
curl http://localhost:3200/api/health