Seafile 与 OnlyOffice 部署¶
以 Seafile 8.0.7(容器版)为例,说明如何部署 Seafile 并集成 OnlyOffice 在线文档编辑。
🟢部署步骤¶
1. 使用 docker-compose 部署¶
docker-compose.yml
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=1111111111
- MYSQL_LOG_CONSOLE=true
volumes:
- /root/seafile-mysql/db:/var/lib/mysql
networks:
- seafile-net
memcached:
image: memcached:1.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:10.0.1
container_name: seafile
volumes:
- /root/seafile-data:/opt/seafile/seafile-data-v2/
# 启动建议进去软连接:ln -s /opt/seafile/seafile-data-v2/ /opt/seafile/seafile-data
ports:
- "37881:80"
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=1111111111 # MySQL root 密码
- TIME_ZONE=Asia/Shanghai # 可选,默认 UTC,建议设置本地时区
- SEAFILE_ADMIN_EMAIL=me@example.com # 管理员邮箱
- SEAFILE_ADMIN_PASSWORD=BL5moOjPnU # 管理员密码
- SEAFILE_SERVER_LETSENCRYPT=false # 是否使用 letsencrypt 生成证书
- SEAFILE_SERVER_HOSTNAME=doc.tech.intra.nsfocus.com # 主机名
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
2. 链接 MySQL 的特殊设置¶
create user 'seafile'@'%' identified by '密码';
grant all privileges on *.* to 'seafile'@'%';
flush privileges;
3. 进入 Seafile 执行初始化¶
docker exec -it seafile bash
rm -rf seafile-server-latest ccnet
cd seafile-server-8.0.7 && ./setup-seafile-mysql.sh
# 按提示执行:先输入 MySQL 的 root 密码(compose 中设置),再输入 seafile 的密码(第 2 步设置的)
4. 重启¶
5. 部署 OnlyOffice¶
6. 联通 Seafile 与 OnlyOffice¶
修改 /opt/seafile/conf/seahub_settings.py,添加:
/opt/seafile/conf/seahub_settings.py
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = False
ONLYOFFICE_APIJS_URL = 'http{s}://{your OnlyOffice server's domain or IP}/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')
ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx')
ONLYOFFICE_JWT_SECRET = 'your-secret-string' # 自定义 secret
7. 启动服务并初始化用户¶
🟢常见问题¶
request-filtering-agent · JWT · X-Forwarded-* · client_max_body_size。OnlyOffice 预览、令牌、下载与 Seafile 大文件上传的典型故障。
OnlyOffice 预览失败¶
修改 /etc/onlyoffice/documentserver/default.json:
经 Nginx 反向代理时
注意保留 proxy_set_header Host $http_host;。
OnlyOffice 安全令牌失败¶
sed 是全局替换
该命令会把 local.json 中所有 true 都改成 false,执行前建议先备份原文件。
OnlyOffice 在 Nginx 后的文件下载失败¶
需正确转发 Host、X-Forwarded-* 等头部并放大超时,Nginx 反向代理配置见 Nginx 实战实例 中的 Seafile 实例。
上传大文件失败¶
除官方 Nginx 配置外,反向代理需额外调整:
proxy_pass http://10.44.16.249:8800/;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
🟢定制¶
修改默认登录页面¶
自定义文件、文件夹删除功能¶
🟢版本说明¶
latest · seafile-mc:10.0.1。官方 latest 与固定 tag 的取舍。
2024-02-20
官方版本 latest 出现异常,按上述方法基本可解决启动失败问题。若不想处理,可使用 tag seafileltd/seafile-mc:10.0.1,该版本问题较少。