budibase在linux上不可用apt/yum安装,必须用docker部署;跳过docker会因node.js版本、依赖冲突、数据库初始化失败而卡住;npm全局安装@budibase/cli仅适合本地开发,不适用于生产环境。

Budibase 在 Linux 上不能直接用 apt 或 yum 安装,必须走 Docker 部署路线;跳过 Docker 会卡在 Node.js 版本、依赖冲突、数据库初始化失败这三关。
为什么不用 npm 全局安装 @budibase/cli 做生产部署
本地开发时跑 budi hosting --init 看起来方便,但实际暴露两个硬伤:
-
budiCLI 默认绑定 SQLite,无法支撑多用户并发或真实业务数据量,上线后大概率触发SQLITE_BUSY错误 - 它不自动拉起 PostgreSQL / Redis 容器,所有服务得手动补全,配置文件散落在
hosting/下多个子目录,改错一个路径(比如把postgres_data写成pg_data)就会导致docker-compose up启动后立即退出 - CLI 生成的
docker-compose.yaml缺少健康检查和重启策略,容器挂了不会自恢复,不适合长期运行
必须用官方 docker-compose.yaml 启动,但要注意三个路径陷阱
群晖、Ubuntu Server、CentOS Stream 这些环境执行 curl 下载配置时,容易因路径权限或拼写出错白忙活:
- 创建目录必须用
mkdir -p /volume2/docker/budibase(群晖)或mkdir -p ~/budibase(通用),不能漏掉-p,否则logs子目录建不成功,日志全丢进容器内部,docker logs查不到错误 -
docker-compose.yaml里volumes段写的路径必须和你cd进入的目录一致,例如你cd /home/user/budibase,那 YAML 里就不能写./logs:/app/logs,得写/home/user/budibase/logs:/app/logs,否则日志目录映射失效 -
hosting.properties中的BUDIBASE_HOST必须填你实际访问用的域名或 IP,比如内网用http://192.168.1.100:10000,填localhost会导致前端请求 502,因为 Envoy 反向代理认不出这个 host
docker-compose up -d 启动后打不开页面?先查这三个服务状态
不是所有容器都叫 budibase,Budibase 的 Docker Compose 实际启了至少 4 个容器,缺一不可:
- 运行
docker ps -a,确认postgres、redis、budibase_server、envoy全部是Up状态;如果postgres显示Restarting,大概率是postgres_data目录权限不对(需chown -R 991:991 postgres_data) - 用
docker logs budibase_server查有没有Migration failed或connect ECONNREFUSED,前者说明数据库没初始化完就启动了 server,后者说明postgres容器根本没起来或端口被占 - 用
curl -v http://localhost:10000/healthz测试 Envoy 是否转发正常;返回200 OK但浏览器打不开,基本是浏览器缓存了旧的localhost重定向,换隐身窗口或清 DNS 缓存再试
真正麻烦的不是启动,而是第一次登录后进不去「设计」界面——这时候八成是 envoy.yaml 里 allowed_origins 没加你当前访问的协议+域名,比如用了 HTTPS 就必须显式写 https://your-domain.com,只写 * 在新版 Envoy 会被拒绝。











