seafile13 onlyoffice 部署

这篇文章用于记录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 证书自动申请和流量转发。

image-20260118165425061

修改 .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

拉取镜像启动容器

1
docker compose up -d

容器启动后,如果访问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 重新扫描字体。

  1. 强制刷新字体缓存(重要步骤): OnlyOffice 不会自动检测新加入的字体,必须进入容器运行一个脚本来刷新缓存。

    执行以下命令:

    Bash

    1
    2
    # 进入 onlyoffice 容器并运行生成字体脚本
    docker compose exec onlyoffice /usr/bin/documentserver-generate-allfonts.sh
  2. 清除浏览器缓存: 执行完脚本后,你需要清除浏览器的缓存或者在浏览器中按 Ctrl + F5 强制刷新 Seafile/OnlyOffice 页面,才能在字体列表中看到新字体。

作者

fei

发布于

2026-01-18

更新于

2026-01-19

许可协议

评论