如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline

原作者: XiaoGuo An 转载来源:https://www.linuxbabe.com/docker/onlyoffice-nextcloud-integration-docker

 

如何使用Docker轻松集成OnlyOffice和NextCloud

 

以前我写过关于将OnlyOffice和NextCloud集成到传统方式的过程,这是一个漫长的过程。现在,您可以使用Docker轻松集成OnlyOffice和NextCloud。

有一个由OnlyOffice开发团队创建的新Github存储库,用于帮助集成OnlyOffice文档服务器和NextCloud,后者允许用户直接从NextCloud创建和编辑Office文档。事实上,它还支持OnlyOffice和OwnCloud的集成。由于我们大多数人都是NextCloud用户,因此我将只关注NextCloud。

使用此方法,OnlyOffice文档服务器和NextCloud都将作为Docker容器应用程序安装,Nginx将用作Web服务器。我将向您展示如何集成这两个以及如何使用Let的加密启用HTTPS。

 

先决条件

要学习本教程,您需要

  • 端口80和443可用的服务器,至少1GB的RAM,最好是2GB的RAM。我推荐Linode,你可以在这里获得高性能的2GB RAM Linux VPS,每月只需10美元。
  • 域名。我从NameCheap购买了我的域名。他们的价格不仅低于Godaddy,而且还免费提供whois隐私保护。

在您的服务器上安装Docker

首先,我们需要安装Docker和Docker Compose,其最新版本可以从Docker的官方存储库安装。以下步骤适用于Ubuntu 16.04。其他Linux发行版的用户可以查看官方安装说明。

为Docker存储库创建源列表文件。

sudo nano /etc/apt/sources.list.d/docker.list

复制以下行并将其粘贴到文件中。

deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable

保存并关闭文件。然后通过运行以下命令导入Docker的PGP密钥。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add  - 

由于此存储库使用HTTPS连接,我们还需要安装apt-transport-https和  ca-certificates打包。

sudo apt install apt-transport-https ca-certificates

接下来,更新软件包索引并安装最新版本的Docker CE(Community Edition)。

sudo apt update

sudo apt install docker-ce

要安装最新版本的Docker Compose,请运行以下命令。

sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o / usr / local / bin / docker-撰写

sudo chmod + x / usr / local / bin / docker-compose

检查Docker版本。

docker -v

样本输出:

Docker version 17.09.0-ce,build afdb6d4

检查Docker Compose版本。

docker-compose --version

样本输出:

docker-compose version 1.17.1,build 6d101fb

安装后,应自动启动Docker守护程序。您可以查看:

systemctl status docker

输出:

● docker.service  -  Docker应用程序容器引擎
   已加载:已加载(/lib/systemd/system/docker.service;已启用;供应商预设:已启用)
   活跃:自2017年11月11日星期六12:40:23 UTC开始活跃(正在运行) ; 3分32秒前
     文档:https://docs.docker.com
 主PID:4090(dockerd)
   CGroup:/system.slice/docker.service
           ├─4090/ usr / bin / dockerd -H fd://
           └─4159docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-inter

如果它没有运行,则使用以下命令启动守护程序:

sudo systemctl start docker

并启用系统启动自动启动:

sudo systemctl enable docker

 

克隆Github仓库

我们将使用git来克隆Github存储库。

git clone --recursive https://github.com/ONLYOFFICE/docker-onlyoffice-owncloud

cd docker-onlyoffice-owncloud

git submodule update --remote

编辑docker-compose.yml文件。

nano docker-compose.yml

找到第5行。

image: owncloud:fpm

由于我们要安装NextCloud,请将此行更改为:

image: nextcloud:fpm

如果要使用Let的加密启用HTTPS,请在nginx服务中添加以下行。该行告诉Docker /etc/letsencrypt将主机上的目录挂载到Nginx容器中。

- /etc/letsencrypt:/etc/letsencrypt

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第1张图片

保存并关闭文件。然后编辑nginx.conf目录中的docker-onlyoffice-owncloud文件。此文件将像/etc/nginx/nginx.conf在Nginx容器中一样安装。

nano nginx.conf

server_name在服务器块中添加指令。不要忘记为您的域名设置A记录。

server {
     listen 80;
     server_name cloud.example.com;
....

并且在服务器块中添加以下行,因为稍后我们将使用Certbot webroot插件来获取SSL证书。

 location ~ /.well-known/acme-challenge {
       root /var/www/html/;
       allow all;
 }

保存并关闭文件。现在启动docker-compose.yml文件中定义的容器。

sudo docker-compose up -d

上面的命令将创建onlyoffice网络并启动三个容器:NextCloudOnlyOffice文档服务器Nginx,可以通过发出以下命令看到:

sudo docker network ls
sudo docker ps

现在将您的Web浏览器指向cloud.example.com,然后您将看到NextCloud安装向导。在我们在向导中输入任何内容之前,让我们使用Let's Encrypt启用HTTPS。

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第2张图片

使用Let加密启用HTTPS

现在在您的服务器上安装Let的加密客户端(certbot)。以下说明适用于Ubuntu。

sudo apt install software-properties-common

sudo add-apt-repository ppa:certbot/certbot

sudo apt update

sudo apt install certbot

由于Nginx在Docker容器中运行,我们将无法使用Nginx插件来获取和安装SSL / TLS证书。相反,我们可以使用webroot插件获取证书,然后手动配置SSL / TLS。运行以下命令以获取证书。

sudo certbot certonly --webroot --agree-tos --email your-email-address -d cloud.example.com -w /var/lib/docker/volumes/dockeronlyofficeowncloud_app_data/_data

说明:

  • certonly:获得证书。不要安装它。
  • -webroot:使用webroot插件
  • -agree-tos:接受让我们加密服务条款
  • -email:用于帐户注册和恢复的电子邮件地址。
  • -d:您的域名。

-w标志后面是Web根目录的路径,该目录/var/www/html/位于Nginx容器中。它在主机上的挂载点是/var/lib/docker/volumes/dockeronlyofficeowncloud_app_data/_data。Certbot无法访问Nginx容器中的Web根目录,必须使用其挂载点。如您所见,我已成功获得SSL证书。

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第3张图片

获取证书后,编辑nginx.conf目录中的docker-onlyoffice-owncloud文件以配置SSL。

nano nginx.conf

在服务器块中添加以下行。请记住将红色文本替换为您的实际域名。

  listen 443 ssl http2;

   if ($scheme != "https") {
       return 301 https://$host$request_uri;
   }

   ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem; 
   ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem; 
   ssl_session_cache shared:le_nginx_SSL:1m;
   ssl_session_timeout 1440m;

   ssl_protocols TLSv1.2;
   ssl_prefer_server_ciphers on;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  

保存并关闭文件。然后重启Nginx容器。
sudo docker restart nginx-server

刷新NextCloud安装向导,您将在浏览器的地址栏中看到绿色挂锁。

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第4张图片

如果出现错误,您可以查看nginx-server容器的日志以找出错误。

sudo docker记录nginx-server

 

将MariaDB数据库与NextCloud配合使用

如果要将MariaDB与NextCloud一起使用,则需要运行MariaDB Docker容器。以下命令将运行官方MariaDB docker容器并将其添加到onlyoffice网络。用您首选的MariaDB root密码替换您的pass。

sudo docker run --restart=always --net dockeronlyofficeowncloud_onlyoffice --name mariadb-server -e MYSQL_ROOT_PASSWORD=your-pass -d mariadb --log-bin --binlog-format=MIXED

检查状态。

sudo docker ps

一旦MariaDB容器运行,我们就可以通过发出以下命令来访问它。

sudo docker exec -it mariadb-server bash

然后以root身份登录MariaDB服务器。

mysql -u root -p

然后为Nextcloud创建一个数据库。本教程将数据库命名为nextcloud。你可以使用你喜欢的任何名字。

create database nextcloud;

创建数据库用户。同样,您可以为此用户使用您的首选名称。用您的首选密码替换您的密码。请注意,我们要创建一个能够从NextCloud容器登录的用户,该容器的IP地址为172.18.0.3。

create user 'nextcloud'@'172.18.0.3' identified by 'your-password';

注意:您的NextCloud容器可能具有不同的IP地址。在主机上运行以下命令以查找它。

sudo docker inspect app-server | grep IPAddress

授予此用户对nextcloud数据库的所有权限。

grant all privileges on *.* to 'nextcloud'@'172.16.0.3' ;

刷新权限并退出。

flush privileges;

exit;

退出MariaDB容器。

exit;

现在,在NextCloud安装向导中,您可以创建管理员帐户并输入MariaDB数据库服务器的详细信息。请注意,您需要替换localhostmariadb-server,这是MariaDB容器的名称。 localhost这里指向NextCloud容器。由于NextCloud容器和MariaDB容器都在onlyoffice网络中,因此NextCloud可以mariadb-server使用嵌入式DNS服务器解析。

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第5张图片

现在NextCloud已成功安装。

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第6张图片

使用脚本集成OnlyOffice和NextCloud

docker-onlyoffice-owncloud目录中,有一个名为的脚本set_configuration.sh。运行此脚本以集成OnlyOffice和NextCloud。

sudo bash set_configuration.sh

现在,您可以从NextCloud创建和编辑Office文档。

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第7张图片

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第8张图片

修复错误

我发现如果我使用301重定向强制执行HTTPS,那么Office文档将不会加载。

如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline_第9张图片

似乎如果强制执行HTTPS,则NextCloud将仅在HTTPS中与OnlyOffice文档服务器通信,这是无法完成的,因为我们没有在文档服务器上安装TLS证书。

解决方案是在nginx.conf文件中注释掉以下行。

if($ scheme!=“https”){
         return 301 https:// $ host $ request_uri;
}

然后重启Nginx容器。

sudo docker restart nginx-server

这样,用户需要https://在浏览器地址栏中手动添加前缀才能加密数据通信。

 

 

你可能感兴趣的:(Unix&Unix-Like,云计算)