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
wget https://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 服务器
docker compose up -d
现在你可以使用 SeaDoc 了!
单独部署SeaDoc
如果您在集群中部署 Seafile,或者使用二进制包部署 Seafile,您可以按照以下步骤单独部署 SeaDoc 服务。
-
下载并修改 .env 和 seadoc.yml 文件到目录 /opt/seadoc 。
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
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
修改 Seafile服务器上的
.env
:
ENABLE_SEADOC=true
SEADOC_SERVER_URL=https://seafile.example.com/sdoc-server
重启seafile 服务:
docker compose down
docker compose up -d
SeaDoc 目录结构
/opt/seadoc-data
共享卷的占位符位置,您可以选择将某些持久性信息存储在容器之外,在我们的例子中,我们将各种日志文件和上传目录保留在容器之外。这使您可以轻松重建容器,而不会丢失重要信息。
-
/opt/seadoc-data/logs:这是SeaDoc的日志目录。
SeaDoc 使用的数据库
SeaDoc 使用数据表
seahub_db.sdoc_operation_log
来存储操作日志。