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
# 13.0
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
# 12.0
wget https://manual.seafile.com/12.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 服务器
docker compose up -d
现在你可以使用 SeaDoc 了!
单独部署SeaDoc
如果您在集群中部署 Seafile,或者使用二进制包部署 Seafile,您可以按照以下步骤单独部署 SeaDoc 服务。
-
下载并修改 .env 和 seadoc.yml 文件到目录 /opt/seadoc 。
# 13.0
wget https://manual.seafile.com/13.0/repo/docker/seadoc/seadoc.yml
wget -O .env https://manual.seafile.com/13.0/repo/docker/seadoc/env
# 12.0
wget https://manual.seafile.com/12.0/repo/docker/seadoc/1.0/standalone/seadoc.yml
wget -O .env https://manual.seafile.com/12.0/repo/docker/seadoc/1.0/standalone/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_pass http://127.0.0.1:80/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100m;
}
location /socket.io {
proxy_pass http://127.0.0.1:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_redirect off;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}
5.
使用以下命令启动 SeaDoc 服务器
docker compose up -d
6.
修改 Seafile 服务器的配置,并启动 SeaDoc 服务器。
注意
使用反向代理后,SeaDoc 服务将位于反向代理的
/sdoc-server
路径下,例如:
代理服务器主机:
xxx.example.com
SeaDoc 服务器:
seadoc.example.com:8888
那么
SEADOC_SERVER_URL
应设置为:
http{s}://xxx.example.com/sdoc-server
修改 Seafile 服务器主机上的
.env
文件:
ENABLE_SEADOC=true
SEADOC_SERVER_URL=https://seafile.example.com/sdoc-server
然后重启 Seafile 服务器:
docker compose down
docker compose up -d
二进制部署方式的重启方式:
cd /opt/seafile/seafile-server-latest
./seahub.sh restart
SeaDoc目录结构
-
/opt/seadoc-data用于存放共享卷。你可以选择将某些持久化信息存储在容器外,例如日志文件,这样在重建容器时不会丢失重要信息。
-
/opt/seadoc-data/logsSeaDoc 日志目录
SeaDoc使用的数据库
SeaDoc 使用
seahub_db.sdoc_operation_log
数据表存储操作日志,该表会自动清理。
配置SeaDoc时常见问题
1. 打开 sdoc 时出现 "Server is disconnected. Reconnecting…"
原因:sdoc-server 的 websocket 未正确配置。
-
如果使用默认 Caddy 代理,应已正确配置。
-
如果使用自定义代理,需要确保将 your-sdoc-server-domain/socket.io 正确代理到 sdoc-server-docker-image-address/socket.io
2.
打开 sdoc 时出现 "Load doc content error"
原因:浏览器无法正确从 sdoc-server 加载内容。请确认:
-
.env 中 SEADOC_SERVER_URL 配置正确
-
浏览器能够访问 sdoc-server
-
可打开浏览器开发者工具进一步调试问题