Linux上安装Baserow必须用docker-compose而非docker run,因其依赖前端、后端、PostgreSQL+Redis三个服务,需depends_on和healthcheck确保启动顺序;BASEROW_PUBLIC_URL须严格匹配根URL格式且不加尾部斜杠;数据目录需chown 1001:1001;邮件需配置SMTP而非console;restart: unless-stopped为生产必需。

Linux 上装 Baserow 不需要编译源码,也不用折腾 PostgreSQL 环境——它官方只提供 Docker 镜像,docker-compose 一条命令就能拉起完整服务。但直接 docker run 容易挂掉、BASEROW_PUBLIC_URL 配错就打不开网页、数据目录权限不对会导致启动失败——这些才是真卡点。
为什么必须用 docker-compose 而不是 docker run
docker run 启动单容器看似简单,但 Baserow 实际依赖三个服务:Web 前端、Django 后端、PostgreSQL 数据库(还带 Redis)。官方镜像 baserow/baserow 是个“all-in-one”打包版,内部已集成 DB 和缓存,但它对宿主机的文件系统权限、网络配置、环境变量顺序极其敏感。
-
docker run没法声明服务依赖顺序,PostgreSQL 可能还没 ready,Django 就去连,结果容器反复重启 - 日志全堆在
docker logs baserow里,DB 启动失败和 Django 连接超时混在一起,排查困难 -
docker-compose的depends_on+healthcheck能强制等待 DB 就绪再启动应用,这是稳定运行的前提
BASEROW_PUBLIC_URL 配错的典型现象和修正方法
浏览器打开 http://192.168.0.197:4180 显示空白页或 502,控制台报 Failed to load resource: the server responded with a status of 404 (Not Found),大概率是 BASEROW_PUBLIC_URL 设错了。
- 必须以
http://或https://开头,末尾不能加斜杠,例如http://192.168.0.197:4180✅,http://192.168.0.197:4180/❌ - 如果是公网访问,得填域名如
https://baserow.example.com,而不是内网地址 - 改完后必须执行
docker-compose down && docker-compose up -d,仅docker-compose restart不生效
数据目录权限问题导致容器启动失败
第一次运行 docker-compose up -d 报错:Permission denied: '/baserow/data' 或日志里反复出现 psql: error: connection to server at "localhost" (::1), port 5432 failed,说明容器内进程无法写入挂载卷。
- Baserow 容器默认以 UID/GID
1001运行,宿主机对应目录所有者必须是1001,或至少对该 UID 开放读写 - 别用
sudo chown -R $USER:$USER ./data,因为$USER通常是1000,而容器要的是1001 - 正确做法:
sudo mkdir -p ./data && sudo chown -R 1001:1001 ./data - 如果用群晖等 NAS,需在 Docker 图形界面中手动设置“用户/组 ID”为
1001
最常被忽略的其实是 BASEROW_PUBLIC_URL 的结尾斜杠和数据目录的 UID 匹配——这两个点不解决,其他配置再对也进不了登录页。


















