什么是 Teable ?
Teable
是一个基于Postgres
构建的超快速、实时、专业、开发人员友好的无代码数据库。它使用简单的、类似电子表格的界面来创建复杂的企业级数据库应用程序。通过无代码解锁高效的应用程序开发,摆脱数据安全性和可扩展性的障碍。
下面👇是官方提供的演示视频,有助于我们理解软件的用途
Teable 功能演示
安装
ghcr.io 镜像下载
官方的镜像没有发布在 docker hub
,而是在 ghcr.io
,所以直接用命令行来安装。
镜像 teable
软件的更新相当频繁,基本上几个小时就会更新一版,老苏最后折腾的版本为
sha-7e222cb
,完整的版本号可能是1.0.0-alpha+build.268.sha-7e222cb
在 SSH
客户端中依次执行下面的命令
# 下载镜像
docker ghcr.io/teableio/teable:latest
如果没有科学上网,很可能会拉不动,可以试试 docker
代理网站:https://dockerproxy.com/,但是会多几个步骤
# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/teableio/teable:latest
# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/teableio/teable:latest ghcr.io/teableio/teable:latest
# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/teableio/teable:latest
镜像 teable-db-migrate
版本和 teable
是一样的
从名字看,应该是初始化数据库中数据的,在任务完成后,会自动停止
下载过程是一样的,这里就不赘述了
当然代理网站也不是什么时候都好使,有时候也会报错,例如下面👇这样的
Error response from daemon: received unexpected HTTP status: 500 Internal Server Error
所以有一个稳定的科学上网环境还是很重要的
环境变量文件
从 3
月 16
号开始折腾。一开始官方 standalone
部署方式的 .env
是下面这样
TIMEZONE=UTC
POSTGRES_DB=example
POSTGRES_USER=example
POSTGRES_PASSWORD=standalone_replace_password
PUBLIC_ORIGIN=http://localhost:3000
3
月 18
号发现已经变成下面这样了
TIMEZONE=UTC
# Postgres
POSTGRES_HOST=teable-db
POSTGRES_PORT=5432
POSTGRES_DB=example
POSTGRES_USER=example
POSTGRES_PASSWORD=example-password
# App
PUBLIC_ORIGIN=http://127.0.0.1
PRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
PUBLIC_DATABASE_PROXY=127.0.0.1:42345
# Need to support sending emails to enable the following configurations
# You need to modify the configuration according to the actual situation, otherwise it will not be able to send emails correctly.
#BACKEND_MAIL_HOST=smtp.teable.io
#BACKEND_MAIL_PORT=465
#BACKEND_MAIL_SECURE=true
#BACKEND_MAIL_SENDER=noreply.teable.io
#BACKEND_MAIL_SENDER_NAME=Teable
#BACKEND_MAIL_AUTH_USER=username
#BACKEND_MAIL_AUTH_PASS=password
所以如果你下决心折腾,需要仔细阅读最新的官方文档。https://github.com/teableio/teable/tree/develop/dockers/examples/standalone
老苏折腾时, env.txt
内容如下
TIMEZONE=Asia/Shanghai
# Postgres
POSTGRES_HOST=teable-db
POSTGRES_PORT=5432
POSTGRES_DB=example
POSTGRES_USER=example
POSTGRES_PASSWORD=standalone_replace_password
# App
PUBLIC_ORIGIN=http://192.168.0.197:3091
PRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
PUBLIC_DATABASE_PROXY=192.168.0.197:42345
# Need to support sending emails to enable the following configurations
# You need to modify the configuration according to the actual situation, otherwise it will not be able to send emails correctly.
#BACKEND_MAIL_HOST=smtp.teable.io
#BACKEND_MAIL_PORT=465
#BACKEND_MAIL_SECURE=true
#BACKEND_MAIL_SENDER=noreply.teable.io
#BACKEND_MAIL_SENDER_NAME=Teable
#BACKEND_MAIL_AUTH_USER=username
#BACKEND_MAIL_AUTH_PASS=password
其中 192.168.0.197
为群晖主机的 IP
docker compose 安装
安装涉及到 3
个容器,所以采用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3.9'
services:
teable:
image: ghcr.io/teableio/teable:latest
container_name: teable-app
restart: always
ports:
- '3091:3000'
volumes:
- ./data:/app/.assets:rw
env_file:
- env.txt
environment:
- TZ=${TIMEZONE}
- NEXT_ENV_IMAGES_ALL_REMOTE=true
depends_on:
- teable_db_migrate
teable_db:
image: postgres:15
container_name: teable-db
restart: always
ports:
- '42345:5432'
volumes:
- ./db:/var/lib/postgresql/data:rw
environment:
- TZ=${TIMEZONE}
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
healthcheck:
test: ['CMD-SHELL', "sh -c 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}'"]
interval: 10s
timeout: 3s
retries: 3
teable_db_migrate:
image: ghcr.io/teableio/teable-db-migrate:latest
container_name: teable-db-migrate
environment:
- TZ=${TIMEZONE}
- PRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@teable_db:5432/${POSTGRES_DB}
depends_on:
- teable_db
然后执行下面的命令
# 新建文件夹 teable 和 子目录
mkdir -p /volume1/docker/teable/{data,db}
# 进入 teable 目录
cd /volume1/docker/teable
# 将 .env和 docker-compose.yml 放入当前目录
# 一键启动
docker-compose --env-file env.txt up -d
https 协议
必须使用 https
协议访问,否则注册账号时会报 500 Internal Server Error
错误
老苏因为没有 vps
主机,所以目前采用的映射公网的方案主要有 2
种:
tailscale + npm
方案
文章传送门:用自定义域名访问tailscale节点
cloudflared tunnel + npm
方案
这两个方案都没有带端口,所以如果你遇到带端口的问题,就不要问老苏了,因为没有环境验证
域名 | 局域网地址 | 备注 |
---|---|---|
teable.laosu.tech | http://192.168.0.197:3091 | Teable 的访问地址 |
运行
启动后要稍等一段时间,第一次需要注册账号,所以在浏览器中输入 https://teable.laosu.tech
,当然你需要输入自己的域名
如果使用
http://群晖IP:3091
注册账号,浏览器的开发者工具中,除了会看到500 Internal Server Error
错误,还会显示The Cross-Origin-Opener-Policy header has been ignored, because the URL's origin was untrustworthy. It was defined either in the final response or a redirect. Please deliver the response using the HTTPS protocol. You can also use the 'localhost' origin instead.
,但是注册成功后,还是可以使用http://群晖IP:3091
访问的
登录成功后,默认已经有了一个工作空间
会有一个向导,介绍各按钮的功能
创建数据库
目前似乎只能建空白数据库
第一次还是有向导
单击左侧边栏上的+号以创建一个表
选择导入 excel
老苏用金山文档的向导建了一个带数据的文档,《人员信息统计表.xlsx》,下载地址:https://github.com/wbsu2003/synology/raw/main/Teable/人员信息统计表.xlsxx
开始上传
选择导入的列
导入成功之后,就可以操作表单了
软件默认支持中文,所以入门应该还是比较容易的
参考文档
teableio/teable: ✨ A Super fast, Real-time, Professional, Developer friendly, No code database
地址:https://github.com/teableio/teable
Teable - Postgres-Airtable Fusion
地址:https://teable.io/
teable/dockers/examples/standalone at develop · teableio/teable
地址:https://github.com/teableio/teable/tree/develop/dockers/examples/standalone