- 概述
- 功能性
- 推荐系统要求
- 运行 Docker 镜像
- 配置 Docker 镜像
- 安装与社区和邮件服务器集成的 ONLYOFFICE 文档服务器
- ONLYOFFICE文档服务器ipv6设置
- 问题
- 项目信息
- 用户反馈和支持
ONLYOFFICE Document Server 是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑器,与 Office Open XML 格式完全兼容:.docx、.xlsx、.pptx,并支持实时协作编辑。
从版本 6.0 开始,Document Server 作为 ONLYOFFICE Docs 分发。它有三个版本。使用此映像,您将安装免费的社区版本。
ONLYOFFICE Docs 可用作 ONLYOFFICE Workspace 的一部分,或与第三方同步和共享解决方案(例如 Nextcloud、ownCloud、Seafile)一起使用,以在其界面内实现协作编辑。
重要请在使用之前更新docker-engine
到最新版本(20.10.21
截至撰写本文档时)。我们使用它ubuntu:22.04
作为基础镜像,旧版本的 docker 与其存在兼容性问题
- ONLYOFFICE文档编辑器
- ONLYOFFICE 电子表格编辑器
- ONLYOFFICE 演示文稿编辑器
- 适用于 iOS 的 ONLYOFFICE 文档应用程序
- 协同编辑
- 象形文字支持
- 支持所有流行格式:DOC、DOCX、TXT、ODT、RTF、ODP、EPUB、ODS、XLS、XLSX、CSV、PPTX、HTML
将其与 ONLYOFFICE 社区服务器集成,您将能够:
- 查看和编辑连接到 ONLYOFFICE 的 Drive、Box、Dropbox、OneDrive、OwnCloud 上存储的文件;
- 分享文件;
- 在网站上嵌入文档;
- 管理文档的访问权限。
- 内存:4 GB 或以上
- CPU:双核 2 GHz 或更高
- 交换空间:至少 2 GB
- 硬盘:至少 2 GB 可用空间
- 发行版:64 位 Red Hat、CentOS 或其他内核版本 3.8 或更高版本的兼容发行版、64 位 Debian、Ubuntu 或其他内核版本 3.8 或更高版本的兼容发行版
- Docker:版本 1.9.0 或更高版本
sudo docker run -i -t -d -p 80:80 onlyoffice/documentserver
如果您希望单独安装ONLYOFFICE Document Server,请使用此命令。要安装与社区和邮件服务器集成的 ONLYOFFICE 文档服务器,请参阅以下相应说明。
所有数据都存储在专门指定的目录、数据卷中,位置如下:
- /var/log/onlyoffice用于 ONLYOFFICE 文档服务器日志
- /var/www/onlyoffice/证书数据
- /var/lib/onlyoffice用于文件缓存
- /var/lib/postgresql用于数据库
要从容器外部访问数据,您需要安装卷。可以通过在 docker run 命令中指定“-v”选项来完成。
sudo docker run -i -t -d -p 80:80 \
-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 \
-v /app/onlyoffice/DocumentServer/rabbitmq:/var/lib/rabbitmq \
-v /app/onlyoffice/DocumentServer/redis:/var/lib/redis \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql onlyoffice/documentserver
通常,您不需要存储容器数据,因为容器的操作不依赖于其状态。保存数据将会很有用:
- 用于轻松访问容器数据,例如日志
- 取消容器内数据大小的限制
- 使用容器外部启动的服务时,例如 PostgreSQL、Redis、RabbitMQ
要更改端口,请使用 -p 命令。例如:要使您的门户可以通过端口 8080 访问,请执行以下命令:
sudo docker run -i -t -d -p 8080:80 onlyoffice/documentserver
sudo docker run -i -t -d -p 443:443 \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver
可以使用 SSL 保护对 onlyoffice 应用程序的访问,从而防止未经授权的访问。虽然 CA 认证的 SSL 证书允许通过 CA 验证信任,但只要每个客户端采取一些额外的步骤来验证您网站的身份,自签名证书也可以提供同等级别的信任验证。下面提供了实现此目的的说明。
要通过 SSL 保护应用程序,基本上需要做两件事:
- 私钥(.key)
- SSL 证书 (.crt)
因此,您需要创建并安装以下文件:
/app/onlyoffice/DocumentServer/data/certs/tls.key
/app/onlyoffice/DocumentServer/data/certs/tls.crt
当使用 CA 认证的证书(例如Let's encrypt)时,这些文件由 CA 提供给您。如果您使用自签名证书,则需要自己生成这些文件。
sudo docker run -i -t -d -p 80:80 -p 443:443 \
-e LETS_ENCRYPT_DOMAIN=your_domain -e LETS_ENCRYPT_MAIL=your_mail onlyoffice/documentserver
如果您想自动获取并扩展 Let's Encrypt SSL 证书,只需设置 LETS_ENCRYPT_DOMAIN 和 LETS_ENCRYPT_MAIL 变量即可。
自签名 SSL 证书的生成涉及一个简单的 3 步过程。
第 1 步:创建服务器私钥
openssl genrsa -out tls.key 2048
第 2 步:创建证书签名请求 (CSR)
openssl req -new -key tls.key -out tls.csr
第 3 步:使用私钥和 CSR 签署证书
openssl x509 -req -days 365 -in tls.csr -signkey tls.key -out tls.crt
您现在已经生成了 365 天有效的 SSL 证书。
本节为您提供加强服务器安全性的说明。为了实现这一点,您需要生成更强的 DHE 参数。
openssl dhparam -out dhparam.pem 2048
在上面生成的四个文件中,您需要在 onlyoffice 服务器上安装tls.key
、tls.crt
和文件。dhparam.pem
不需要 CSR 文件,但请确保安全备份该文件(以防再次需要它)。
onlyoffice 应用程序配置为查找 SSL 证书的默认路径位于,但是可以使用、和配置选项/var/www/onlyoffice/Data/certs
更改此路径。SSL_KEY_PATH
SSL_CERTIFICATE_PATH
SSL_DHPARAM_PATH
该/var/www/onlyoffice/Data/
路径是数据存储的路径,这意味着您必须在其中创建一个名为 certs 的文件夹/app/onlyoffice/DocumentServer/data/
并将文件复制到其中,作为安全措施,您将更新文件的权限tls.key
以仅由所有者读取。
mkdir -p /app/onlyoffice/DocumentServer/data/certs cp tls.key /app/onlyoffice/DocumentServer/data/certs/ cp tls.crt /app/onlyoffice/DocumentServer/data/certs/ cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/ chmod 400 /app/onlyoffice/DocumentServer/data/certs/tls.key
您现在距离保护我们的应用程序仅一步之遥。
请参阅 docker run 命令选项以获取--env-file
标志,您可以在其中在单个文件中指定所有必需的环境变量。这将使您免于编写可能很长的 docker run 命令。
以下是可以使用环境变量设置的参数的完整列表。
- ONLYOFFICE_HTTPS_HSTS_ENABLED:用于关闭 HSTS 配置的高级配置选项。仅当使用 SSL 时适用。默认为
true
. - ONLYOFFICE_HTTPS_HSTS_MAXAGE:用于在 onlyoffice nginx vHost 配置中设置 HSTS max-age 的高级配置选项。仅当使用 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
- DB_TYPE:数据库类型。支持的值为
postgres
,mariadb
或mysql
。默认为postgres
. - DB_HOST:运行数据库服务器的主机的 IP 地址或名称。
- DB_PORT:数据库服务器端口号。
- DB_NAME:要使用的数据库的名称。应该在容器启动时存在。
- DB_USER:具有数据库帐户超级用户权限的新用户名。
- DB_PWD:为数据库帐户设置的密码。
- AMQP_URI:连接到消息代理服务器的AMQP URI 。
- AMQP_TYPE:消息代理类型。支持的值为
rabbitmq
或activemq
。默认为rabbitmq
. - REDIS_SERVER_HOST:运行 Redis 服务器的主机的 IP 地址或名称。
- REDIS_SERVER_PORT:Redis 服务器端口号。
- REDIS_SERVER_PASS:Redis 8000 务器密码。默认情况下未设置密码。
- 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
. - WOPI_ENABLED:指定启用 wopi 处理程序。默认为
false
. - ALLOW_META_IP_ADDRESS:定义是否允许连接元IP地址。默认为
false
. - ALLOW_PRIVATE_IP_ADDRESS:定义是否允许连接私有IP地址。默认为
false
. - USE_UNAUTHORIZED_STORAGE
true
:如果为存储服务器使用自签名证书(例如 Nextcloud),则设置为。默认为false
- GENERATE_FONTS:当“true”时,每次开始时都会重新生成字体列表和字体缩略图等。默认为
true
- METRICS_ENABLED:指定 ONLYOFFICE Document Server 的启用 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社区版的一部分,还包括社区服务器和邮件服务器。要安装它们,请按照以下简单步骤操作:
第 1 步:创建onlyoffice
网络。
docker network create --driver bridge onlyoffice
然后使用“docker run --net onlyoffice”选项启动容器:
第 2 步:安装 MySQL。
按照以下步骤安装 MySQL 服务器。
第 3 步:生成 JWT 密钥
JWT Secret 定义密钥以验证对ONLYOFFICE Document Server 的请求中的 JSON Web 令牌。您可以自己指定它或使用以下命令轻松获取它:
JWT_SECRET=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12);
步骤 4:安装 ONLYOFFICE 文档服务器。
sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server \
-e JWT_ENABLED=true \
-e JWT_SECRET=${JWT_SECRET} \
-e JWT_HEADER=AuthorizationJwt \
-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 \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
onlyoffice/documentserver
第5步:安装ONLYOFFICE邮件服务器。
为了使邮件服务器正确工作,您需要指定其主机名“yourdomain.com”。
sudo docker run --init --net onlyoffice --privileged -i -t -d --restart=always --name onlyoffice-mail-server -p 25:25 -p 143:143 -p 587:587 \ -e MYSQL_SERVER=onlyoffice-mysql-server \ -e MYSQL_SERVER_PORT=3306 \ -e MYSQL_ROOT_USER=root \ -e MYSQL_ROOT_PASSWD=my-secret-pw \ -e MYSQL_SERVER_DB_NAME=onlyoffice_mailserver \ -v /app/onlyoffice/MailServer/data:/var/vmail \ -v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver \ -v /app/onlyoffice/MailServer/logs:/var/log \ -h yourdomain.com \ onlyoffice/mailserver
邮件服务器的附加参数可在此处获得。
要了解更多信息,请参阅ONLYOFFICE 邮件服务器文档。
第 6 步:安装 ONLYOFFICE 社区服务器
sudo docker run --net onlyoffice -i -t -d --privileged --restart=always --name onlyoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 --cgroupns=host \ -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_SERVER_DB_NAME=onlyoffice \ -e MYSQL_SERVER_HOST=onlyoffice-mysql-server \ -e MYSQL_SERVER_USER=onlyoffice_user \ -e MYSQL_SERVER_PASS=onlyoffice_pass \-e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server
-e DOCUMENT_SERVER_JWT_ENABLED=true
-e DOCUMENT_SERVER_JWT_SECRET=${JWT_SECRET}
-e DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt \-e MAIL_SERVER_API_HOST=${MAIL_SERVER_IP}
-e MAIL_SERVER_DB_HOST=onlyoffice-mysql-server
-e MAIL_SERVER_DB_NAME=onlyoffice_mailserver
-e MAIL_SERVER_DB_PORT=3306
-e MAIL_SERVER_DB_USER=root
-e MAIL_SERVER_DB_PASS=my-secret-pw \-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data
-v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice
-v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt
-v /sys/fs/cgroup:/sys/fs/cgroup:rw
onlyoffice/communityserver
-e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw
-e MYSQL_SERVER_DB_NAME=onlyoffice
-e MYSQL_SERVER_HOST=onlyoffice-mysql-server
-e MYSQL_SERVER_USER=onlyoffice_user
-e MYSQL_SERVER_PASS=onlyoffice_pass \
-e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server
-e DOCUMENT_SERVER_JWT_ENABLED=true
-e DOCUMENT_SERVER_JWT_SECRET=${JWT_SECRET}
-e DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt \
-e MAIL_SERVER_API_HOST=${MAIL_SERVER_IP}
-e MAIL_SERVER_DB_HOST=onlyoffice-mysql-server
-e MAIL_SERVER_DB_NAME=onlyoffice_mailserver
-e MAIL_SERVER_DB_PORT=3306
-e MAIL_SERVER_DB_USER=root
-e MAIL_SERVER_DB_PASS=my-secret-pw \
-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data
-v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice
-v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt
-v /sys/fs/cgroup:/sys/fs/cgroup:rw
onlyoffice/communityserver" tabindex="0" role="button">
ONLYOFFICE 邮件服务器${MAIL_SERVER_IP}
的 IP 地址在哪里。您可以使用以下命令轻松获取它:
MAIL_SERVER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' onlyoffice-mail-server)
或者,您可以使用自动安装脚本一次性安装整个 ONLYOFFICE Community Edition。为了使邮件服务器正确工作,您需要指定其主机名“yourdomain.com”。
步骤 1:下载社区版 Docker 脚本文件
wget https://download.onlyoffice.com/install/opensource-install.sh
步骤 2:执行以下命令安装 ONLYOFFICE 社区版:
bash opensource-install.sh -md yourdomain.com
或者,使用docker-compose。为了使邮件服务器正确工作,您需要指定其主机名“yourdomain.com”。假设你已经安装了 docker-compose,执行以下命令:
wget https://raw.githubusercontent.com/ONLYOFFICE/Docker-CommunityServer/master/docker-compose.groups.yml docker-compose up -d
(仅适用于 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 手册网站
作为一个相对较新的项目,Docker 正在由其社区致力于并积极开发。因此建议使用最新版本的 Docker,因为您遇到的问题可能已通过较新的 Docker 版本得到修复。
具有基于 rpm 的发行版的 ONLYOFFICE Document Server 的已知 Docker 问题是有时进程无法在 Docker 容器内启动。 Fedora 和 RHEL/CentOS 用户应尝试使用 setenforce 0 禁用 selinux。如果它解决了问题,那么您可以继续禁用 SELinux(RedHat 不推荐),或者改用 Ubuntu。
由于操作特性,文档服务器仅在所有编辑该文档的用户关闭该文档后才保存该文档。为了避免数据丢失,当您需要在应用程序更新、服务器重新启动等情况下停止Document Server时,必须强制断开Document Server用户的连接。 为此,请在安装Document Server的服务器上执行以下脚本:
sudo docker exec <CONTAINER> documentserver-prepare4shutdown.sh
请注意,执行脚本和断开用户连接可能需要很长时间(最多 5 分钟)。
官方网站:https://www.onlyoffice.com
代码存储库:https://github.com/ONLYOFFICE/DocumentServer
Docker 镜像:https://github.com/ONLYOFFICE/Docker-DocumentServer
许可证:GNU AGPL v3.0
免费版本与商业版本比较:https://github.com/ONLYOFFICE/DocumentServer#onlyoffice-document-server-editions
SaaS版本:https://www.onlyoffice.com/cloud-office.aspx
如果您对此图像有任何问题或疑问,请访问我们的官方论坛以查找问题的答案:forum.onlyoffice.com,或者您可以在Stack Overflow上询问并回答 ONLYOFFICE 开发问题。