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 或把定时放到低峰时间。

相关推荐
sunshine8852 小时前
合规性管理:财务安全与业务连续性的双重保障
大数据·运维·人工智能
lusasky2 小时前
Claude Code v2.1.0+ 版本集成LSP
大数据·数据库·人工智能
历程里程碑2 小时前
子串----和为K的子数组
大数据·python·算法·leetcode·elasticsearch·搜索引擎·哈希算法
Kratzdisteln3 小时前
【1902】process_assignment_pdf()
大数据·人工智能·pdf
wxl7812273 小时前
2026年人工智能发展趋势:效率重构、生态协同与规范前行
大数据·人工智能·重构
吕司3 小时前
Git分支管理
git
九河云3 小时前
数字韧性时代,华为云CBR为业务连续性注入“免疫基因”
大数据·人工智能·安全·机器学习·华为云
2401_859049083 小时前
lvgl移植到Linux踩坑
linux·运维·arm开发·elasticsearch·嵌入式·ubantu
Juicedata4 小时前
JuiceFS 企业版 5.3 特性详解:单文件系统支持超 5,000 亿文件,首次引入 RDMA
大数据·人工智能·机器学习·性能优化·开源