SeaDoc

SeaDoc 是 Seafile 的一个扩展,提供在线协作文档编辑功能。
SeaDoc 的设计围绕以下核心理念:
  • 直观且易用的编辑器
  • 审阅与批准工作流程 ,更好地控制内容的变更
  • 文档间链接 ,用于连接相关内容
  • AI 集成 ,简化内容生成、摘要和管理
  • 全面的 API ,用于自动化文档生成和处理
SeaDoc 的使用场景包括
  • 编写产品和技术文档
  • 创建知识库文章和在线手册
  • 构建内部 Wiki
SeaDoc架构
当用户在浏览器中打开 sdoc 文件时的工作流程:
  1. 当用户在浏览器中打开一个 sdoc 文件时,一个文件加载请求将被发送到 Caddy,然后 Caddy 将请求代理到 SeaDoc 服务器(有关详细信息,请参阅 seafile 架构 )。
  2. 如果文件内容已被缓存,SeaDoc 服务器会直接返回文件内容;否则,SeaDoc 服务器会向 Seafile 服务器发送请求。
  3. Seafile 服务器加载内容后,会将其发送给 SeaDoc 服务器,并同时写入缓存。
  4. SeaDoc 接收到内容后,会将其发送到浏览器。
部署SeaDoc
Docker 部署中的默认扩展: 在使用 Docker 部署 Seafile(单节点模式)时,该扩展会默认安装。
如果你想要移除它,可以撤销本节中的操作步骤(即在 COMPOSE_FILE 中移除 seadoc.yml ,并将 ENABLE_SEADOC 设置为 false )。
部署 SeaDoc 最简单的方法是将它与 Seafile 服务器部署在同一主机上,并使用相同的 Docker 网络。如果在某些情况下,你需要单独部署 SeaDoc,可以按照以下步骤操作。
  1. 下载 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 服务。
  1. 下载并修改 .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/logs
    SeaDoc 日志目录
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
  • 可打开浏览器开发者工具进一步调试问题