ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何部署 Budibase 单容器镜像并用自定义域名申请 LetsEncrypt HTTPS 证书

2026/9/13 10:01:20 拓冰建站 浏览量
如何部署 Budibase 单容器镜像并用自定义域名申请 LetsEncrypt HTTPS 证书 如何部署 Budibase 单容器镜像并用自定义域名申请 LetsEncrypt HTTPS 证书【免费下载链接】budibaseAI agents, automations and apps that run your operations. Model agnostic.项目地址: https://gitcode.com/GitHub_Trending/bu/budibase如果你的机器上不想用 docker-compose 跑一堆容器Budibase 仓库的hosting/single/目录提供了一条替代路线构建一个单镜像把 app、worker、CouchDB、MinIO、Redis 等全部组件装进同一个 Docker 镜像。若你还想让这套部署直接挂在自定义域名下可以在构建前设置CUSTOM_DOMAIN环境变量容器启动时会自动向 LetsEncrypt 申请证书成功后把流量指向 443 端口不设置该变量则跳过证书流程只对外提供 80 端口。文档中的构建指引基于 Debian 11 和 AlmaLinux 8 验证使用其他发行版或操作系统时需要自行调整命令。准备构建环境资源要求与依赖安装先确认资源满足要求来自 hosting/single/README.md 的 Build Requirements 一节构建机需要6GB 内存和20GB 可用磁盘空间留给构建产物构建出的镜像大约占用2GB磁盘空间。Budibase 需要的 Node 版本比 Debian 基础源里的新要求 14按文档安装 Node 16.xcurl -sL https://deb.nodesource.com/setup_16.x | sudo bash - apt install -y nodejs node -v接着安装 yarn 和 lerna并安装 Dockernpm install -g yarn jest lerna apt install -y docker.io安装完成后核对各组件版本。文档给出的实测组合是Docker 22.11.0、node 16.15.1、yarn 1.22.19、lerna 5.1.4——用其他版本文档只保证YMMV不做兼容承诺。修改 Dockerfile 环境变量设置 CUSTOM_DOMAIN 与密码在构建之前编辑 hosting/single/Dockerfile按你的实际用途修改其中的环境变量文档特别强调要注意修改密码。与自定义域名相关的关键项是CUSTOM_DOMAIN设置了CUSTOM_DOMAIN后容器启动时会用它向 LetsEncrypt 申请证书成功后即可把流量指向 443必须确保该自定义域名的 DNS 解析指向运行 Budibase 的主机公网 IP文档明确指出否则证书签发会失败文档给出的docker run示例并不通过-e传该变量所以CUSTOM_DOMAIN需要写进 Dockerfile 的环境变量里随镜像固化。示例配置示例值my.custom.domain需替换为你自己的域名ENV CUSTOM_DOMAINmy.custom.domain如果你已有自己的反代在前面终结 TLS则可以省略CUSTOM_DOMAIN容器会跳过向 LetsEncrypt 的请求此时把流量指向 80 端口即可。另一项需要留意的默认行为单镜像内置的 LiteLLM 默认以store_model_in_db: true运行因此需要 Postgres。不设置DATABASE_URL时容器会自行启动一个内部 Postgres并把数据持久化在${DATA_DIR}/litellm/postgres下见 hosting/single/README.md 与 hosting/single/runner.sh。如需改用外部 Postgres设置DATABASE_URL和LITELLM_INTERNAL_DBfalse两个变量。构建单镜像获取代码把仓库地址替换为你实际 clone 的 Budibase 仓库地址git clone https://gitcode.com/GitHub_Trending/bu/budibase.git cd budibase初始化 Node 依赖并构建前端node ./hosting/scripts/setup.js yarn yarn build然后执行构建命令。build:docker:single会先做准备工作再执行 docker buildyarn build:docker:single如果 docker build 这一步失败文档给出的补救方式是手动重跑docker build --build-arg TARGETARCHamd --no-cache -t budibase:latest -f ./hosting/single/Dockerfile .可选分支用 podman 替代 docker 也能构建成功。文档提到两点行为差异——构建 CouchDB 基础镜像时可能提示选择 registryHEALTHCHECK参数不符合 OCI 规范会被 podman 忽略详见 hosting/single/Dockerfile 第 153 行的 HEALTHCHECK 定义。运行容器并挂载持久化数据目录文档给出的运行命令docker run -d -p 80:80 -p 443:443 --name budibase budibase:latest各参数含义README 原文解释-d后台detached运行-p把宿主机端口映射到容器端口。如果宿主机 80 端口已被占用可改用-p 8080:80这类映射--name budibase容器名后续docker restart budibase、docker logs budibase都用它。关于数据持久化hosting/single/runner.sh 的启动逻辑有一条明确的警告如果${DATA_DIR}默认/data不是持久化卷每次重启都会重新生成密钥COUCHDB_USER、JWT_SECRET、REDIS_PASSWORD等典型症状是容器重启后日志里大量出现Auth Error: Session not found和 403 Unauthorized。警告原文建议在面向用户之前先用-v或 k8s PVC 给${DATA_DIR}挂一个持久化卷。因此正式部署时建议docker run -d -p 80:80 -p 443:443 -v budibase-data:/data --name budibase budibase:latest其中budibase-data是 Docker 命名卷挂载到容器内的/dataDockerfile 中已声明VOLUME /data。证书申请机制与启动验证容器启动后runner.sh 检测到CUSTOM_DOMAIN非空时会做两件事把续期任务写入/etc/cron.d/certificate-renew定期以该域名为参数执行 certificate-renew.sh立即执行 certificate-request.sh 申请证书。请求脚本的实际动作是调用 certbot 的 webroot 模式--webroot-path/var/www/html--rsa-key-size 4096--force-renewal签发成功后把 nginx 的 TLS 站点配置拷入/etc/nginx/sites-available/nginx-ssl.conf用 sed 把配置中的CUSTOM_DOMAIN占位符替换为真实域名建立软链到sites-enabled然后重启 nginx。容器内 nginx 的默认站点hosting/single/nginx/nginx-default-site.conf已经把/.well-known/acme-challenge/指向/var/www/html保证 HTTP-01 验证可访问。如果签发失败脚本会在日志里输出ERROR: certbot request failed for 域名 use http on port 80 - exiting此时容器仍可通过 80 端口的 HTTP 访问——这正对应开头说的DNS 不指向公网 IP 则签发失败的前提。启动后的验证方式README 的 Check 一节直接访问http://主机IP/或者配置了CUSTOM_DOMAIN时访问https://my.custom.domain/文档示例。Budibase UI 出现后会提示你创建第一个账号看到该提示即说明核心服务已就绪用docker ps查看容器状态。镜像定义了 HEALTHCHECK间隔 15s、超时 15s、启动宽限期 300s刚启动的一段时间内不要误判为不健康用docker logs budibase查看日志证书申请成功或失败的信息都在这里。容器内部的健康检查逻辑见 hosting/single/healthcheck.sh它依次探测本机根路径、后端4001/health、worker4002/health、CouchDB5984/_up、Redis PING 以及nginx -tLiteLLM4000/health/liveliness探测失败只输出 WARNING 而不判为不健康意味着 AI 功能不可用时其他部分仍可运行。常见问题与限制证书签发失败先核对自定义域名的 DNS 是否已指向运行 Budibase 的公网 IP日志中出现上述ERROR: certbot request failed时按提示改用 80 端口 HTTP 访问并修正 DNS 后等续期任务再次触发或重启容器重新触发申请。容器构建或运行不符合预期README 要求在提支持问题前先执行docker ps和docker logs budibase两项检查并提供操作系统版本、docker / docker-compose / yarn / node / lerna 版本构建错误附打包输出、容器错误附打包日志。构建平台文档指引基于 Debian 11 与 AlmaLinux 8其他系统需要自行改写安装命令。成熟度README 明确说明单镜像构建仍是 work-in-progress遇到无法定位的问题时按上文 Support 一节的要求提供信息。完成以上步骤后成功的最终形态是docker ps显示容器健康浏览器通过https://你的域名/能打开 Budibase 并进入建账号页面证书本身由容器内的续期任务自动维护日常无需手动干预。【免费下载链接】budibaseAI agents, automations and apps that run your operations. Model agnostic.项目地址: https://gitcode.com/GitHub_Trending/bu/budibase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考