8000 GitHub - yuanzhongqiao/Docker-DocumentServer: ONLYOFFICE Document Server 是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑器,与 Office Open XML 格式完全兼容:.docx、.xlsx、.pptx,并支持实时协作编辑。
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ONLYOFFICE Document Server 是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑器,与 Office Open XML 格式完全兼容:.docx、.xlsx、.pptx,并支持实时协作编辑。

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/Docker-DocumentServer

 
 

Repository files navigation

概述

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 或更高版本

运行 Docker 镜像

sudo docker run -i -t -d -p 80:80 onlyoffice/documentserver

如果您希望单独安装ONLYOFFICE Document Server,请使用此命令。要安装与社区和邮件服务器集成的 ONLYOFFICE 文档服务器,请参阅以下相应说明。

配置 Docker 镜像

存储数据

所有数据都存储在专门指定的目录、数据卷中,位置如下:

  • /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

在不同端口上运行 ONLYOFFICE 文档服务器

要更改端口,请使用 -p 命令。例如:要使您的门户可以通过端口 8080 访问,请执行以下命令:

sudo docker run -i -t -d -p 8080:80 onlyoffice/documentserver

使用 HTTPS 运行 ONLYOFFICE 文档服务器

    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 提供给您。如果您使用自签名证书,则需要自己生成这些文件。

使用自动生成的 Let's Encrypt SSL 证书

    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

SSL 证书的安装

在上面生成的四个文件中,您需要在 onlyoffice 服务器上安装tls.keytls.crt和文件。dhparam.pem不需要 CSR 文件,但请确保安全备份该文件(以防再次需要它)。

onlyoffice 应用程序配置为查找 SSL 证书的默认路径位于,但是可以使用、和配置选项/var/www/onlyoffice/Data/certs更改此路径。SSL_KEY_PATHSSL_CERTIFICATE_PATHSSL_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,mariadbmysql。默认为postgres.
  • DB_HOST:运行数据库服务器的主机的 IP 地址或名称。
  • DB_PORT:数据库服务器端口号。
  • DB_NAME:要使用的数据库的名称。应该在容器启动时存在。
  • DB_USER:具有数据库帐户超级用户权限的新用户名。
  • DB_PWD:为数据库帐户设置的密码。
  • AMQP_URI:连接到消息代理服务器的AMQP URI 。
  • AMQP_TYPE:消息代理类型。支持的值为rabbitmqactivemq。默认为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_STORAGEtrue :如果为存储服务器使用自签名证书(例如 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文档服务器是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

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 tooltipped-no-delay d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="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" 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

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 手册网站

问题

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 开发问题。

About

ONLYOFFICE Document Server 是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑器,与 Office Open XML 格式完全兼容:.docx、.xlsx、.pptx,并支持实时协作编辑。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 69.9%
  • HCL 12.3%
  • Dockerfile 12.2%
  • Makefile 5.2%
  • JavaScript 0.4%
0