🛠 宝塔面板部署指引
企业微信 × Notion 生产进度录入系统 — 全图形化操作
服务器信息:阿里云 ECS · IP: 47.114.92.201 · 宝塔面板已部署
1 安装 Node.js 版本管理器
宝塔需要先安装 Node.js 才能跑我们的程序:
软件商店 → 运行环境 → 搜索 "Node.js 版本管理器"
- 点击 "安装"(推荐版本,
Node.js 20.x)
- 安装完成后会自动进入 Node.js 管理界面
- 在 Node.js 管理器中安装 Node.js 20.x LTS 版本
💡 Node.js 版本管理器自带 PM2:无需单独安装 PM2,后续启动应用直接用图形界面。
2 上传项目文件
用宝塔文件管理器上传项目:
文件 → 进入目录 /opt/wecom-notion-sync/
- 如果目录不存在,右键点击 /opt/ → 新建目录 → 命名为
wecom-notion-sync
- 进入新目录 → 顶部 "上传" 按钮 → 选择整个
wecom-notion-sync 文件夹上传
- 或者用 SFTP 工具(如 WinSCP)上传到同目录
最终目录结构应该是:
/opt/wecom-notion-sync/
├── server.js
├── package.json
├── .env
├── config/
│ └── roles.json
└── public/
├── index.html
├── css/style.css
├── js/app.js
└── deploy.html, setup.html, baota.html
提示:在宝塔 "文件" 里上传压缩包更高效,上传后右键 → 解压
3 创建站点 + 反向代理 核心步骤
这是关键步骤——把域名指向我们的应用:
① 创建站点
网站 → 添加站点
- 域名:填你的域名(如
progress.yourcompany.com)
- 根目录:/opt/wecom-notion-sync/public(注意是 public 子目录)
- PHP 版本:纯静态
- 数据库:不创建
- 提交创建
② 设置反向代理
网站 → 找到刚创建的站点 → 设置 → 反向代理
- 添加反向代理:
- 代理名称:
NodeJS
- 目标 URL:
http://127.0.0.1:3000
- 发送域名:
$host
- 提交
💡 这样设置后:用户访问 https://你的域名/ → 宝塔 Nginx → 转发到本机 3000 端口 → 我们的 Node.js 程序
4 申请 SSL 证书
Let's Encrypt 免费证书,宝塔一键申请:
网站 → 站点 → 设置 → SSL
- 选择 Let's Encrypt 标签
- 勾选你的域名
- 点击 "申请"
- 申请成功后,开启 "强制 HTTPS" 开关
域名解析必须先指向服务器:申请 SSL 前,确认你的域名 A 记录已指向 47.114.92.201,否则 Let's Encrypt 验证会失败。
5 配置环境变量 + 启动应用
① 编辑 .env 文件
文件 → /opt/wecom-notion-sync/.env → 右键编辑
填入你的企微配置:
WECOM_CORP_ID=ww你的企业ID
WECOM_AGENT_ID=1000002
WECOM_SECRET=你的应用Secret
WECOM_REDIRECT_URI=https://progress.yourcompany.com/auth/wecom/callback
DEMO_MODE=false
② 启动 Node.js 应用
软件商店 → 已安装 → Node.js 版本管理器 → 设置 → 添加项目
- 项目名称:
wecom-notion-sync
- 运行目录:/opt/wecom-notion-sync
- 启动文件:
server.js
- 项目端口:
3000
- 运行用户:
root(或 www,看权限)
- 点击 "提交" 启动
启动后回到 Node.js 管理器列表,应该看到项目状态为 "运行中",端口 3000 正在监听
6 配置企微可信域名 必做
让企微信任你的域名:
- 登录 企业微信管理后台
- 应用管理 → 找到你创建的应用 → 网页授权及 JS-SDK
- 设置可信域名:填入你的域名(不带 https://)
- 下载域名归属校验文件(
WW_verify_xxx.txt)
放置校验文件:
文件 → /opt/wecom-notion-sync/public/ → 上传校验文件
上传完成后访问 https://你的域名/WW_verify_xxx.txt 应能看到内容。
7 配置角色映射
编辑 /opt/wecom-notion-sync/config/roles.json 的 user_role_mapping:
"user_role_mapping": {
"zhangsan": { "role": "production_planning", "name": "张三" },
"lisi": { "role": "production_tracking", "name": "李四" }
}
userid 在企微管理后台 → 通讯录 → 点击成员 → 账号栏可见。
修改后在 Node.js 管理器点击 "重启"。
8 验证上线
最终验证清单:
- 浏览器访问
https://你的域名 — 应跳转到企微登录页
- 在企微中打开应用 — 自动识别身份进入表单
- 填写一条数据提交 — 去 Notion 对应数据库查看
- 检查 Node.js 管理器 — 应用状态为运行中
🛠 日常运维(都在宝塔里完成)
软件商店 → Node.js 版本管理器 → 点击项目 → "日志"
文件 → 编辑 .env 或 roles.json
Node.js 版本管理器 → 找到项目 → 重启
宝塔 SSL 自动续期,无需手动操作
首页 → 实时监控
终端 → 输入命令回车
❓ 常见问题排查
- 访问 502 Bad Gateway → 检查 Node.js 应用是否启动(Node.js 管理器),检查端口 3000 是否被占用
- SSL 申请失败 → 确认域名 A 记录指向服务器;防火墙 80/443 端口开放
- 企微登录报错 → 检查 .env 的 CorpID/Secret 是否正确;可信域名是否在企微后台配置
- 提交数据失败 → 检查 Notion API Key;在 Notion 把数据库分享给集成
- 改了代码不生效 → Node.js 管理器重启项目;如改的是前端静态文件则无需重启