SeaDoc 是一个在线协同文档,并有文档的流程管理功能。
SeaDoc 围绕以下的关键想法进行设计:
富有表现力的并且易于使用的编辑器
审阅和批准工作流,可更好地控制文档内容的修改
可以链接相关的文档
AI 集成,以简化内容生成和管理
丰富的 API,可以用于自动化文档生成和处理
SeaDoc 的使用场景包括:
产品和技术文档的撰写
创建知识库文章和在线手册
构建团队内部维基
只有 Seafile 11.0 版本或者更高版本,才支持集成 SeaDoc 。
SeaDoc 有三种部署方法:
在新主机上部署 SeaDoc。
SeaDoc 和 Seafile 部署在同一主机上。
SeaDoc 和 Seafile docker 部署在同一主机上
根据您需要的版本,下载 docker-compose.yml 文件,然后根据您的环境修改文件,需要修改以下字段:
MySQL 主机 (DB_HOST)
MySQL 端口 (DB_PORT)
MySQL 用户 (DB_USER)
MySQL 密码 (DB_PASSWD)
SeaDoc 数据的卷目录(卷)
SeaDoc 服务网址 (SDOC_SERVER_HOSTNAME)
seafile 服务网址 (SEAHUB_SERVICE_URL)
SeaDoc 和 Seafile 共享 MySQL 服务。
在 Seafile MySQL 中创建数据库 sdoc_db 并授权用户:
create database if not exists sdoc_db charset utf8mb4;
GRANT ALL PRIVILEGES ON `sdoc_db`.* to `seafile`@`%.%.%.%`;
请注意:SeaDoc 只会创建一个用来存储操作日志的数据库表
根据您需要的版本,下载 docker-compose.yml 文件,然后根据您的环境修改文件,需要修改以下字段:
MySQL 主机 (DB_HOST)
MySQL 端口 (DB_PORT)
MySQL 用户 (DB_USER)
MySQL 密码 (DB_PASSWD)
SeaDoc 数据的卷目录(卷)
SeaDoc 服务网址 (SDOC_SERVER_HOSTNAME)
seafile 服务网址 (SEAHUB_SERVICE_URL)
额外修改:prots
sdoc-server:
...
ports:
# - "80:80"
# - "443:443"
- "7070:7070"
- "8888:8888"
......
SeaDoc 和 Seafile 共享 MySQL 服务。
在 Seafile MySQL 中创建数据库sdoc_db并授权用户。
create database if not exists sdoc_db charset utf8mb4;
GRANT ALL PRIVILEGES ON `sdoc_db`.* to `seafile`@`%.%.%.%`;
将以下内容添加到 :seafile.nginx.conf
location /sdoc-server/ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
return 204;
}
proxy_pass http://sdoc-server:7070/;
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://sdoc-server:7070;
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;
}
nginx -s reload
然后按照下面的操作 启动 SeaDoc
将 SeaDoc docker-compose.yml 内容添加到 Seafile docker-compose.yml 中:
services:
...
seafile:
...
sdoc-server:
image: seafileltd/sdoc-server:latest
container_name: sdoc-server
ports:
# - 80:80
# - 443:443
- 7070:7070
- 8888:8888
volumes:
- /opt/seadoc-data/:/shared
environment:
- DB_HOST=db
- DB_PORT=3306
- DB_USER=seafile
- DB_PASSWD=password # Requested, password of MySQL service.
- DB_NAME=sdoc_db
- TIME_ZONE=Etc/UTC # Optional, default is UTC. Should be uncomment and set to your local time zone.
- SDOC_SERVER_LETSENCRYPT=false # Whether to use https or not.
- SDOC_SERVER_HOSTNAME=sdoc-server.example.com # Specifies your host name if https is enabled.
- SEAHUB_SERVICE_URL=http://seafile.example.com
networks:
- seafile-net
SeaDoc 和 Seafile 共享 MySQL 服务。
在 Seafile MySQL 中创建数据库sdoc_db。
create database if not exists sdoc_db charset utf8mb4;
GRANT ALL PRIVILEGES ON `sdoc_db`.* to `seafile`@`%.%.%.%`;
将以下内容添加到 :seafile.nginx.conf
location /sdoc-server/ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
return 204;
}
proxy_pass http://sdoc-server:7070/;
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://sdoc-server:7070;
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;
}
nginx -s reload
然后按照下面的操作 启动 SeaDoc
使用以下命令启动 SeaDoc 服务
docker-compose up -d
等待几分钟程序初始化完成后,查看配置文件 /opt/seadoc-server/sdoc-server/conf/sdoc_server_config.json
,记录下 private_key 的内容,稍后用于编辑 Seafile 配置文件。
修改seahub_settings.py:
ENABLE_SEADOC = True
SEADOC_PRIVATE_KEY = '***' # 必须和SeaDoc的conf/sdoc_server_config.json里一致
SEADOC_SERVER_URL = 'http://sdoc-server.example.com' # sdoc-server service url
# 当 SeaDoc 和 Seafile/Seafile docker 部署在同一主机上时,SEADOC_SERVER_URL 应为http://seafile.example.com/sdoc-server
FILE_CONVERTER_SERVER_URL = 'https://sdoc-server.example.com/seadoc-converter' #转换器服务器ur
#当SeaDoc和Seafile部署在同一主机上时,FILE_CONVERTER_SERVER_URL= 'http://127.0.0.1:8888'
#当SeaDoc和Seafile docker部署在同一主机上时,FILE_CONVERTER_SERVER_URL= 'http://sdoc-server:8888'
cd seafile-server-latest/
./seafile.sh restart
./seahub.sh restart
然后您可以开始使用 SeaDoc 了
sdoc-server:
...
ports:
- "80:80"
- "443:443"
...
environment:
...
- SDOC_SERVER_LETSENCRYPT=true ## 开启 letsencrypt 自动签名 ssl证书
- SDOC_SERVER_HOSTNAME=sdoc-server.seafile.com
SeaDoc数据的卷目录是:/opt/seadoc-data
创建一个文件夹,并将您的证书和私钥放在 SSL 目录下:/opt/seadoc-data/ssl
按照如下示例修改 Nginx 的配置文件/opt/seadoc-data/sdoc-server/conf/nginx.conf 请不要更改该配置文件的文件名.
server {
listen 80;
server_name example.seafile.com default_server;
location / {
rewrite ^ https://$host$request_uri? permanent;
}
}
server {
listen 443;
ssl on;
ssl_certificate /shared/ssl/your-ssl-crt.crt;
ssl_certificate_key /shared/ssl/your-ssl-key.key;
........
重新加载 Nginx 的配置文件:docker exec -it sdoc-server /usr/sbin/nginx -s reload
/opt/seadoc-data
共享卷的占位符位置,您可以选择将某些持久性信息存储在容器之外,在我们的例子中,我们将各种日志文件和上传目录保留在容器之外。这使您可以轻松重建容器,而不会丢失重要信息。
/opt/seadoc-data/sdoc-server:这是 SeaDoc 服务器配置和数据的目录。
/opt/seadoc-data/nginx-logs:这是nginx日志的目录。
/opt/seadoc-data/ssl:这是证书的目录,默认情况下不存在。
docker pull seafileltd/sdoc-server:latest
docker-compose down
docker-compose up -d
从 SeaDoc 1.0 开始,我们建议您使用 .env 和 docker-compose.yml 进行配置。
根据您需要的版本,下载 .env 和 docker-compose.yml 文件。然后修改 .env 文件(文件名包括符号'.')。
由于 1.0 版本与旧数据库表不兼容,因此需要将 DB_NAME 更改为 seahub_db。
.env
SEADOC_MYSQL_DB_NAME=seahub_db
conf/sdoc_server_config.json
"database": "seahub_db"
最后重启 SeaDoc。
Last modified by 马宇航, 2024-08-23