原作者: XiaoGuo An 转载来源:https://www.linuxbabe.com/docker/onlyoffice-nextcloud-integration-docker
以前我写过关于将OnlyOffice和NextCloud集成到传统方式的过程,这是一个漫长的过程。现在,您可以使用Docker轻松集成OnlyOffice和NextCloud。
有一个由OnlyOffice开发团队创建的新Github存储库,用于帮助集成OnlyOffice文档服务器和NextCloud,后者允许用户直接从NextCloud创建和编辑Office文档。事实上,它还支持OnlyOffice和OwnCloud的集成。由于我们大多数人都是NextCloud用户,因此我将只关注NextCloud。
使用此方法,OnlyOffice文档服务器和NextCloud都将作为Docker容器应用程序安装,Nginx将用作Web服务器。我将向您展示如何集成这两个以及如何使用Let的加密启用HTTPS。
要学习本教程,您需要
首先,我们需要安装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
我们将使用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
保存并关闭文件。然后编辑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网络并启动三个容器:NextCloud,OnlyOffice文档服务器和Nginx,可以通过发出以下命令看到:
sudo docker network ls
sudo docker ps
现在将您的Web浏览器指向cloud.example.com,然后您将看到NextCloud安装向导。在我们在向导中输入任何内容之前,让我们使用Let's Encrypt启用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
说明:
该-w
标志后面是Web根目录的路径,该目录/var/www/html/
位于Nginx容器中。它在主机上的挂载点是/var/lib/docker/volumes/dockeronlyofficeowncloud_app_data/_data
。Certbot无法访问Nginx容器中的Web根目录,必须使用其挂载点。如您所见,我已成功获得SSL证书。
获取证书后,编辑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安装向导,您将在浏览器的地址栏中看到绿色挂锁。
如果出现错误,您可以查看nginx-server容器的日志以找出错误。
sudo docker记录nginx-server
如果要将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数据库服务器的详细信息。请注意,您需要替换localhost
为mariadb-server
,这是MariaDB容器的名称。 localhost
这里指向NextCloud容器。由于NextCloud容器和MariaDB容器都在onlyoffice网络中,因此NextCloud可以mariadb-server
使用嵌入式DNS服务器解析。
现在NextCloud已成功安装。
在docker-onlyoffice-owncloud
目录中,有一个名为的脚本set_configuration.sh
。运行此脚本以集成OnlyOffice和NextCloud。
sudo bash set_configuration.sh
现在,您可以从NextCloud创建和编辑Office文档。
我发现如果我使用301重定向强制执行HTTPS,那么Office文档将不会加载。
似乎如果强制执行HTTPS,则NextCloud将仅在HTTPS中与OnlyOffice文档服务器通信,这是无法完成的,因为我们没有在文档服务器上安装TLS证书。
解决方案是在nginx.conf
文件中注释掉以下行。
if($ scheme!=“https”){
return 301 https:// $ host $ request_uri;
}
然后重启Nginx容器。
sudo docker restart nginx-server
这样,用户需要https://
在浏览器地址栏中手动添加前缀才能加密数据通信。