Baserow 自建:开源的 Airtable 替代品,无代码数据库

0 阅读2分钟

Baserow 自建:开源的 Airtable 替代品,无代码数据库

Airtable 是一款把电子表格和数据库结合在一起的产品,但按行收费、数据存在别人服务器。Baserow 是完全开源的 Airtable 替代品,自己部署就能用,数据完全自控,功能覆盖 Airtable 80% 的使用场景。这篇文章讲如何用 Docker Compose 搭建 Baserow。

Baserow 能做什么

  • 灵活的表格视图:网格、画廊、表单、看板、日历多种视图
  • 字段类型丰富:文本、数字、日期、选项、关联字段、文件附件、公式等
  • 实时协作:多人同时编辑,变更实时同步
  • API 自动化:每个数据库自动生成 REST API,可以和 n8n、Make 等集成
  • 自定义表单:生成公开表单收集数据
  • 权限控制:团队成员按角色分配权限

服务器要求

  • 2 核 CPU,4GB 内存(推荐)
  • 20GB 硬盘

雨云服务器 rainyun+ com的 2 核 4G 机型完全够用,个人或小团队使用非常流畅。注册填优惠码 2026off 领 5 折优惠券。

Docker Compose 部署

# 安装 Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

mkdir -p ~/baserow && cd ~/baserow

创建 docker-compose.yml

version: "3.8"

services:
  baserow:
    image: baserow/baserow:latest
    container_name: baserow
    environment:
      BASEROW_PUBLIC_URL: "https://baserow.你的域名.com"
      SECRET_KEY: "替换为随机32字符字符串"
      DATABASE_URL: "postgresql://baserow:baserow_password@db/baserow"
      REDIS_URL: "redis://redis:6379"
      EMAIL_SMTP: "false"          # 不配置邮件时设为 false
      DISABLE_ANONYMOUS_PUBLIC_VIEW: "false"
    volumes:
      - baserow_data:/baserow/data
    ports:
      - "127.0.0.1:8000:8000"      # 只监听本地,通过 Caddy 反代
    depends_on:
      - db
      - redis
    restart: unless-stopped

  db:
    image: postgres:15-alpine
    container_name: baserow-db
    environment:
      POSTGRES_DB: baserow
      POSTGRES_USER: baserow
      POSTGRES_PASSWORD: baserow_password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    container_name: baserow-redis
    restart: unless-stopped

  caddy:
    image: caddy:alpine
    container_name: caddy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    restart: unless-stopped

volumes:
  baserow_data:
  postgres_data:
  caddy_data:
  caddy_config:

创建 Caddyfile

baserow.你的域名.com {
    reverse_proxy baserow:8000
}

生成 SECRET_KEY:

python3 -c "import secrets; print(secrets.token_hex(32))"
# 把输出的字符串填入 docker-compose.yml 的 SECRET_KEY

启动服务:

docker compose up -d

# 查看启动日志(首次启动需要 1-2 分钟初始化数据库)
docker compose logs -f baserow

初始配置

访问 https://baserow.你的域名.com,注册第一个账号即为管理员。

创建工作区和数据库的步骤:

  1. 点击左侧「Add workspace」创建工作区
  2. 在工作区内点击「Add database」
  3. 开始创建表格

常见使用场景

场景一:项目任务管理

创建任务追踪数据库:

字段设计:
- 任务名称(文本)
- 负责人(关联用户字段)
- 状态(单选:待开始/进行中/已完成/已搁置)
- 优先级(单选:高/中/低)
- 截止日期(日期)
- 关联项目(关联字段 → 项目表)
- 描述(长文本)

视图:
- 全部任务(网格视图)
- 看板(按状态分组)
- 我的任务(按负责人过滤)
- 本周截止(按日期过滤)

场景二:内容管理/CMS

字段设计:
- 标题(文本)
- 内容(长文本/Rich Text)
- 分类(多选)
- 状态(单选:草稿/审核中/已发布)
- 发布时间(日期)
- 封面(文件字段)
- 作者(关联字段)

场景三:客户关系管理

字段设计:
- 公司名(文本)
- 联系人(文本)
- 邮箱(邮件字段)
- 电话(电话字段)
- 阶段(单选:线索/跟进中/成交/流失)
- 金额(数字)
- 下次跟进(日期)
- 备注(长文本)

使用 REST API

Baserow 自动为每个数据库生成 API,可以在「API」文档页面查看:

# 获取 API Token
# Settings → API Tokens → Create token

# 查询数据
curl -X GET \
  "https://baserow.你的域名.com/api/database/rows/table/你的表ID/?user_field_names=true" \
  -H "Authorization: Token 你的API_Token"

# 创建一行数据
curl -X POST \
  "https://baserow.你的域名.com/api/database/rows/table/你的表ID/?user_field_names=true" \
  -H "Authorization: Token 你的API_Token" \
  -H "Content-Type: application/json" \
  -d '{"任务名称": "完成产品原型", "状态": "进行中"}'

邮件配置(可选)

如果需要邀请成员或发送通知邮件:

# 在 docker-compose.yml 里添加邮件配置
environment:
  EMAIL_SMTP: "true"
  EMAIL_SMTP_HOST: "smtp.example.com"
  EMAIL_SMTP_PORT: "587"
  EMAIL_SMTP_USE_TLS: "true"
  EMAIL_SMTP_USER: "noreply@example.com"
  EMAIL_SMTP_PASSWORD: "你的邮件密码"
  FROM_EMAIL: "noreply@example.com"

备份数据

cat > ~/baserow/backup.sh << 'EOF'
#!/bin/bash

BACKUP_DIR=~/baserow-backups
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

# 备份 PostgreSQL
docker exec baserow-db pg_dump -U baserow baserow | \
  gzip > "$BACKUP_DIR/db-$DATE.sql.gz"

# 备份上传的文件
docker run --rm \
  -v baserow_data:/data \
  -v "$BACKUP_DIR":/backup \
  alpine tar czf "/backup/files-$DATE.tar.gz" /data/media

# 保留最近 14 天
find "$BACKUP_DIR" -name "*.gz" -mtime +14 -delete

echo "[$(date)] 备份完成"
EOF

chmod +x ~/baserow/backup.sh
(crontab -l 2>/dev/null; echo "0 2 * * * ~/baserow/backup.sh") | crontab -

升级 Baserow

cd ~/baserow
docker compose pull
docker compose up -d

Baserow 是一个功能完整的无代码数据库平台,对于不想依赖 Airtable 的团队来说是理想的替代方案。自托管意味着数据完全自控,不会因为 Airtable 调整价格或政策而被动。在 雨云服务器 rainyun+com的 2 核 4G 机型上,小团队日常协作毫无压力,注册填优惠码 2026off 领 5 折优惠券,成本远低于 Airtable 订阅费。