SeaDoc 是 Seafile 的一个扩展,提供在线协作文档编辑功能。
SeaDoc 的设计围绕以下核心理念:
- 直观且易用的编辑器
- 审阅与批准工作流程,更好地控制内容的变更
- 文档间链接,用于连接相关内容
- AI 集成,简化内容生成、摘要和管理
- 全面的 API,用于自动化文档生成和处理
SeaDoc 的使用场景包括:
- 编写产品和技术文档
- 创建知识库文章和在线手册
- 构建内部 Wiki
SeaDoc 架构

当用户在浏览器中打开 sdoc 文件时的工作流程:
- 如果文件内容已被缓存,SeaDoc 服务器会直接返回文件内容;否则,SeaDoc 服务器会向 Seafile 服务器发送请求。
- Seafile 服务器加载内容后,会将其发送给 SeaDoc 服务器,并同时写入缓存。
- SeaDoc 接收到内容后,会将其发送到浏览器。
部署SeaDoc
Docker 部署中的默认扩展:
在使用 Docker 部署 Seafile(单节点模式)时,该扩展会默认安装。
如果你想要移除它,可以撤销本节中的操作步骤(即在 COMPOSE_FILE 中移除 seadoc.yml,并将 ENABLE_SEADOC 设置为 false)。
部署 SeaDoc 最简单的方法是将它与 Seafile 服务器部署在同一主机上,并使用相同的 Docker 网络。如果在某些情况下,你需要单独部署 SeaDoc,可以按照以下步骤操作。
- 下载 seadoc.yml 到 /opt/seafile
wgethttps://manual.seafile.com/13.0/repo/docker/seadoc.yml
2.修改 .env 文件,将 seadoc.yml 添加到 COMPOSE_FILE,并启用 SeaDoc 服务器
COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml'
ENABLE_SEADOC=true
3.使用以下命令启动 SeaDoc 服务器
dockercomposeup-d
现在你可以使用 SeaDoc 了!
单独部署SeaDoc
如果您在集群中部署 Seafile,或者使用二进制包部署 Seafile,您可以按照以下步骤单独部署 SeaDoc 服务。
- 下载并修改.env和seadoc.yml文件到目录/opt/seadoc。
wgethttps://manual.seafile.com/13.0/repo/docker/seadoc/seadoc.yml
wget-O.envhttps://manual.seafile.com/13.0/repo/docker/seadoc/env
2.根据你的环境修改 .env 文件,下列字段需要修改:
变量名
描述
SEADOC_VOLUME
SeaDoc 数据卷目录
SEAFILE_MYSQL_DB_HOST
Seafile MySQL 主机
SEAFILE_MYSQL_DB_USER
Seafile MySQL 用户,默认是 seafile
SEAFILE_MYSQL_DB_PASSWORD
Seafile MySQL 密码
TIME_ZONE
时区
JWT_PRIVATE_KEY
JWT 密钥,与 Seafile .env 文件中配置相同
SEAFILE_SERVER_HOSTNAME
Seafile 主机名
SEAFILE_SERVER_PROTOCOL
http 或 https
3. (可选)默认情况下,SeaDoc 服务器会绑定到宿主机的 80 端口。如果端口已被其他服务占用,需要修改 SeaDoc 的监听端口:
services:
seadoc:
...
ports:
-"<your SeaDoc server port>:80"
...
4. 为 SeaDoc 服务器添加反向代理。在集群环境中,这意味着你需要在负载均衡器上添加反向代理规则。这里以 Nginx 为例(请将 127.0.0.1:80 替换为 SeaDoc 服务器的主机和端口)。
...
server{
...
location/sdoc-server/{
proxy_passhttp://127.0.0.1:80/;
proxy_redirectoff;
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-Forwarded-Host$server_name;
proxy_set_headerX-Forwarded-Proto$scheme;
client_max_body_size100m;
}
location/socket.io{
proxy_passhttp://127.0.0.1:80;
proxy_http_version1.1;
proxy_set_headerUpgrade$http_upgrade;
proxy_set_headerConnection'upgrade';
proxy_redirectoff;
proxy_buffers832k;
proxy_buffer_size64k;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerHost$http_host;
proxy_set_headerX-NginX-Proxytrue;
}}5. 使用以下命令启动 SeaDoc 服务器
dockercomposeup-d
6. 修改 Seafile 服务器的配置,并启动 SeaDoc 服务器。
⚠️ 注意
使用反向代理后,SeaDoc 服务将位于反向代理的 /sdoc-server 路径下,例如:
- 代理服务器主机:xxx.example.com
- SeaDoc 服务器:seadoc.example.com:8888
修改 Seafile服务器上的.env :
ENABLE_SEADOC=true
SEADOC_SERVER_URL=https://seafile.example.com/sdoc-server
重启seafile 服务:
dockercomposedown
dockercomposeup-d
SeaDoc 目录结构
/opt/seadoc-data
共享卷的占位符位置,您可以选择将某些持久性信息存储在容器之外,在我们的例子中,我们将各种日志文件和上传目录保留在容器之外。这使您可以轻松重建容器,而不会丢失重要信息。
- /opt/seadoc-data/logs:这是SeaDoc的日志目录。
SeaDoc 使用的数据库
SeaDoc 使用数据表seahub_db.sdoc_operation_log 来存储操作日志。