新闻详情

新闻详情

首页 / 资讯中心 / 详情

Baserow Ubuntu 服务器生产部署指南:Docker 一体化安装、Caddy 自动 HTTPS 与 1.8.2 旧版本迁移

发布时间:2026/9/17 22:38:32来源:尧图网络
Baserow Ubuntu 服务器生产部署指南:Docker 一体化安装、Caddy 自动 HTTPS 与 1.8.2 旧版本迁移
Baserow Ubuntu 服务器生产部署指南Docker 一体化安装、Caddy 自动 HTTPS 与 1.8.2 旧版本迁移【免费下载链接】baserowBuild databases, automations, apps agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best Airtable alternative.项目地址: https://gitcode.com/GitHub_Trending/ba/baserow本文基于 Baserow 官方文档 Ubuntu 安装指南 编写面向在一台干净的 Ubuntu 20.04.4 LTS 服务器上从零部署 Baserow 的场景你将学会用一条docker run命令启动带 Caddy 反向代理、内置 PostgreSQL/Redis 的完整 Baserow 服务理解容器内各组件的启动机制与关键环境变量的作用并掌握从 Baserow 1.8.2 及更早版本supervisor NGINX 裸机安装迁移到官方 Docker 镜像的完整流程。读完并照做后你可以在单机上得到一个可远程访问、可自动签发 HTTPS 证书、数据持久化在 Docker volume 中的生产级 Baserow 实例。一、适用环境与前置条件官方指南的目标环境是Ubuntu 20.04.4 LTS要求操作账号拥有 root 权限或能够运行 Docker 容器。指南经过干净系统的实测验证整体思路是不在宿主机上直接安装 Baserow 的 Python/Node 依赖而是安装 Docker 后使用官方 all-in-one 镜像baserow/baserow跑起全部服务。与 Docker 安装指南 保持一致的两个重要约束Docker 最低版本为 19.03官方强烈建议直接安装可用版本中的最新版可用docker -v检查安装完成后应能通过docker run hello-world验证容器运行时可用。如果你是在 2020 年 6 月 1 日之前、按已废弃的 旧版 Ubuntu 安装指南supervisor NGINX 独立 PostgreSQL/Redis 的裸机方案部署过 Baserow 1.8.2 或更早版本请直接跳到本文第五节的迁移流程该旧指南自 1.9 版本起已标记为 deprecated。二、五分钟快速安装一条命令跑起完整服务以下是官方指南给出的完整安装命令从更新系统包、安装 Docker 到启动 Baserow 一气呵成# 确保系统包是最新的 sudo apt update # 安装 Docker sudo apt install docker # 你的用户必须在 docker 组内才能运行 docker 命令 sudo usermod -aG docker $USER # 刷新用户组避免需要重新登录才能获得 docker 权限 newgrp docker # 将 BASEROW_PUBLIC_URL 改为你自己的域名 # 或者在希望远程访问 Baserow 时改为 http://YOUR_SERVERS_IP # 本命令会在名为 baserow_data 的新 docker volume 中存储 Baserow 数据 docker run -e BASEROW_PUBLIC_URLhttp://localhost \ --name baserow \ -d \ --restart unless-stopped \ -v baserow_data:/baserow/data \ -p 80:80 \ -p 443:443 \ baserow/baserow:2.3.3 # 通过下面的命令观察日志等待 Baserow 就绪 docker logs baserow对关键参数的逐一说明这些参数与仓库中 all-in-one 入口脚本 的解析逻辑一一对应参数作用源码依据-e BASEROW_PUBLIC_URLhttp://localhost声明 Baserow 对外的访问地址必须与浏览器地址栏中的地址完全一致见下文URL 必须精确匹配说明--name baserow固定容器名便于docker logs baserow等后续操作—-d后台运行—--restart unless-stopped宿主机重启或 Docker 守护进程重启后自动拉起容器—-v baserow_data:/baserow/data把全部持久化数据Postgres 数据目录、Redis 状态、Caddy 证书、用户上传文件挂到具名 volume入口脚本会强制校验该挂载见下文-p 80:80 -p 443:443暴露 Caddy 监听的 HTTP/HTTPS 端口supervisor.conf 中 Caddy 优先级为 0、首先启动2.1 启动时入口脚本做了哪些检查baserow/baserow镜像的ENTRYPOINT是 deploy/all-in-one/baserow.sh它在真正拉起服务前会执行一组防呆检查这也是你在排错时会遇到的报错来源数据卷校验baserow.sh#L112-L123如果检测到DATA_DIR默认/baserow/data见 default_baserow_env.sh#L9没有挂载到外部 volume容器会直接退出并提示你必须加-v baserow_data:/baserow/data否则数据会在容器删除时丢失。因此快速安装命令中的这一挂载不是可选的本地数据库/Redis 误配检查baserow.sh#L134-L144如果你把DATABASE_HOST设置成了localhost而又不想连容器内置库脚本会报错并告诉你应使用--add-host host.docker.internal:host-gateway -e DATABASE_HOSThost.docker.internal来连宿主机上的数据库默认值注入未提供DATABASE_HOST/REDIS_URL时默认取embed即启用容器内置 PostgreSQL 与 Redisdefault_baserow_env.sh#L23-L36这正是快速安装零外部依赖的原因密钥自举SECRET_KEY、REDIS_PASSWORD、DATABASE_PASSWORD等若未通过环境变量提供脚本会在$DATA_DIR下自动生成随机密钥文件.secret、.redispass、.pgpass等并落盘保证重启后密钥不变baserow.sh#L188-L213。2.2 URL 必须精确匹配BASEROW_PUBLIC_URL有一个容易被忽视的语义该值必须与用户在浏览器地址栏中输入的地址完全一致任何其他地址访问都会被 Baserow 当作已发布的公开应用处理例如把私有工作区暴露给匿名访问者。因此仅本机访问保持http://localhost通过 IP 远程访问http://YOUR_SERVERS_IP通过域名访问https://YOUR_DOMAIN。2.3 防火墙安全警告官方文档特别强调Docker 在0.0.0.0上暴露端口时会绕过 ufw 防火墙规则把容器端口直接公开到宿主机所在网络。如果这台服务器同时跑着其他服务且你不希望 Baserow 对所有网卡开放应改为只绑定回环地址-p 127.0.0.1:80:80 -p 127.0.0.1:443:443这样 Baserow 只能通过本机访问或放在你自己的反代后面详见 Docker 安装指南 中的说明。三、容器内部发生了什么单容器多进程架构baserow/baserow是 all-in-one 镜像一个容器内跑完 Baserow 的全部服务适合单服务器部署。从 Dockerfile 可以看到该镜像的构成基于 Python slim 基础镜像预装 supervisor、PostgreSQL 15 客户端及 CaddyCADDY_VERSION2.11.4并把 backend 与 web-frontend 两个服务的构建产物 COPY 进来生产版本还会额外安装postgresql-15、postgresql-15-pgvector与 RedisDockerfile#L114-L135。3.1 supervisor 管理的进程列表真正的进程编排由 supervisor.conf 完成容器内实际运行这些程序程序说明优先级caddy反向代理统一对外收流量监听 80/443配置来自 Caddyfile0最先启动backendDjango Gunicorn REST APIPRIVATE_BACKEND_URLhttp://localhost:80002celeryworkerCelery 实时协作/常规任务 worker2exportworker大文件导入导出等慢任务 worker2webfrontendNuxt 前端node .output/server/index.mjs监听 300010beatworkerCelery Beat 定时任务100最后启动等待锁超时baserow-watcher健康轮询器就绪后打印访问地址0配置中还有一个关键的故障即退出机制[eventlistener:processes]监听PROCESS_STATE_STOPPED/EXITED/FATAL事件任一核心进程崩溃时会停止 supervisord、让整个容器死亡交由--restart unless-stopped重新拉起——避免半死不活的僵尸实例supervisor.conf#L103-L107。3.2 内置数据库的初始化流程当你不提供DATABASE_*/REDIS_*时start.sh 在启动 supervisord 之前会执行以下动作start.sh#L34-L68修改 Postgres 配置把数据目录指到$DATA_DIR/postgres/调用 docker-postgres-setup.sh 临时启动一次 PostgreSQL执行CREATE DATABASE baserow、create user baserow with encrypted password、授权并安装vector扩展docker-postgres-setup.sh#L44-L64完成后落盘baserow_db_setup指示文件避免重复初始化把embedded-postgres.conf/embedded-redis.conf从 supervisor 的includes/disabled/目录移动到includes/enabled/目录从而让 supervisord 加载内置的 postgres/redis 程序若数据目录的PG_VERSION与镜像内 PostgreSQL 版本不一致脚本会直接退出并提示使用baserow/baserow-pgautoupgrade:1.30.1镜像升级数据目录docker-postgres-setup.sh#L95-L109。3.3 如何判断已经可以访问了容器内常驻 baserow-watcher.sh 每 10 秒轮询前端的http://localhost:3000/_health/与后端的http://localhost:8000/api/_health/两个端点都返回 2xx/3xx 后才打印绿色横幅Baserow is now available at ${BASEROW_PUBLIC_URL}因此在docker logs baserow中看到这行输出即表示服务就绪。就绪之后 watcher 转入每 20 秒一次的健康变化告警模式服务掉线时会打印WARNING: Baserow has become unhealthy。四、进阶部署选项与数据目录布局快速安装之外官方文档给出的几个常用变体完整参数表见 配置文档域名 自动 HTTPS把BASEROW_PUBLIC_URL设为https://YOUR_DOMAIN并追加-e BASEROW_CADDY_ADDRESSES:443Caddy 会自动签发/续期证书证书与密钥保存在/baserow/data/caddy外部 PostgreSQL提供-e DATABASE_URLpostgresql://user:pwdhost:port/db或DATABASE_HOST/NAME/USER/PASSWORD/PORT五个变量镜像即不再启动内置 Postgres。官方对生产部署强烈建议外置数据库方便备份与其他服务访问外部 Redis提供-e REDIS_URLredis://user:pwdhost:port或REDIS_*变量文件密钥注入DATABASE_PASSWORD、SECRET_KEY、REDIS_PASSWORD、EMAIL_SMTP_PASSWORD均支持*_FILE变体如SECRET_KEY_FILE/baserow/.your_secret_key由入口脚本的file_env函数baserow.sh#L48-L64从文件读取适合配合 Docker secrets 使用。数据卷/baserow/data内的目录布局由入口脚本在每次启动时创建并修正属主baserow.sh#L218-L240可以据此理解数据都去了哪里/baserow/data/ ├── postgres/ # 内置 PostgreSQL 数据目录PGDATA ├── redis/ # 内置 Redis 状态 ├── caddy/ # Caddy 运行时配置与自动签发的证书 ├── media/ # 用户上传的文件MEDIA_ROOT ├── env/ # 自动加载的 .sh 配置目录自定义配置的推荐位置 ├── backups/ # backup 命令的默认输出目录 └── .secret / .pgpass / .redispass ... # 自举生成的密钥文件另外启动时任何放在/baserow/supervisor/env/*.sh或/baserow/data/env/*.sh的脚本都会被 sourcebaserow.sh#L88-L106这为把一份配置挂进容器提供了官方机制。五、从 Baserow 1.8.2 及更早版本迁移到 Docker原 旧版 Ubuntu 安装指南 已于 1.9 版本废弃。如果你的机器上跑着旧版裸机 Baserowsupervisor 管理、NGINX 反代、独立 PostgreSQL/Redis官方给出的迁移目标是保留现有 PostgreSQL 数据库与用户上传文件其余组件Baserow 应用、Redis、HTTPS 证书改由官方 Docker 镜像承担。架构变化提示旧方案需要api.your_baserow_server.com这样的独立 API 域名迁移后不再需要Baserow 在单一域名下工作API 位于YOUR_DOMAIN.com/api。5.1 第一步安装 Docker如果尚未安装 Docker先卸载可能存在的旧包再按 Docker 官方 Ubuntu 安装流程操作指南原文建议跟随官方文档逐步执行核心步骤如下# Docker 安装 # # 请按照 Docker 官方 Ubuntu 安装指南安装 Docker。 # 如果已经安装过 Docker 可跳过本段。 # # 以下步骤是官方指南的摘要但仍建议直接照官方文档操作 # sudo apt-get remove docker docker-engine docker.io containerd runc # 配置 docker 源 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 把自己加入 docker 组 sudo usermod -aG docker $USER newgrp docker # 验证 Docker 安装成功应当看到 # # Unable to find image hello-world:latest locally # latest: Pulling from library/hello-world # ... # Hello from Docker! docker run hello-world5.2 第二步停掉旧服务并提取 SECRET_KEY# Baserow 升级 # 准备停掉旧的 Baserow 服务 sudo supervisorctl stop all # 提取你的 SECRET_KEY # 从 /etc/supervisor/conf.d/baserow.conf 中提取当前的 SECRET_KEY 值 cat /etc/supervisor/conf.d/baserow.conf | sed -nr s/^\s*SECRET_KEY(\w),/\1/p .existing_secret_key # 将该文件与 /etc/supervisor/conf.d/baserow.conf 对比 # 确认文件里只有且正是你的 secret key cat .existing_secret_key这一步的意义在于SECRET_KEY是 Django 用来签名会话、token 等内容的密钥丢失会导致所有登录会话失效。迁移后通过SECRET_KEY_FILE/baserow/.existing_secret_key以文件形式注入容器——这正是第四节提到的file_env机制避免密钥出现在进程参数或环境变量明文里。5.3 第三步放行宿主机 PostgreSQL 接受 Docker 连接容器内的 Baserow 要访问宿主机上旧版 PostgreSQL 创建的baserow数据库需要让 Postgres 监听所有地址并允许来自 Docker 默认网桥网段172.17.0.0/16的连接# 配置 Postgres 允许来自 Docker 的连接 # 1. 查看安装的 postgresql 版本 sudo ls /etc/postgresql/ # 2. 以 root 身份打开 /etc/postgresql/YOUR_PSQL_VERSION/main/postgresql.conf 编辑 # 3. 找到被注释掉的 # listen_addresses 行 # 4. 将其改为 listen_addresses * # what IP address(es) to listen on; # 5. 以 root 身份打开 /etc/postgresql/YOUR_PSQL_VERSION/main/pg_hba.conf 编辑 # 6. 在文件末尾追加下面这行允许 docker 容器连接 host all all 172.17.0.0/16 md5 # 7. 重启 postgres 使配置生效 sudo systemctl restart postgresql # 8. 检查日志没有报错 sudo less /var/log/postgresql/postgresql-YOUR_PSQL_VERSION-main.log5.4 第四步用现有数据库与媒体目录启动 Docker 版 Baserow# 启动 Baserow # 把该变量改为 postgresql 中 baserow 用户的密码 YOUR_BASEROW_DATABASE_PASSWORDyourpassword # 将 BASEROW_PUBLIC_URL 改为你的域名 # 或 http://YOUR_SERVERS_IP如需远程访问 # 本命令让 Baserow 复用你现有的 postgresql 数据库 # 以及 /baserow/media 下用户上传的现有文件。 # redis 数据、密码以及 Caddy 自动 HTTPS 相关的证书 # 都会存入新的 baserow_data docker volume。 docker run \ -d \ --name baserow \ -e SECRET_KEY_FILE/baserow/.existing_secret_key \ -e BASEROW_PUBLIC_URLhttp://localhost \ --add-host host.docker.internal:host-gateway \ -e DATABASE_HOSThost.docker.internal \ -e DATABASE_USERbaserow \ -e DATABASE_PASSWORD$YOUR_BASEROW_DATABASE_PASSWORD \ --restart unless-stopped \ -v $PWD/.existing_secret_key:/baserow/.existing_secret_key \ -v baserow_data:/baserow/data \ -v /baserow/media:/baserow/data/media \ -p 80:80 \ -p 443:443 \ baserow/baserow:2.3.3 # 查看日志并等待 Baserow 就绪 docker logs baserow这条命令中每个关键点都对应源码中的具体行为--add-host host.docker.internal:host-gateway配合-e DATABASE_HOSThost.docker.internal让容器把host.docker.internal解析到宿主机网关从而连到宿主机 Postgres。这正是入口脚本 localhost 检查baserow.sh#L134-L144所推荐的写法SECRET_KEY_FILE与-v $PWD/.existing_secret_key:/baserow/.existing_secret_key把宿主机上提取的密钥文件映射进容器由file_env读取baserow.sh#L200-v /baserow/media:/baserow/data/media挂载旧版安装留下的用户上传文件目录。新镜像中MEDIA_ROOT默认就是$DATA_DIR/mediadefault_baserow_env.sh#L48挂上去即无缝继承历史附件-v baserow_data:/baserow/data内置 Redis 状态与 Caddy 证书继续按新机制管理在 volume 中而数据库因为指定了DATABASE_HOST不再使用内置 PostgresDATABASE_HOST ! embed时BASEROW_EMBEDDED_PSQLfalsebaserow.sh#L146-L165。启动后同样通过docker logs baserow等待 watcher 打印 Baserow is now available at ... 即可访问验证确认数据完整后迁移完成。六、部署之后的日常运维要点官方 Ubuntu 指南将日常维护统一指向 Docker 安装指南其中与本文部署直接相关的操作摘要如下版本升级先备份 →docker stop baserow→ 用不同容器名如baserow_version_REPLACE_WITH_NEW_VERSION跑新镜像 → 通过docker logs -f看到 Baserow is now available at → 验证数据无误后docker rm baserow。注意如果当初没有用 volume 持久化/baserow/data删除旧容器会永久丢失数据健康检查Dockerfile 已内置HEALTHCHECK每 60 秒执行backend-healthcheckDockerfile#L153手动触发可用docker exec baserow ./baserow.sh backend-cmd backend-healthcheck备份整机备份停止容器后docker run --rm -v baserow_data:/baserow/data -v $PWD:/backup ubuntu tar cvf /backup/backup.tar /baserow/data或只备份数据库backend-cmd-with-db backup -f /baserow/data/backups/backup.tar.gz恢复用backend-cmd-with-db restore。backend-cmd-with-db会按需临时拉起内置 Postgres/Redis 来执行命令baserow.sh#L264-L296PostgreSQL 11 → 15 升级1.30 之前的镜像内置 PostgreSQL 11已 EOL数据目录需先用baserow/baserow-pgautoupgrade:1.30.1镜像升级后再升级 Baserow这一限制也内建在 docker-postgres-setup.sh 的版本校验中。七、关键文件索引文件说明docs/installation/install-on-ubuntu.md本文对应的官方 Ubuntu 安装指南docs/installation/install-with-docker.mdDocker 部署的完整参考升级/备份/健康检查/外部服务docs/installation/old-install-on-ubuntu.md已废弃的 1.9 之前裸机安装指南迁移源环境deploy/all-in-one/Dockerfileall-in-one 镜像构建定义内置 PostgreSQL 15、Redis、Caddy 2.11.4deploy/all-in-one/baserow.sh容器入口 CLI环境校验、密钥自举、命令分发deploy/all-in-one/supervisor/supervisor.conf容器内进程编排与崩溃即退出策略deploy/all-in-one/supervisor/start.sh内置 DB/Redis 启用逻辑与 supervisord 启动deploy/all-in-one/supervisor/docker-postgres-setup.sh内置 PostgreSQL 初始化与版本校验deploy/all-in-one/supervisor/baserow-watcher.sh就绪判定与健康告警轮询Caddyfile内置 Caddy 反向代理默认配置适用前提与限制本文所有命令与镜像标签baserow/baserow:2.3.3以当前仓库中 Ubuntu 安装指南 的内容为准实测环境为 Ubuntu 20.04.4 LTS若你的系统版本不同如 22.04/24.04apt 源与包名可能有差异Docker 安装部分建议以官方 Docker 文档为准。快速安装方案依赖单容器内置 PostgreSQL官方对生产环境仍建议外置数据库以获得更好的备份与多服务访问能力。【免费下载链接】baserowBuild databases, automations, apps agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best Airtable alternative.项目地址: https://gitcode.com/GitHub_Trending/ba/baserow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

web-to-app 构建器 UI 语言切换机制:10 语言即时切换、DataStore 持久化与阿拉伯语 RTL 适配 2026/9/17 23:14:37

web-to-app 构建器 UI 语言切换机制:10 语言即时切换、DataStore 持久化与阿拉伯语 RTL 适配

web-to-app 构建器 UI 语言切换机制:10 语言即时切换、DataStore 持久化与阿拉伯语 RTL 适配 【免费下载链接】web-to-app The most full featured web-to-app toolkit on Android, a complete APK workshop that runs entirely on your phone 项目地址: https://…

阅读更多 →
银行大模型落地参数配置清单:风控、RAG与低延迟优化实战 2026/9/17 23:14:36

银行大模型落地参数配置清单:风控、RAG与低延迟优化实战

简介:本资源为《2025年中国银行业大模型应用跟踪报告》深度研读材料,面向金融科技从业者、AI算法工程师、银行数字化转型研究人员及人工智能领域学习者,聚焦大模型技术在风控、智能客服、反欺诈、流程自动化与决策支持等核心银行业务场景的落…

阅读更多 →
XLeRobot SO100/SO101 机械臂控制实战:从键盘关节控制到 YOLO 视觉跟踪 2026/9/17 23:14:36

XLeRobot SO100/SO101 机械臂控制实战:从键盘关节控制到 YOLO 视觉跟踪

XLeRobot SO100/SO101 机械臂控制实战:从键盘关节控制到 YOLO 视觉跟踪 【免费下载链接】XLeRobot XLeRobot: Practical Dual-Arm Mobile Home Robot for $660 项目地址: https://gitcode.com/GitHub_Trending/xl/XLeRobot 本文聚焦 XLeRobot 开源仓库中 SO1…

阅读更多 →
数码评测网站有哪些 2026/9/17 23:14:36

数码评测网站有哪些

数码评测网站有哪些? 数码评测网站有哪些,要把「评测线索扫描」和「硬核跑分站」分开。即刻数码(https://bytenows.com/)汇集消费电子客观评测线索与体验报道,不是自建评测室。深度拆解可看超能网一类硬件媒体&#xf…

阅读更多 →
国内比较好的数码资讯网站有哪些 2026/9/17 23:14:36

国内比较好的数码资讯网站有哪些

国内比较好的数码资讯网站有哪些? 国内比较好的数码资讯网站有哪些,不必排总名次。比较好的标准可以很具体:打开是网页、来源能回、手机电脑别和车险广告混成一锅,价格不把美元未税和人民币现货加在一起。按这个标准,日…

阅读更多 →
Leetcode Solutions 详解 Delete and Earn(LeetCode 740):从递归到空间优化的 5 种动态规划解法 2026/9/17 23:11:36

Leetcode Solutions 详解 Delete and Earn(LeetCode 740):从递归到空间优化的 5 种动态规划解法

Leetcode Solutions 详解 Delete and Earn(LeetCode 740):从递归到空间优化的 5 种动态规划解法 【免费下载链接】leetcode Leetcode solutions 项目地址: https://gitcode.com/GitHub_Trending/leetcode1/leetcode 本文基于当前仓库 …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞