嘿哈布尔! 我向您展示这篇文章的翻译
很难低估 Google Docs 等在线办公套件和云存储在技术型人们生活中的价值。 技术已经变得如此普遍,甚至连长期主导办公应用程序市场的微软最近也专注于开发 Office 365 Web 应用程序,并说服用户转向订阅模式来使用自己的服务。 我们邀请那些对在 cat 下安装和配置自己的存储过程感兴趣的人。
不久前,我们研究了云存储解决方案和开源网络办公套件,它们可以轻松部署以供微型企业使用。 将所有文档保留在网上的主要动机是尽量减少文书工作,并在交易量较低的情况下实施良好的业务实践。 硬币的另一面是,租用云服务器来提供此服务比直接将其存储在企业场所安全性较低,因为您没有任何方法来审核对服务器或流量的物理访问。 因此,还需要端到端加密和开源软件。
考虑到有关开源解决方案的所有可用信息,我们发现了两个针对云存储开发的活跃项目(过去 12 个月在 git 存储库中提交):NextCloud 和 OwnCloud,以及唯一活跃的 ONLYOFFICE 办公套件。 这两种云存储工具具有大致相同的功能,选择 NextCloud 的决定是基于有证据表明它可以与 ONLYOFFICE 集成,以便用户与软件进行舒适的交互。 然而,当我们开始部署服务时,缺乏有关集成上述服务的信息就变得很明显。 我们找到了 3 个有关如何集成的教程视频:
www.youtube.com/watch?v=GAd-x_sP6ng www.youtube.com/watch?v=ceOld6P16wI www.youtube.com/watch?v=DvTXyl-OOZA
这三个视频都没有回答在与 NextCloud 相同的物理服务器上使用共享 nginx 安装 ONLYOFFICE 文档服务的问题。 相反,他们使用了分离技术,例如为文档服务 API 使用单独的端口。 另一个建议是为文档服务部署单独的服务器,手动配置文档服务内置的 nginx 实例来安装访问密钥(确认访问数据云的权限的预先已知的访问密钥)和 TLS 证书。 上述方法被认为不安全且不够有效,因此我们集成了 NextCloud、ONLYOFFICE 和一个使用 docker-compose 按域名分隔请求的通用 nginx。 以下是有关如何操作的分步信息。
第1步:nginx容器
这是一个非常简单的设置,但这一步需要最多的工作来配置反向代理服务器。 我们首先为 nginx:stable 镜像创建 docker-compose 配置。
version: '2'
services:
nginx:
image : nginx:stable
restart: always
volumes:
- ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
- ./nginx/certificates:/mycerts
ports:
- 443:443
- 80:80
这将创建一个向公众开放端口 80 和 443 的容器,将配置映射到 nginx/nginx-vhost.conf ,并为作为自签名证书生成的证书或使用 /nginx/certificates 中的 Let's encrypt 的 certbot 定义证书存储。 此位置应包含 office.yourdomain.com 和 cloud.yourdomain.com 的文件夹,其中分别包含用于证书链和服务器私钥的 fullchain1.pem 和 privkey1.pem 文件。 您可以在此处阅读有关如何生成自签名证书的更多信息。
之后,我们定义了vhost文件。 我们首先将端口 80 的行为定义为简单重定向到 https,因为我们不想允许任何 http 流量
server {
listen 80;
location / {
return 301
https://$host$request_uri;
}
}
然后我们在端口 443 上为我们的服务创建了两个虚拟服务器:
server {
listen 443 ssl;
server_name cloud.yourdomain.com ;
root /var/www/html;
ssl_certificate /mycerts/cloud.yourdomain.com/fullchain1.pem;
ssl_certificate_key /mycerts/cloud.yourdomain.com/privkey1.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app:80;
}
}
server {
listen 443 ssl;
server_name office.yourdomain.com;
root /var/www/html;
ssl_certificate /mycerts/office.yourdomain.com/fullchain1.pem;
ssl_certificate_key /mycerts/office.yourdomain.com/privkey1.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://onlyoffice:80;
}
}
第二步:文件服务
现在我们需要将文档服务容器添加到我们的 docker-compose.yml 中。 这里没有什么特别需要配置的。
services:
...
onlyoffice:
image: onlyoffice/documentserver
restart: always
但不要忘记将 nginx 容器链接到文档服务:
services:
...
nginx:
...
depends_on:
- onlyoffice
第三步:NextCloud
首先,添加新服务:
services:
...
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- /data/nextcloud_db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=#put some password here
- MYSQL_PASSWORD=#put some other password here
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
depends_on:
- db
- onlyoffice
restart: always
并添加 nginx 的链接:
services:
...
nginx:
...
depends_on:
- app
现在是时候装载集装箱了。
docker-compose up -d
一段时间后,nginx 将开始将您重定向到 NextCloud 前端,这是默认配置页面。 您需要输入第一个管理用户的用户名和密码以及您在 docker-compose.yml 中提供的数据库凭据。设置完成后,您将能够登录。 在我们的例子中,等待时间将近一分钟,并且需要额外刷新登录页面才能登录云服务。
Next云服务设置窗口
第4步:连接NextCloud和ONLYOFFICE
在此步骤中,您需要安装 NextCloud 应用程序,该应用程序连接 ONLYOFFICE 功能。 让我们从菜单右上角的应用程序控制面板开始。 找到 ONLYOFFICE 应用程序(在 Office 和文本下或使用搜索),安装并激活它。
之后,通过右上角的菜单进入“设置”,您应该在左侧菜单中找到 ONLYOFFICE 项目。 进去吧。 您需要注册如下所示的地址。
集成应用程序设置
第一个地址用于直接从浏览器中运行的应用程序链接到一些js和css文件(这是我们通过nginx开放访问ONLYOFFICE服务所需要的)。 不使用密钥是因为我们更信任 Docker 隔离层而不是持久身份验证密钥。 第三个地址由 NextCloud 容器用来直接连接到 ONLYOFFICE API,它使用 Docker 的默认内部主机名。 好吧,使用最后一个字段,以便 ONLYOFFICE 可以使用外部 IP 地址或内部 Docker 地址(如果您使用 Docker 网络)向 NextCloud API 发出请求,但在我们的示例中没有使用。 确保您的防火墙设置允许此类交互。
保存后,NextCloud 将测试连接,如果一切正确,将向您显示与集成相关的设置 - 例如,此集成可以编辑哪些类型的文件。 根据您的需要进行定制。
最后一步:在哪里可以找到编辑器
如果您返回云存储文件夹并单击“+”创建新文件,那么您将有一个新选项来创建文档、电子表格或演示文稿。 在他们的帮助下,您将使用 ONLYOFFICE 创建并立即能够编辑这些类型的文件。
文件创建菜单
补充1
docker-compose.yml 的完整内容可以在这里找到:
来源: habr.com