Files
campux-source_Nkeim/README.md
T
2026-07-14 14:34:21 +00:00

9.4 KiB
Raw Blame History

Campuxidoknow 校园墙系统完整部署文档

基于本次成功部署流程编写,零基础可按照步骤复刻,包含全部BUG修复、宝塔操作细节、踩坑记录。

目录

  1. 前置服务器环境要求
  2. 安装宝塔面板
  3. 宝塔内安装Docker及DockerCompose
  4. 域名解析配置
  5. 拉取项目源码
  6. 修改环境配置文件.env(修复第一个致命BUG)
  7. 修复开通向导机器人Platform校验BUG(前端代码修改)
  8. Docker‑Compose编译构建项目(宝塔重建按钮坑点说明)
  9. 查看容器日志,校验项目启动状态
  10. 宝塔网站配置Nginx反向代理 + 申请SSL证书
  11. 微信浏览器缓存问题解决方案
  12. NapCatQQ机器人对接流程
  13. 日常运维命令清单
  14. 全部踩坑问题汇总

1. 前置服务器环境要求

硬件最低配置

  • CPU2核
  • 内存:4G及以上(低于4G编译前端会直接卡死,构建失败)
  • 硬盘:20GB+

系统

CentOS 7(优先,宝塔兼容性最佳),Ubuntu 22.04同样兼容。

网络放行端口

  1. 服务器安全组放行:22(SSH)、80、443
  2. 数据库、MinIO图片存储仅容器内部通信,无需对外开放端口。

域名

准备已备案域名,示例:qq.yunsya.cnA记录解析至服务器公网IP。

2. 安装宝塔面板

  1. 使用Xshell/FinalShell/宝塔网页终端登录服务器;
  2. CentOS7一键安装命令:
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
 
 
3. 安装完成后,记录面板地址、账号、密码;
4. 浏览器访问宝塔面板,阿里云/腾讯云服务器需额外在安全组放行宝塔8888端口。
 
3. 宝塔安装Docker、DockerCompose
 
1. 左侧菜单打开【软件商店】;
2. 搜索 Docker ,点击一键安装;
3. Docker安装完毕会自动附带DockerCompose
4. 安装完成后左侧出现【Docker】菜单。
 
4. 域名解析配置
 
1. 进入域名服务商后台;
2. 添加A记录:主机记录 @ ,记录值填写服务器公网IP;
3. 等待5‑30分钟解析生效,可通过站长工具检测。
 
5. 拉取项目源码
 
1. 打开宝塔【终端】,逐条执行命令:
 
bash
  
# 进入网站根目录
cd /www/wwwroot
# 拉取idoknow版Campux源码,文件夹固定为campuxsource
git clone https://github.com/idoknow/Campux.git campux-source
# 进入项目目录
cd campux-source
 
 
2. 在宝塔文件管理器  /www/wwwroot  内可看到项目文件夹。
 
6. 修改环境配置文件 .env
 
BUG说明:原版 CAMPUX_TENANT_DOMAIN_TTL=-1 ,Zod校验不允许负数,会导致容器反复崩溃,必须修改。
 
1. 宝塔文件管理器打开路径:
 /www/wwwroot/campux-source/.env 
2. 编辑文件,替换内容,按需修改域名与密钥:
 
env
  
# 网站访问域名,修改为自己的HTTPS域名
CAMPUX_WEB_ORIGIN=https://qq.yunsya.cn
# 会话加密密钥,自行生成一串随机字母数字
CAMPUX_BOT_SESSION_SECRET=Kd2c58e9337f54144e0d8f61d500b41f51500b41
# 图片资源访问地址
S3_PUBLIC_BASE_URL=https://qq.yunsya.cn/s3
# 租户域名后缀,留空
CAMPUX_TENANT_DOMAIN_SUFFIX=""
# 修复BUG,由‑1改为86400秒(1天)
CAMPUX_TENANT_DOMAIN_TTL=86400
# 关闭遥测数据收集
CAMPUX_TELEMETRY_DISABLED=true
 
 
3. 保存 .env 文件。
 
必改项清单
 
1.  CAMPUX_WEB_ORIGIN  替换为个人域名;
2.  CAMPUX_BOT_SESSION_SECRET  自定义随机字符串;
3.  S3_PUBLIC_BASE_URL  替换为个人域名;
4.  CAMPUX_TENANT_DOMAIN_TTL  修改为 86400 。
 
7. 修复开通向导Platform校验BUG
 
问题描述
 
开通校园墙第二步「接入墙号机器人」,点击创建墙号报错:
 invalid_union_discriminator Expected "onebot" | "official_qq" 
原因:前端请求缺少 platform:"onebot" 字段。
 
1. 打开文件路径:
 /www/wwwroot/campux-source/apps/web/src/features/onboarding/OnboardingWizard.tsx 
2. 找到 createBot 函数内的请求代码:
 
ts
  
await api("/api/admin/bots", {
  method: "POST",
  body: JSON.stringify({
    qqUin: botQq.trim(),
    displayName: botName.trim() || `${tenant.name} 墙号`,
    reviewGroupId: reviewGroup.trim() || undefined,
    reviewNotificationEnabled: true,
    createPublishTarget: true,
  }),
});
 
 
3. 添加一行 platform: "onebot", ,修改后代码:
 
ts
  
await api("/api/admin/bots", {
  method: "POST",
  body: JSON.stringify({
    qqUin: botQq.trim(),
    displayName: botName.trim() || `${tenant.name} 墙号`,
    reviewGroupId: reviewGroup.trim() || undefined,
    reviewNotificationEnabled: true,
    createPublishTarget: true,
    platform: "onebot",
  }),
});
 
 
4. 保存文件。
 
免修改备选方案
开通向导页面返回上一页,跳过机器人绑定;校园墙创建完成后,在后台【机器人管理】页面添加QQ机器人,后台页面无此BUG。
 
8. DockerCompose编译构建项目
 
重要坑点
 
宝塔移动端Docker编排里的【重建】按钮仅能重启容器,不会编译新代码,修改的TSX文件无法打包进镜像,修改不生效。必须通过终端命令构建。
 
1. 打开宝塔终端,执行:
 
bash
  
cd /www/wwwroot/campux-source
docker compose up -d --build
 
 
2. 构建时长4‑8分钟,全程不可关闭终端、锁屏,断开连接会终止构建。
3. 出现如下输出,代表构建完成:
 
plaintext
  
✔ Image campux-source-campux Built
✔ Container campux-minio     Running
✔ Container campux-postgres  Healthy
✔ Container campux           Started
 
 
自动启动3个容器:
 
- campux:主程序服务
- campuxpostgresPostgreSQL数据库
- campuxminio:图片存储服务
 
校验服务是否正常启动
 
bash
  
docker logs -f campux
 
 
出现下面两行文字即代表运行正常:
 
plaintext
  
database migrations completed
Server listening at http://172.18.0.4:8989
 
 
按下 Ctrl + C 退出日志查看。
 
9. 宝塔网站配置Nginx反向代理 & 申请SSL证书
 
9‑1 添加站点
 
1. 【网站】→【添加站点】;
2. 域名填写: qq.yunsya.cn ;
3. 网站目录随意填写(示例: /www/wwwroot/qq.yunsya.cn ,程序不使用该目录);
4. 数据库:不创建数据库;
5. PHP版本:纯静态;
6. 点击提交。
 
9‑2 修改Nginx配置
 
1. 网站列表点击【设置】‑【配置文件】;
2. 删除全部原有代码,粘贴下方配置:
 
nginx
  
server
{
    listen 80;
    server_name qq.yunsya.cn;
    return 301 https://$host$request_uri;
}

server
{
    listen 443 ssl;
    server_name qq.yunsya.cn;
    ssl_certificate /www/server/panel/vhost/cert/qq.yunsya.cn/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/qq.yunsya.cn/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8989;
        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_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /s3/ {
        proxy_pass http://127.0.0.1:9000/campux-next/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
 
 
93 申请HTTPS证书
 
1. 切换到【SSL】选项卡;
2. 选择Let‑Encrypt免费证书,勾选域名进行申请;
3. 申请成功后开启【强制HTTPS】;
4. 保存Nginx配置。
 
保存Nginx报错提示证书不存在,代表证书未申请完成,需先完成证书申请。
 
10. 微信浏览器缓存问题(必踩坑)
 
Docker已经构建最新代码,但微信浏览器缓存了旧JS,表单依旧提交旧数据,依旧会报错。
 
1. 手机后台彻底上滑关闭微信进程;
2. 重新打开微信,访问域名;
3. 再次进入开通向导,BUG修复完成。
 
电脑端浏览器按 Ctrl+F5 强制刷新清除缓存。
 
11. NapCat‑QQ机器人对接
 
1. 校园墙开通后,复制页面内反向WebSocket地址;
2. 打开NapCat后台,新增反向WebSocket客户端;
3. 粘贴地址并启用;
4. 页面状态显示「已连接」,机器人接入完成。
 
12. 日常运维命令
 
bash
  
# 查看实时日志
docker logs -f campux

# 仅重启容器(不重新构建镜像,30秒内完成)
cd /www/wwwroot/campux-source
docker compose restart

# 更新项目源码并重新部署
cd /www/wwwroot/campux-source
git pull
docker compose up -d --build

# 停止整套服务
cd /www/wwwroot/campux-source
docker compose down
 
 
13. 踩坑问题汇总
 
1. 容器反复重启: .env 文件内 CAMPUX_TENANT_DOMAIN_TTL=-1 ,修改为86400
2. 开通墙号报platform错误:修改 OnboardingWizard.tsx ,添加 platform:"onebot" ;
3. 修改代码后宝塔重建不生效:宝塔重建仅重启容器,必须执行 docker compose up -d --build ;
4. Docker构建卡死:服务器内存低于4G,升级内存;
5. 修改代码后网页依旧报错:微信浏览器缓存问题,彻底关闭微信;
6. Nginx配置保存失败:SSL证书未申请完成;
7. 域名无法访问:检查域名解析、服务器安全组、宝塔防火墙80/443端口。
 
plaintext
  

### 使用方法
1. 宝塔文件管理器进入`/www/wwwroot/campux-source`
2. 新建文件,命名为`README.md`;
3. 粘贴全部文本,保存即可。
后续迁移服务器、重装系统,直接对照本文档即可一键复现部署流程。