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