假设新站域名 nav2.xxx.com,端口用 21190 。
目录建议:
前端:inde.html和favicon.ico (放到网站的主目录下)
后端:/opt/nav2/nav-api/(放 server.js + package.json 等)
数据:/opt/nav2/nav-data/(SQLite 保存位置,自动生成)
mkdir -p /opt/nav2/site /opt/nav2/nav-api /opt/nav2/nav-data把你的文件放进去:
后端代码(server.js、package.json…)→ /opt/nav2/nav-api/
你后端要用环境变量:
PORT=21190
DB_PATH=/data/data.sqlite
ADMIN_USER=admin
ADMIN_PASS=你要的新密码(建议改)
SQLite 会写入挂载目录:/opt/nav2/nav-data/data.sqlite
version: "3.8"
services:
nav2-api:
image: node:20-alpine
working_dir: /app
volumes:
- /opt/nav2/nav-api:/app
- /opt/nav2/nav-data:/data
environment:
PORT: "21190"
DB_PATH: "/data/data.sqlite"
ADMIN_USER: "admin"
ADMIN_PASS: "admin123456"
TOKEN_TTL_HOURS: "168"
command: sh -c "npm i && node server.js"
restart: unless-stopped
ports:
- "127.0.0.1:21190:21190"注意:ports 用 127.0.0.1:21190:21190,只在本机监听,安全。 启动编排后,先本机验证:
curl -i http://127.0.0.1:21190/api/data看到 HTTP/1.1 200 OK 就说明后端 OK。
反向代理规则; 进入这个网站 → 反向代理 → 新增规则:
前端请求路径:/api/
后端代理地址:http://127.0.0.1:21190/ 保存并启用。
下一步用项目文件替换网站主目录下index.html文件
然后用域名验证 API:
打开:
应该返回 JSON(空也正常)。
2.点击登录:admin / 密码
3.新增分类/网站
4.刷新页面数据仍在
5.换设备访问数据仍在(数据库同步成功)