当前位置: 首页 > news >正文

Budibase 从零部署全攻略:基于Docker Compose的内网/离线环境部署方案

📋 部署概述

服务器信息

项目
IP 地址1.1.1.0
操作系统CentOS Linux 7 (Core)
内核版本3.10.0-1160.el7.x86_64
内存15 GB (可用 14 GB)
磁盘197 GB (可用 194 GB)
Docker 版本26.1.4 (Server: 20.10.24)
Docker Composev2.27.1
部署目录/opt/budibase
访问地址http://1.1.1.0:10000

1️⃣ 登录服务器 & 环境准备

1.1 SSH 登录

sshroot@1.1.1.0

1.2 检查环境

# 检查系统版本cat/etc/os-release# 检查 Dockerdocker--version# 期望: Docker version 26.xdockercompose version# 期望: Docker Compose version v2.x# 检查资源free-h# 建议 >= 8GB 内存df-h/# 建议 >= 50GB 磁盘

1.3 系统参数配置

# IP 转发sysctl-wnet.ipv4.ip_forward=1echo"net.ipv4.ip_forward=1">>/etc/sysctl.conf# 网桥过滤modprobe br_netfilterecho1>/proc/sys/net/bridge/bridge-nf-call-iptables# Redis 所需sysctl-wvm.overcommit_memory=1echo"vm.overcommit_memory=1">>/etc/sysctl.conf# TCP 连接队列sysctl-wnet.core.somaxconn=1024echo"net.core.somaxconn=1024">>/etc/sysctl.conf# 应用所有配置sysctl-p

2️⃣ Docker 镜像加速配置

重要:内网服务器无法直接访问 Docker Hub (registry-1.docker.io),必须配置国内镜像加速器。

2.1 配置 Docker 镜像源

mkdir-p/etc/dockercat>/etc/docker/daemon.json<<'EOF' { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me", "https://docker.m.daocloud.io" ] } EOFsystemctl daemon-reload systemctl restartdocker# 验证dockerinfo|grep-A5"Registry Mirrors"

2.2 推荐的国内镜像源(2026年6月实测可用)

优先级镜像地址类型备注
🥇1https://docker.1ms.run商业速度快,稳定性高
🥈2https://docker.xuanyuan.me公益免费,但有配额
3https://docker.m.daocloud.io公益老牌服务,有白名单限制

3️⃣ 上传并配置文件

3.1 创建部署目录

mkdir-p/opt/budibase

3.2 需要上传的文件

文件路径说明
docker-compose.yml/opt/budibase/Docker Compose 编排文件
.env/opt/budibase/环境变量配置

3.3 .env 关键配置项

配置项说明
MAIN_PORT10000主访问端口
BB_ADMIN_USER_EMAIL设置邮箱管理员邮箱
BB_ADMIN_USER_PASSWORD[设置强密码]管理员密码
COUCH_DB_USER设置用户名CouchDB 用户名
COUCH_DB_PASSWORD[设置CouchDB密码]CouchDB 密码
REDIS_PASSWORD[设置Redis密码]Redis 密码
MINIO_ACCESS_KEY[设置MinIO访问密钥]MinIO 访问密钥
MINIO_SECRET_KEY[设置MinIO密钥]MinIO 密钥

安全提示:生产环境请务必修改所有默认密码!特别是API_ENCRYPTION_KEYJWT_SECRET

3.4 修改 docker-compose.yml(重要)

将 Redis 镜像固定版本,避免拉取不匹配的redis:latest

cd/opt/budibase# 将 "image: redis" 改为 "image: redis:7-alpine"sed-i's/image: redis$/image: redis:7-alpine/'docker-compose.yml

4️⃣ 拉取 Docker 镜像

内网拉取技巧:如果docker compose pull失败,可以逐个使用显式镜像源拉取。镜像前缀docker.1ms.run/会强制通过该代理下载。

4.1 逐镜像拉取脚本

由于镜像体积较大(总计约 3.2 GB),建议通过后台脚本逐个拉取:

#!/bin/bash# 逐一拉取并 tag 所有镜像declare-AIMGS=(["redis:7-alpine"]="docker.1ms.run/library/redis:7-alpine"["minio/minio:latest"]="docker.1ms.run/minio/minio:latest"["budibase/database:2.1.0"]="docker.1ms.run/budibase/database:2.1.0"["budibase/proxy:latest"]="docker.1ms.run/budibase/proxy:latest"["budibase/worker:latest"]="docker.1ms.run/budibase/worker:latest"["budibase/apps:latest"]="docker.1ms.run/budibase/apps:latest")fortargetin"${!IMGS[@]}";dosource="${IMGS[$target]}"echo">>> Pulling$target..."forattemptin$(seq120);doifdockerpull"$source"2>&1;thendockertag"$source""$target"echo" SUCCESS:$target"breakfi[$attempt-lt20]&&sleep$((attempt*30))donedone

4.2 镜像清单

#镜像大小用途
1redis:7-alpine39 MB缓存服务
2minio/minio:latest175 MB文件存储
3budibase/database:2.1.0815 MBCouchDB 数据库
4budibase/proxy:latest180 MB反向代理网关
5budibase/worker:latest704 MB后台任务处理
6budibase/apps:latest1.26 GB主应用服务
合计~3.2 GB

备选方案:离线拉取镜像(适用离线环境)

  1. 在外网机器上拉取并导出
# 在外网机器上dockerpull docker.1ms.run/budibase/apps:latestdockertag docker.1ms.run/budibase/apps:latest budibase/apps:latestdockersave budibase/apps:latest-obudibase-apps.tar

2.2.传输到内网服务器

scpbudibase-*.tar root@1.1.1.0:/opt/budibase/
  1. 在内网服务器上导入
cd/opt/budibasedockerload-ibudibase-apps.tar

5️⃣ 启动服务

5.1 初始化 Redis 数据卷

# 创建 Redis 数据卷dockervolume create budibase_redis_data# 出现 "Can't handle RDB format version 14" 错误时dockercompose downdockervolumermbudibase_redis_data

5.2 启动所有服务

cd/opt/budibasedockercompose up-d

5.3 检查服务状态

dockerps-a

期望看到 6 个容器全部Up

容器名镜像状态
bbproxybudibase/proxy✅ Up (端口 10000)
bbappsbudibase/apps✅ Up
bbworkerbudibase/worker✅ Up
budibase-couchdb-service-1budibase/database:2.1.0✅ Up
budibase-minio-service-1minio/minio✅ Up (healthy)
budibase-redis-service-1redis:7-alpine✅ Up

6️⃣ 验证 & 登

6.1 访问 Budibase

浏览器打开:http://1.1.1.0:10000

首次访问会自动跳转到/builder页面。

6.2 管理员登录

项目
邮箱`
密码``

6.3 curl 验证

# 从服务器本地测试curl-Ihttp://localhost:10000# 应返回 HTTP 301 -> /builder# 从其他机器测试curl-Ihttp://1.1.1.0:10000

7️⃣ 数据备份与恢复(含迁移)

备份原理

Budibase 的数据存在两个地方:

存储Docker 数据卷存放内容
CouchDBbudibase_couchdb3_data表格结构、数据行、用户、角色、应用配置
MinIObudibase_minio_data附件(图片、文件)、应用前端资源
Redisbudibase_redis_data缓存(不需要备份

核心思路:把两个 Docker 数据卷打包成 tar.gz 文件,需要恢复或迁移时解压回去即可。备份的是原始数据文件,100% 完整。

备份步骤(在服务器上执行)

# 1. 创建备份目录mkdir-p/backup# 2. 停止所有 Budibase 容器cd/opt/budibasedockercompose down# 3. 备份 CouchDB 数据卷(表格、数据、用户等)tarczf /backup/budibase-couchdb-$(date+%Y%m%d-%H%M).tar.gz\-C/var/lib/docker/volumes budibase_couchdb3_data# 4. 备份 MinIO 数据卷(附件、图片、文件)tarczf /backup/budibase-minio-$(date+%Y%m%d-%H%M).tar.gz\-C/var/lib/docker/volumes budibase_minio_data# 5. 查看备份文件ls-lh/backup/# 示例输出:# budibase-couchdb-20260701-0915.tar.gz 34K# budibase-minio-20260701-0915.tar.gz 2.4M# 6. 重新启动服务dockercompose up-d

⚠️注意:备份时需要停止 Budibase 服务,确保 CouchDB 数据一致性。整个备份过程约 1-2 分钟。

恢复步骤(在当前服务器上恢复)

# 1. 停止服务cd/opt/budibase&&dockercompose down# 2. 删除旧数据卷(⚠️ 确认备份文件存在后再执行)dockervolumermbudibase_couchdb3_data budibase_minio_data budibase_redis_data# 3. 解压备份文件tarxzf /backup/budibase-couchdb-20260701-0915.tar.gz\-C/var/lib/docker/volumes/tarxzf /backup/budibase-minio-20260701-0915.tar.gz\-C/var/lib/docker/volumes/# 4. 启动服务dockercompose up-d# 5. 等待服务就绪后验证sleep10dockerps# 确认 6 个容器都 Upcurl-Ihttp://localhost:10000# 返回 301 即正常

用于迁移:从服务器 A 迁移到服务器 B

备份文件可以直接用于迁移到另一台服务器,步骤如下:

  1. 在服务器 A(源服务器)上执行备份
cd/opt/budibase&&dockercompose downtarczf /root/budibase-couchdb-migrate.tar.gz-C/var/lib/docker/volumes budibase_couchdb3_datatarczf /root/budibase-minio-migrate.tar.gz-C/var/lib/docker/volumes budibase_minio_data
  1. 把备份文件传到服务器 B(新服务器)
# 在 A 上执行:scp/root/budibase-*-migrate.tar.gz root@新服务器IP:/root/
  1. 在服务器 B 上,先按照本文第 1-5 节完成 Budibase 部署(确保 docker-compose.yml、.env 已就位,Docker 镜像已拉取),然后执行恢复:
cd/opt/budibase&&dockercompose downdockervolumermbudibase_couchdb3_data budibase_minio_data budibase_redis_datatarxzf /root/budibase-couchdb-migrate.tar.gz-C/var/lib/docker/volumes/tarxzf /root/budibase-minio-migrate.tar.gz-C/var/lib/docker/volumes/dockercompose up-d
  1. 验证迁移结果:浏览器访问新服务器 IP:10000,用原来的管理员账号登录,数据和附件应该完整存在。

迁移注意事项
① 两个服务器的.env文件中的密码/密钥可以不同,但建议保持一致
② 如果改了API_ENCRYPTION_KEYJWT_SECRET,已加密的数据可能无法解密;
③ 迁移后需要在浏览器用新 IP 访问,Budibase 会自动适应。

实测验证结果

验证项备份前删除后恢复后
表格数量2 个(含 ta_users)1 个✅ 2 个
数据行2 行1 行✅ 2 行
MinIO 附件大小11 MB9.8 MB✅ 11 MB
JPG 附件存在已删除✅ 恢复
Web 访问正常正常✅ 正常

8️⃣ 常用运维命令

服务管理

# 启动cd/opt/budibase&&dockercompose up-d# 停止cd/opt/budibase&&dockercompose down# 重启cd/opt/budibase&&dockercompose restart# 查看日志(所有服务)dockercompose logs-f# 查看单个服务日志dockerlogs-fbbapps# 查看资源使用dockerstats

数据备份

# 查看数据卷dockervolumels|grepbudibase# 备份 CouchDB 数据dockerrun--rm-vbudibase_couchdb3_data:/data-v/backup:/backup\alpinetarczf /backup/couchdb-backup-$(date+%Y%m%d).tar.gz /data# 备份 MinIO 数据dockerrun--rm-vbudibase_minio_data:/data-v/backup:/backup\alpinetarczf /backup/minio-backup-$(date+%Y%m%d).tar.gz /data

端口防火墙(如需要)

# firewalldfirewall-cmd --add-port=10000/tcp--permanentfirewall-cmd--reload
http://www.jsqmd.com/news/1108937/

相关文章:

  • 吕梁本地企业做GEO靠谱服务商推荐:2026年企业GEO服务商优选指南
  • 5步搞定PubMed文献批量下载:告别手动搜索的科研利器
  • 5000家政企客户的底座,凭什么说自己是AI原生——从行业纵深说起
  • 2026年人力资源系统厂商选型推荐指南:制造业数字化转型的八家深度解析
  • QMCDecode:解锁QQ音乐加密音频的终极macOS解密工具指南
  • 图神经网络驱动的图感知数据增强与分布式落地实践
  • RePKG深度解析:解锁Wallpaper Engine壁纸资源的完全指南
  • 加密流量下的攻击溯源:从TLS指纹到主机取证的实战防御
  • 如何用League Director实现专业级《英雄联盟》回放创作:从游戏玩家到视频导演的完整指南
  • 汽车电子智能散热系统设计与实现
  • Ethical AI Avatar:可审计的伦理AI形象设计实践
  • 老牌东莞电源线工厂,为何能在市场竞争中屹立不倒?
  • 2026年,哪些口碑好的复合材料设备机构值得你关注?
  • AI辅助WebSocket接口测试实战:从Apifox到自动化CI/CD
  • 终极Windows驱动管理指南:如何用DriverStoreExplorer安全释放20GB硬盘空间
  • 计算机毕业设计之基于机器学习的新闻分类系统
  • Agent 在生产挂了三天,没人知道它哪一步出了问题
  • 嵌入式系统中SPI EEPROM配置存储方案设计与实现
  • PIC32MX795F512L驱动WS2812 LED的嵌入式开发指南
  • 如何在macOS上使用HSTracker提升炉石传说竞技水平:完整指南
  • python中with 语句上下文管理器详解
  • 如何用5个步骤彻底解放小爱音箱的音乐限制:XiaoMusic终极指南
  • 3步掌握OCRmyPDF:从扫描PDF到智能搜索文档的完整指南 [特殊字符]
  • 基于Si4732与PIC18F26K22的高性能收音机系统设计
  • 衡水气动锚杆钻机
  • 基于TC78H653FTG和PIC32的直流有刷电机控制方案
  • LV3296与STM32F217ZG嵌入式信号处理系统设计
  • 基于LP5812与PIC18F2525的RGB LED灯光控制系统设计
  • Obsidian 同步有什么简单方法?为什么 Nutstore Sync 应该进入第一梯队
  • LTC6903与PIC18F46K20实现精密数字控制振荡器设计