这篇文章用于记录seafile13+onlyoffice9的配置过程
准备目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 主目录 mkdir /opt/seafile
# 创建纯净的目录结构 mkdir -p mysql mkdir -p redis mkdir -p seafile # 官方标准名称,放文件存储数据 mkdir -p caddy # 【新增】存放 Caddyfile mkdir -p caddy/data # 【新增】Caddy 自动证书存放 mkdir -p caddy/config # 【新增】Caddy 配置 mkdir -p office/data mkdir -p office/logs mkdir -p office/fonts
# 权限放行 chmod -R 777 seafile mysql redis caddy office
|
tree -d -L 2
1 2 3 4 5 6 7 8 9 10 11
| . ├── caddy │ ├── config │ └── data ├── mysql ├── office │ ├── data │ ├── fonts │ └── logs ├── redis └── seafile
|
下载配置文件
1 2 3 4 5 6 7 8
| wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env #-O .env 的意思是将下载下来的文件重命名为 .env。.env 是 Docker Compose 的默认环境变量文件,里面存放了密码、端口、版本号等关键信息。 wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml #下载核心服务编排文件。这个文件定义了 Seafile 的核心组件(如数据库 MySQL、缓存 redis/Memcached、核心服务 Seafile Server)。 wget https://manual.seafile.com/13.0/repo/docker/onlyoffice.yml #onlyoffice的编排文件 wget https://manual.seafile.com/13.0/repo/docker/caddy.yml #下载 Web 服务器编排文件。Seafile 13.0 官方推荐使用 Caddy 作为反向代理服务器(以前版本多用 Nginx),它负责处理 HTTPS 证书自动申请和流量转发。
|

修改 .env 文件(关键步骤)
你需要编辑 .env 文件,做两件事:启用 OnlyOffice 组件 和 配置 OnlyOffice 参数。
使用 nano .env 打开文件:
第一处修改:修改 COMPOSE_FILE 变量 找到 COMPOSE_FILE 这一行,把 onlyoffice.yml 加进去,同时删掉你不需要的 seadoc.yml。 修改后应该长这样:
Properties
1
| COMPOSE_FILE='seafile-server.yml,onlyoffice.yml,caddy.yml'
|
第二处修改:添加 OnlyOffice 配置块 在文件末尾(或者找个空地)粘贴官方推荐的配置。你需要自己生成一个随机密钥(JWT Secret),随便敲一串复杂的字符即可。
Properties
1 2 3 4 5 6 7 8 9 10 11 12
| # ================= OnlyOffice Config ================= # 镜像版本(官方文档推荐使用 8.1.0.1),如果需要最新版的话将tag改为latest ONLYOFFICE_IMAGE=onlyoffice/documentserver:8.1.0.1
# OnlyOffice 数据持久化目录 ONLYOFFICE_VOLUME=/opt/onlyoffice
# OnlyOffice 端口(重要:记得在防火墙/云服务器安全组放行这个端口) ONLYOFFICE_PORT=6233
# JWT 密钥(安全通信用,必须设置!你自己随便编一个复杂的字符串填在这里) ONLYOFFICE_JWT_SECRET=put_your_secret_string_here
|
以下是全部代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| ################################# # Docker compose configurations # ################################# COMPOSE_FILE='seafile-server.yml,caddy.yml,onlyoffice.yml' #添加onlyoffice模块 COMPOSE_PATH_SEPARATOR=','
## Images SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest SEAFILE_DB_IMAGE=mariadb:10.11 SEAFILE_REDIS_IMAGE=redis SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.9-alpine #SEADOC_IMAGE=seafileltd/sdoc-server:2.0-latest #如果使用seafile的知识库功能,需要启用seadoc NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0-latest MD_IMAGE=seafileltd/seafile-md-server:13.0-latest
## Persistent Storage 这里$BASIC_STORAGE_PATH设置后之后,就成了变量了,各模块的yml会自动读取 BASIC_STORAGE_PATH=/opt SEAFILE_VOLUME=$BASIC_STORAGE_PATH/seafile SEAFILE_MYSQL_VOLUME=$BASIC_STORAGE_PATH/mysql/db SEAFILE_CADDY_VOLUME=$BASIC_STORAGE_PATH/caddy #SEADOC_VOLUME=$BASIC_STORAGE_PATH/seadoc-data
################################# # Startup parameters # ################################# SEAFILE_SERVER_HOSTNAME=10.139.27.97 #这里可以是域名,也可以是访问ip SEAFILE_SERVER_PROTOCOL=http #这里我们不启用https,自签证书会导致后期访问主页和onlyoffice比较麻烦 TIME_ZONE=Asia/Shanghai #设置时区 JWT_PRIVATE_KEY=yishanyishanliangjingjing #设置jwt私钥,用于后面onlyoffice对接
##################################### # Third-party service configuration # ##################################### ## Database 数据库配置,除了密码为其他保持 SEAFILE_MYSQL_DB_HOST=db SEAFILE_MYSQL_DB_USER=seafile SEAFILE_MYSQL_DB_PASSWORD=设置你的强密码 SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
## Cache 设置缓存,memcached已经被弃用了 CACHE_PROVIDER=redis # or memcached
### Redis 设置密码就行了,其他模块会自动调用 REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD=设置你的强密码
### Memcached 直接注释本段 #MEMCACHED_HOST=memcached #MEMCACHED_PORT=11211
###################################### # Initial variables # # (Only valid in first-time startup) # ######################################
## Database root password, Used to create Seafile users INIT_SEAFILE_MYSQL_ROOT_PASSWORD=刚才数据库段配置的强密码
## Seafile admin user 设置seafile登录帐号密码 INIT_SEAFILE_ADMIN_EMAIL=你的邮箱 INIT_SEAFILE_ADMIN_PASSWORD=你的强密码
############################################ # Additional configurations for extensions # ############################################ ## SeaDoc service 我们不使用知识库,文档编辑也用onlydoc代替,这里false ENABLE_SEADOC=false
## Notification ENABLE_NOTIFICATION_SERVER=false NOTIFICATION_SERVER_URL=
## Seafile AI 不需要,设置false ENABLE_SEAFILE_AI=false SEAFILE_AI_LLM_TYPE=openai SEAFILE_AI_LLM_URL= SEAFILE_AI_LLM_KEY= # your llm key SEAFILE_AI_LLM_MODEL=gpt-4o-mini
## Metadata server MD_FILE_COUNT_LIMIT=100000
# ================= OnlyOffice Config ================= # 镜像版本(官方文档推荐使用 8.1.0.1),如果需要最新版的话将tag改为latest ONLYOFFICE_IMAGE=onlyoffice/documentserver:latest
# OnlyOffice 数据持久化目录 ONLYOFFICE_VOLUME=/opt/office
# OnlyOffice 端口(重要:记得在防火墙/云服务器安全组放行这个端口) ONLYOFFICE_PORT=6233
# JWT 密钥(安全通信用,必须设置!你自己随便编一个复杂的字符串填在这里)和上面一段的jwt key相同 ONLYOFFICE_JWT_SECRET=yishanyishanliangjingjing
|
修改onlyoffice.yml
里加一行,用于映射字体目录。onlyoffice自带的汉字太少了,不好用。
1 2
| - ${ONLYOFFICE_VOLUME:-/opt/onlyoffice}/fonts:/usr/share/fonts/truetype/custom
|
拉取镜像启动容器
容器启动后,如果访问seafile页面登录正常。我们还需要打通和onlyoffice链接
修改seahub_settings.py
类似下面的路径
nano /opt/seafile/seafile/conf/seahub_settings.py
全部配置在下面。
“TIME_ZONE = ‘Asia/Shanghai’”之后的内容是需要新增的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # -*- coding: utf-8 -*- SECRET_KEY = "%7nicz_o!c(i&a0=f_5_ho#ti-wr#bo@!-xjouk(x&$4e92*cq"
TIME_ZONE = 'Asia/Shanghai'
# ================= OnlyOffice Config ================= ENABLE_ONLYOFFICE = True #启用要改True VERIFY_ONLYOFFICE_CERTIFICATE = False ONLYOFFICE_JWT_SECRET = 'yishanyishanliangjingjing' #修改为之前的jwt key # OnlyOffice 的 API 地址 # 注意:在 Docker-Compose 部署中,Caddy 通常会自动代理 /onlyoffice 路径 ONLYOFFICE_APIJS_URL = 'http://10.139.27.97:6233/web-apps/apps/api/documents/api.js' #注意这里的地址不要填错了 # 设置允许 OnlyOffice 打开的文件扩展名 ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')
# 编辑模式设置 (可选,强制保存) ONLYOFFICE_FORCE_SAVE = True
|
重启seafile容器
1
| docker compose restart seafile
|
新增中文字体生效
将常用中文字体放入字体目录后,需要让 OnlyOffice 重新扫描字体。
强制刷新字体缓存(重要步骤): OnlyOffice 不会自动检测新加入的字体,必须进入容器运行一个脚本来刷新缓存。
执行以下命令:
Bash
1 2
| # 进入 onlyoffice 容器并运行生成字体脚本 docker compose exec onlyoffice /usr/bin/documentserver-generate-allfonts.sh
|
清除浏览器缓存: 执行完脚本后,你需要清除浏览器的缓存或者在浏览器中按 Ctrl + F5 强制刷新 Seafile/OnlyOffice 页面,才能在字体列表中看到新字体。