在线协同表格SeaTable(安装篇)

2025-08-07 15:08:42

什么是 SeaTable ?

SeaTable 是一款新一代的在线协同表格。它支持“文件”、“图片”、“单选项”、“多选项”、“协作人”等丰富的数据类型。它帮助你方便的记录和管理各种零散的信息,并按照你的所需进行扩展,实现数据处理的自动化和业务流程的自动化。

SeaTable 最初由 Seafile 团队 (https://github.com/haiwen/seafile) 构建,准备将在线协作表格功能添加到 Seafile ,后来成为了一个单独的项目,暂时尚未开源,但是按官方说法,源代码将在以后上传到 GitHub。

SeaTable 由以下组件组成

dtable-web:用于管理表的网站。

dtable-server:存储表并提供协作功能。

dtable-events:后台任务,例如电子邮件发送等。

seaf-server:存储附件(文件和图像)

下图显示了不同组件如何协同工作:

MariaDB,Memcache 和 Redis 在各自的 Docker 容器中运行。

Redis 用于将消息从 dtable-web / dtable-server 发送到 dtable-events

所有组件都使用 Memcache 来存储缓存,并使用 MariaDB 来存储永久信息。

基础数据保存在 dtable-server 中,并定期保存到文件/对象存储中以进行持久存储。

附件保存在文件/对象存储中

SeaTable 有三个版本

开发人员版:适用于希望将 SeaTable 用作数据库并大量使用 API 和脚本的用户。开发人员版对存储,行号和 API 调用没有限制,但最多可以支持 dtable-server 的 200 个并发连接。

云版本:适用于希望将 SeaTable 用作协作工具的用户。它对存储,行数和 API 调用有限制。

企业版:对存储,行数和 API 调用几乎没有限制,并具有高级权限和用户管理功能。它适用于大型团队以两种方式使用 SeaTable 。用户可以在云中使用它,也可以自行托管。

SeaTable 官方文档要求 4 核和 8GB RAM,这个要求对我的小 NUC 来说有点挑战,但是还是值得一试的。

安装前期准备在 docker 文件夹中,创建一个新文件夹,并将其命名为 seatable,然后在 seatable 文件夹中再创建一个新的子文件夹命名为 mysql 。

在 mysql文件夹上右键–>属性,获取文件的 所在位置

MySQL 数据的卷目录将用到这个路径

在 seatable文件夹上右键–>属性,获取文件的 所在位置

SeaTable 数据的卷目录将用到这个路径

下载和修改 docker-compose.yml下载 docker-compose.yml 文件到 seatable 目录,下载地址:https://docs.seatable.cn/d/2af5c4bcb8e14f1b85f7/files/?p=/docker/seatable-ce/docker-compose.yml&dl=1

然后根据您的环境修改文件, 需要修改以下字段:

MySQL 的 root 的密码(MYSQL_ROOT_PASSWORD 和 DB_ROOT_PASSWD)【示例中设为了 aW53Tza,请根据您的需要设置,但是注意密码中不要有 % 号】

MySQL 数据的卷目录 (volume)【示例中设为了 /volume1/docker/seatable/mysql,这是前面建好的目录】

SeaTable 的镜像标签【示例中设为了 latest,目前最新的版本是 1.8.0】

SeaTable 数据的卷目录(volume)【示例中设为了 volume1/docker/seatable,这是前面建好的目录】

主机名(SEATABLE_SERVER_HOSTNAME),域名或者你的服务器的外部 IP【示例中设为了 192.168.0.199,这是我群晖的局域网 IP,请根据您的 IP 进行修改】

时区(可选)【示例中设为了 Asia/Shanghai】

下面是我修改过的样例:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849version: '2.0'services: db: image: mariadb:10.5 container_name: seatable-mysql environment: - MYSQL_ROOT_PASSWORD=aW53Tza - MYSQL_LOG_CONSOLE=true volumes: - /volume1/docker/seatable/mysql:/var/lib/mysql networks: - seatable-net memcached: image: memcached:1.5.6 container_name: seatable-memcached entrypoint: memcached -m 256 networks: - seatable-net redis: image: redis:5.0.7 container_name: seatable-redis networks: - seatable-net seatable: image: seatable/seatable:latest container_name: seatable ports: - "16080:80" - "16443:443" volumes: - /volume1/docker/seatable:/shared environment: - DB_HOST=db - DB_ROOT_PASSWD=aW53Tza - SEATABLE_SERVER_LETSENCRYPT=False - SEATABLE_SERVER_HOSTNAME=192.168.0.199 - TIME_ZONE=Asia/Shanghai depends_on: - db - memcached - redis networks: - seatable-netnetworks: seatable-net:

初始化数据库用 SSH 客户端连到群晖。

12# 进入 seatable 目录cd /volume1/docker/seatable

然后使用以下命令初始化数据库

1docker-compose up

注意:您应该在 docker-compose.yml 文件所在的目录中运行上述命令。

稍等片刻,下载镜像的时间取决于您的网络,我的网络不太好,过程中总是出现

1ERROR: net/http: TLS handshake timeout

如果报错,您可以再继续执行

1docker-compose up

对于已经下载完成的镜像,并不会重复下载,所以您可以当成是支持断点续传的。

当您在输出日志中看到 This is a idle script (infinite loop) to keep container running 时,数据库已初始化成功。

日志在 Docker –> 容器 –> SeaTable –> 详情 –> 日志

然后按键盘的 Ctrl + C 来结束初始化命令。

启动 Docker 容器使用以下命令启动 SeaTable 容器

1docker-compose up -d

在 Docker 中你能看到 4 个相关的容器已经启动了

启动 SeaTable 服务现在,您可以启动 SeaTable 服务并创建管理员账号

12345# 启动 SeaTable 服务docker exec -d seatable /shared/seatable/scripts/seatable.sh start# 创建一个管理员帐户docker exec -it seatable /shared/seatable/scripts/seatable.sh superuser

注意:

第一个命令使用 -d 参数表示要在后台运行的服务;第二个命令使用 -it 参数表示它是一个交互式命令;

接下来,您可以通过浏览器访问 SeaTable 网页了。

运行在浏览器中输入 http://群晖IP:16080,就可以看到登录界面了

用上一步创建的 superuser 的邮箱和密码登录,登录成功就可以看到主界面

设置中文右上角 Avatar –> Setting –> Language Setting 从下拉框中选择 简体中文

会自动刷新为中文界面

系统管理右上角 Avatar –> 进入系统管理

在这里可以对用户进行管理,添加插件等操作

表单编辑问题什么都正常,包括导入excel

虽然在导入时有时候会显示服务器忙

但是只要编辑就开始转圈,开始还我以为是我机器不行呢,直到朋友 Eduna 告诉我,他也一直在转圈,而我知道他的机器应该是没有性能瓶颈的

打开浏览器的调试模式,发现 dtable-server 的链接没有带端口

后来发现论坛里有人反馈了同样的问题: https://bbs.seatable.cn/t/topic/416

这需要修改 dtable_web_settings.py 文件中的 DTABLE_SERVER_URL、DTABLE_SOCKET_URL、DTABLE_WEB_SERVICE_URL、FILE_SERVER_ROOT,加上端口 16080

ccnet.conf 文件中的 SERVICE_URL 也需要加上端口 16080

这两个文件在 /docker/seatable/seatable/conf 目录中

保存后需要重启 SeaTable 服务

1docker exec -d seatable /shared/seatable/scripts/seatable.sh restart

然后就可以编辑了

周五将发布『在线协同表格SeaTable(设置篇)』,讲讲怎么导入和使用模板,敬请期待~

参考文档

seatable/seatable: SeaTable: easy like a spreadsheet, powerful like a database地址:https://github.com/seatable/seatable

jimzucker/upwork-seatable: Seatable Docker Deployment地址:https://github.com/jimzucker/upwork-seatable

SeaTable - 新一代在线协同表格和信息管理系统地址:https://seatable.cn/

SeaTable 使用手册地址:https://docs.seatable.cn/published/seatable-user-manual/home.md

使用 Docker 部署 SeaTable 开发者版地址:https://docs.seatable.cn/published/seatable-manual/docker/seatable-ce/Deploy%20SeaTable%20with%20Docker.md

最新发表
友情链接