在本地服务器上安装 ONLYOFFICE 文档的 Docker 版本
介绍
社区版允许您在本地服务器上安装 ONLYOFFICE 文档,并将在线编辑器与 ONLYOFFICE 协作平台或其他流行系统集成(请查看详细功能列表)。本指南将向您展示如何在您的机器上安装 ONLYOFFICE 文档 社区版的 Docker 版本。
系统要求
- CPU:双核 2 GHz 或更高
- RAM:4 GB 或更多
- HDD:至少 40 GB 的可用空间
- SWAP:至少 4 GB,但取决于主机操作系统。更多更好
- OS:内核版本为 3.10 或更高的 amd64 Linux 发行版
- 附加要求
- Docker:任何由 Docker 团队支持的版本
安装 ONLYOFFICE 文档
您需要安装最新版本的 Docker。如果您没有,请查看 Docker 网站上的安装部分以了解如何获取。
Docker 默认指定 Google DNS 服务器。如果您的 ONLYOFFICE 文档不打算访问互联网,我们建议您将默认的 Docker DNS 地址更改为您本地 DNS 服务器的地址。为此,请转到 /etc/default/docker 文件,并将以下行中的 IP 地址更改为您本地网络中 DNS 服务器的 IP 地址:
docker_OPTS="--dns 8.8.8.8"
对于基于 RPM 的操作系统,如 CentOS:
-
创建
/etc/docker/daemon.json配置文件,内容如下:{ "dns" : [ "8.8.8.8" ] } -
重启 Docker 服务:
sudo systemctl restart docker.service
安装 Docker 后,运行它并执行以下命令:
sudo docker run -i -t -d -p 80:80 --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
从版本 7.2 开始,我们增加了 JWT 密钥的随机生成。如果没有通过环境变量指定 JWT 密钥,则在每次虚拟机或物理服务器重启时会重新生成,这可能导致集成问题。为避免此问题,请在 -e JWT_SECRET=my_jwt_secret 中指定您自己的值。
如果您不打算在安装中使用 JWT,请使用 -e JWT_ENABLED=false。
如果您希望单独安装 ONLYOFFICE 文档,请使用此命令。要安装与 ONLYOFFICE 工作空间和 ONLYOFFICE 邮件集成的 ONLYOFFICE 文档,请参阅下面的相应说明。
默认情况下,ONLYOFFICE 文档使用端口 80 监听传入连接。从版本 4.3 开始,如果您计划使用非默认端口,可以更改 ONLYOFFICE 文档的端口。这可以通过在安装过程中更改映射端口轻松完成:
sudo docker run -i -t -d -p <PORT_NUMBER>:80 --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
其中 <PORT_NUMBER> 是您希望 ONLYOFFICE 文档使用的端口号。
这将安装 ONLYOFFICE 文档及其所需的所有依赖项(脚本执行的操作列表可以在这里找到)。
验证安装
容器运行后,在浏览器中打开 http://localhost(或您服务器的 IP 地址)。此时应显示 ONLYOFFICE 文档欢迎页面,表明安装成功。
如果未显示欢迎页面,请检查容器日志中的错误:
sudo docker logs <CONTAINER_ID>
常见问题:
- 端口 80 已被其他应用程序占用。请停止冲突的应用程序,或使用
-p <PORT_NUMBER>:80指定其他端口。 - 容器不断重启。请检查日志中是否有数据库连接错误或内存不足。
- 浏览器中显示"连接被拒绝"。请等待 1–2 分钟——首次启动需要一些时间来初始化数据库。
将数据存储在容器外部
所有数据都存储在专门指定的目录中,即数据卷,位置如下:
/var/log/onlyoffice用于 ONLYOFFICE 文档日志/var/www/onlyoffice/Data用于证书/var/lib/onlyoffice用于文件缓存
我们强烈建议您将数据存储在主机机器上的 Docker 容器之外,这样可以在新版本发布时轻松更新 ONLYOFFICE 文档而不会丢失数据。
要访问位于容器外部的数据,您需要挂载卷。这可以通过在 docker run 命令中指定 -v 选项来完成。
sudo docker run -i -t -d -p 80:80 --restart=always \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice
请注意,如果您尝试挂载尚未创建的文件夹,这些文件夹将被创建,但访问权限将受到限制。您需要手动更改其访问权限。
通常,您不需要存储容器数据,因为容器操作不依赖于其状态。保存数据将有助于:
- 轻松访问容器数据,例如日志;
- 消除容器内部数据大小的限制。
使用 HTTPS 运行 ONLYOFFICE 文档
sudo docker run -i -t -d -p 443:443 --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
可以使用 SSL 来保护对 ONLYOFFICE 应用程序的访问,以防止未经授权的访问。虽然 CA 认证的 SSL 证书允许通过 CA 验证信任,但自签名证书也可以提供同等水平的信任验证,只要每个客户端采取一些额外步骤来验证您网站的身份。以下提供了实现此目的的说明。
要通过 SSL 保护应用程序,基本上需要两件事:
- 私钥 (.key)
- SSL 证书 (.crt)
因此,您需要创建和安装以下文件:
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt
使用 CA 认证的证书(例如,Let's Encrypt)时,这些文件由 CA 提供。如果您使用自签名证书,则需要自己生成这些文件。
使用 certbot 将 ONLYOFFICE 文档切换到 HTTPS
将 ONLYOFFICE 文档切换到 HTTPS 的最简单方法是使用 certbot 自动获取 Let's Encrypt SSL 证书。
运行 ONLYOFFICE 文档 Docker 容器,指定端口 80 和 443,并为变量设置您自己的值:
sudo docker run -i -t -d -p 80:80 -p 443:443 --restart=always \
-e LETS_ENCRYPT_DOMAIN=yourdomain.com -e LETS_ENCRYPT_MAIL=email@example.com -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
其中:
- LETS_ENCRYPT_DOMAIN - 用于证书的域名。
- LETS_ENCRYPT_MAIL - 用于注册和恢复联系的电子邮件。
letsencrypt.org CA 签名的证书将自动生成并安装到您的服务器上。现在,您的 ONLYOFFICE 文档应该可以在 https://yourdomain.com 地址访问。
自签名证书的生成
生成自签名 SSL 证书涉及简单的 3 步程序:
步骤 1:创建服务器私钥
openssl genrsa -out onlyoffice.key 2048
步骤 2:创建证书签名请求 (CSR)
openssl req -new -key onlyoffice.key -out onlyoffice.csr
步骤 3:使用私钥和 CSR 签署证书
openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
您现在已经生成了一个有效期为 365 天的 SSL 证书。
加强服务器安全性
本节为您提供加强服务器安全性的说明。
为实现这一点,您需要生成更强的 DHE 参数。
openssl dhparam -out dhparam.pem 2048
SSL 证书的安装
在上面生成的四个文件中,您需要在 onlyoffice 服务器上安装 onlyoffice.key、onlyoffice.crt 和 dhparam.pem 文件。CSR 文件不需要,但请确保您安全备份该文件(以防您以后需要)。
onlyoffice 应用程序默认配置为在 /var/www/onlyoffice/Data/certs 路径下查找 SSL 证书,不过可以使用 SSL_KEY_PATH、SSL_CERTIFICATE_PATH 和 SSL_DHPARAM_PATH 配置选项更改此路径。
/var/www/onlyoffice/Data/ 路径是数据存储路径,这意味着您必须在 /app/onlyoffice/DocumentServer/data/ 中创建一个名为 certs 的文件夹,并将文件复制到其中,作为安全措施,您需要将 onlyoffice.key 文件的权限更新为仅可由所有者读取。
mkdir -p /app/onlyoffice/DocumentServer/data/certs
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
然后重启 Docker 容器:
sudo docker restart {{DOCUMENT_SERVER_ID}}
您现在只需一步即可确保我们的应用程序安全。
可用的配置参数
请参考 docker run 命令选项中的 --env-file 标志,您可以在单个文件中指定所有必需的环境变量。这将使您不必编写可能很长的 docker run 命令。
以下是可以使用环境变量设置的参数的完整列表。
- ONLYOFFICE_HTTPS_HSTS_ENABLED:用于关闭 HSTS 配置的高级配置选项。仅在使用 SSL 时适用。默认值为
true。 - ONLYOFFICE_HTTPS_HSTS_MAXAGE:用于设置 onlyoffice NGINX vHost 配置中的 HSTS 最大年龄的高级配置选项。仅在使用 SSL 时适用。默认值为
31536000。 - SSL_CERTIFICATE_PATH:要使用的 SSL 证书的路径。默认值为
/var/www/onlyoffice/Data/certs/tls.crt。 - SSL_KEY_PATH:SSL 证书私钥的路径。默认值为
/var/www/onlyoffice/Data/certs/tls.key。 - SSL_DHPARAM_PATH:Diffie-Hellman 参数的路径。默认值为
/var/www/onlyoffice/Data/certs/dhparam.pem。 - SSL_VERIFY_CLIENT:启用使用
CA_CERTIFICATES_PATH文件验证客户端证书。默认值为false。 - NGINX_WORKER_PROCESSES:定义 NGINX 工作进程的数量。
- NGINX_WORKER_CONNECTIONS:设置 NGINX 工作进程可以打开的最大同时连接数。
- SECURE_LINK_SECRET:为 nginx 配置指令 secure_link_md5 定义秘密。默认值为
random string(随机字符串)。 - JWT_ENABLED:指定启用 ONLYOFFICE 文档的 JSON Web 令牌验证。默认值为
true。 - JWT_SECRET:定义在请求 ONLYOFFICE 文档时验证 JSON Web 令牌的密钥。默认值为随机值。
- JWT_HEADER:定义将用于发送 JSON Web 令牌的 HTTP 头。默认值为
Authorization。 - JWT_IN_BODY:指定在请求正文中启用对 ONLYOFFICE 文档的令牌验证。默认值为
false。 - ALLOW_META_IP_ADDRESS:定义是否允许连接元 IP 地址。默认值为
false。 - ALLOW_PRIVATE_IP_ADDRESS:定义是否允许连接私有 IP 地址。默认值为
false。 - WOPI_ENABLED:指定启用 wopi 处理程序。默认值为
false。 - USE_UNAUTHORIZED_STORAGE:如果为存储服务器(例如 Nextcloud)使用自签名证书,则设置为
true。默认值为false。 - GENERATE_FONTS:当
true时,在每次启动时重新生成字体列表和字体缩略图等。默认值为true。 - METRICS_ENABLED:指定为 ONLYOFFICE 文档启用 StatsD。默认值为
false。 - METRICS_HOST:定义 StatsD 监听主机。默认值为
localhost。 - METRICS_PORT:定义 StatsD 监听端口。默认值为
8125。 - METRICS_PREFIX:定义后端服务的 StatsD 指标前缀。默认值为
ds.。 - LETS_ENCRYPT_DOMAIN:定义 Let's Encrypt 证书的域名。
- LETS_ENCRYPT_MAIL:定义 Let's Encrypt 证书的域管理员邮箱地址。
安装与 ONLYOFFICE 工作空间和 ONLYOFFICE 邮件集成的 ONLYOFFICE 文档
ONLYOFFICE 文档是 ONLYOFFICE 工作空间的一部分,还包括 ONLYOFFICE 社区服务器、ONLYOFFICE 控制面板和 ONLYOFFICE 邮件。如果您想安装并相互集成所有这些组件,请阅读这些说明。
安装 ONLYOFFICE 文档的替代方法
或者,您可以使用自动安装脚本一次性安装整个工作空间。要使邮件服务器正常工作,您需要指定其主机名 yourdomain.com。
步骤 1:下载安装脚本文件
执行以下命令:
curl -O https://download.onlyoffice.com/install/workspace-install.sh
步骤 2:安装工作空间
运行以下命令来执行此操作:
bash workspace-install.sh -md yourdomain.com
或者,您可以使用 docker-compose 来安装 ONLYOFFICE 文档。请参阅此处的说明以了解如何操作。
ONLYOFFICE 文档 IPv6 设置
仅适用于 Linux 主机并受支持
Docker 目前默认不为容器提供 IPv6 地址。此功能目前为实验性功能。
要设置通过 IPv6 进行交互,您需要在 Docker 中启用此功能的支持。为此,您需要:
-
创建
/etc/docker/daemon.json文件,内容如下:{"ipv6": true,"fixed-cidr-v6": "2001:db8:abc1::/64"} -
使用以下命令重启 docker:
systemctl restart docker
之后,所有运行的容器将获得一个 IPv6 地址并具有一个 inet6 接口。
您可以检查默认桥接网络,并在其中看到 EnableIPv6=true 字段。还将添加一个新的 IPv6 子网。
有关更多信息,请访问官方 Docker 手册网站。