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
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 服务。
  1. 下载并修改.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 来存储操作日志。