Git 拉 NocoBase 2.0 beta(next 分支),并“每天自动更新 + 自动编译 + 自动重启”

Ubuntu 下从 Git 拉 NocoBase 2.0 beta(next 分支),并"每天自动更新 + 自动编译 + 自动重启" 的方案。

依据官方文档:Git 源码安装前置要求是 Node.js 20+ + Yarn 1.22.x ,beta 用 -b next 克隆。(v2.docs.nocobase.com)


1) 安装依赖(推荐用 nvm 固定 Node 版本)

bash 复制代码
sudo apt update
sudo apt install -y git curl build-essential

# 装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc

# 装 Node(建议 20 LTS 或 22 LTS;文档要求 20+)
nvm install 20
nvm use 20
nvm alias default 20

# 装 Yarn 1.22.x(Corepack/或 npm 装 Yarn classic)
npm i -g yarn@1.22.22

node -v
yarn -v

2) 克隆 NocoBase beta(next 分支)并初始化

bash 复制代码
git clone https://github.com/nocobase/nocobase.git -b next --depth=1 my-nocobase
cd my-nocobase

yarn install --frozen-lockfile

配置 .env(按你实际数据库改):

bash 复制代码
cat > .env <<'EOF'
TZ=UTC
APP_KEY=your-secret-key
DB_DIALECT=postgres
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=nocobase
DB_USER=nocobase
DB_PASSWORD=nocobase
EOF

安装并启动(官方步骤)(v2.docs.nocobase.com):

bash 复制代码
yarn nocobase install --lang=zh-CN
yarn build
yarn start

3) 写一个"更新 + 编译 + 重启"的脚本

假设你用 yarn start 常驻运行(也可以换成 pm2 管理重启),先创建脚本:

bash 复制代码
sudo mkdir -p /opt/nocobase
sudo chown -R $USER:$USER /opt/nocobase

# 你可以把仓库放 /opt/nocobase,也可以用你现有路径;这里演示软链
ln -s "$(pwd)" /opt/nocobase/my-nocobase 2>/dev/null || true

cat > /opt/nocobase/update_build_restart.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

APP_DIR="/opt/nocobase/my-nocobase"
cd "$APP_DIR"

echo "==> [1/4] git fetch"
git fetch --all --prune

echo "==> [2/4] reset to origin/next"
git reset --hard origin/next

echo "==> [3/4] install deps"
yarn install --frozen-lockfile

echo "==> [4/4] build"
yarn build

# === 重启方式 A:如果你用 systemd 管理 nocobase 服务 ===
sudo systemctl restart nocobase || true

# === 重启方式 B:如果你用 pm2 管理 ===
# pm2 restart nocobase || true

echo "==> done."
EOF

chmod +x /opt/nocobase/update_build_restart.sh

4) 用 systemd 把 NocoBase 变成服务(便于自动重启)

4.1 服务文件:/etc/systemd/system/nocobase.service

bash 复制代码
sudo tee /etc/systemd/system/nocobase.service > /dev/null <<'EOF'
[Unit]
Description=NocoBase
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/nocobase/my-nocobase
EnvironmentFile=/opt/nocobase/my-nocobase/.env
ExecStart=/usr/bin/env bash -lc 'yarn start'
Restart=always
RestartSec=5

# 如果你用 nvm,需要确保 node/yarn 在 PATH;最稳是用绝对路径或 bash -lc
# 也可以在这里加 Environment=PATH=...

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now nocobase

# 看日志
journalctl -u nocobase -f

5) 每天自动更新编译:systemd timer(推荐)或 cron

5.1 systemd timer(每天凌晨 3 点)

定时任务服务: /etc/systemd/system/nocobase-update.service

bash 复制代码
sudo tee /etc/systemd/system/nocobase-update.service > /dev/null <<'EOF'
[Unit]
Description=Daily update & build NocoBase (beta)

[Service]
Type=oneshot
ExecStart=/opt/nocobase/update_build_restart.sh
EOF

定时器: /etc/systemd/system/nocobase-update.timer

bash 复制代码
sudo tee /etc/systemd/system/nocobase-update.timer > /dev/null <<'EOF'
[Unit]
Description=Run nocobase update daily

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now nocobase-update.timer

# 检查是否生效
systemctl list-timers | grep nocobase

6) 常见坑(你这边很可能会遇到)

  1. 不要用 Node 24/25+ 来编译http_parser 报错在 Umi 相关链路里很常见,固定 Node 20/22 最省心。(GitHub)
  2. git reset --hard origin/next 会丢本地改动:如果你会改源码,建议把自定义改动放到你自己的分支/patch 里,否则每天更新会覆盖。
  3. yarn build 比较吃内存:机器小的话,建议加 swap 或把定时放到低峰时间。

相关推荐
阿瑞说项目管理4 分钟前
2026 实战入门指南:企业 Agent 到底能解决哪些工作问题?
大数据·人工智能·agent·智能体·企业级ai
ZOOOOOOU5 分钟前
云边端协同架构下,门禁权限引擎的离线决策与策略续存实现
大数据·人工智能·架构
189228048615 分钟前
EMMC32G-TA28闪存EMMCH26M78103CCR
大数据·人工智能·缓存
dingzd9516 分钟前
Facebook强化原创内容分发后跨境品牌如何重做素材策略
大数据·人工智能·新媒体运营·内容营销·跨境
Mr_sst44 分钟前
infra-ai模块宏观设计解析:业务与模型之间的中间层核心架构
大数据·人工智能·ai·llama
无忧智库1 小时前
大型集团数字化用户主数据管理体系建设:从零到一的系统性规划实践(PPT)
大数据
AIwenIPgeolocation1 小时前
IP地址数据服务:驱动电子商务精细化运营与智能风控
大数据·网络协议·tcp/ip
yongyoudayee1 小时前
业务语义模型:AI CRM从“能用”到“好用”的技术分水岭
大数据·人工智能
tang777891 小时前
代理IP质量检测实战:Python实现IP可用性、延迟、匿名度自动测试脚本
大数据·爬虫·python·网络协议·tcp/ip
我就是妖怪1 小时前
Kimi K2.6 新手快速上手与实战指南
大数据·人工智能