赞
踩
原作者:XiaoGuo An 转载来源:https://www.linuxbabe.com/ubuntu/integrate-nextcloud-onlyoffice
借助于 2017年2月发布的ownCloud OnlyOffice集成应用程序,ownCloud用户可以使用OnlyOffice在线编辑器直接从他们自己的Cloud安装编辑Office文档 。现在,OnlyOffice已更新其集成应用程序以添加对Nextcloud的支持。本教程将向您展示如何 使用Nextcloud OnlyOffice集成应用程序将OnlyOffice与 Nextcloud集成。
Nextcloud OnlyOffice集成应用程序的功能:
要完成本指南,您需要
OnlyOffice文档服务器和Nextcloud服务器可以安装在两个不同的主机上让我们开始吧。
请注意,OnlyOffice文档服务器至少需要2GB的RAM。建议额外增加2GB的交换空间。OnlyOffice文档服务器依赖于PostgreSQL,Node.js,Redis Server,RabbitMQ服务器和Nginx。以下步骤在Ubuntu 16.04服务器上进行测试,但也应适用于其他基于Debian的Linux发行版。
sudo apt install postgresql
然后创建onlyoffice
数据库。
sudo -u postgres psql -c "CREATE DATABASE onlyoffice;"
创建onlyoffice
用户。
sudo -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
授予权限。
sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
OnlyOffice文档服务器需要nodejs 8.0+,但Ubuntu存储库中的版本已过时,因此我们需要从上游存储库安装最新的Node.js LTS版本(8.12.0)。
添加Node.js repostiory。
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
安装Node.js.
sudo apt install nodejs
检查Node.js版本。
node -v
样本输出:
v8.12.0
sudo apt install redis-server rabbitmq-server
检查他们的状态。
- systemctl status redis-server
-
- systemctl status rabbitmq-server
您应该看到它们处于活动状态(正在运行)。如果rabbitmq-server
无法启动,那主要是因为计算机内存不足或主机名无效。
使用以下命令添加OnlyOffice存储库。
echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
导入OnlyOffice公钥。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
更新本地程序包索引并安装OnlyOffice文档服务器。请注意,Nginx将作为Web服务器安装,因此如果Apache正在运行,您可能需要停止它。
- sudo apt update
-
- sudo apt install onlyoffice-documentserver
在安装过程中,系统会要求您仅输入PostgreSQL密码。输入“onlyoffice”(不带双引号)。
您还需要接受Microsoft许可条款才能从Microsoft安装TrueType核心字体。
安装完成后,在Web浏览器中输入服务器的公共IP地址,您应该看到“文件服务器正在运行”
要将NextCloud连接到OnlyOffice文档服务器,后者必须以HTTPS模式运行。以下步骤说明如何获取和安装Let的加密TLS证书。
编辑 /etc/nginx/conf.d/onlyoffice-documentserver.conf
文件。
sudo nano /etc/nginx/conf.d/onlyoffice-documentserver.conf
更改配置如下。不要忘记为其设置A记录onlyoffice.your-domain.com
。
- include /etc/nginx/includes/onlyoffice-http.conf;
- server {
- listen 0.0.0.0:80;
- listen [::]:80 default_server;
- server_name onlyoffice.your-domain.com;
- server_tokens off;
-
- include /etc/nginx/includes/onlyoffice-documentserver-*.conf;
-
- location ~ /.well-known/acme-challenge {
- root /var/www/onlyoffice/;
- allow all;
- }
- }
保存并关闭文件。重新加载Nginx以使更改生效。
sudo systemctl reload nginx
然后安装certbot(Let's Encrypt)客户端。
sudo apt install letsencrypt
接下来,运行以下命令以使用webroot插件获取免费的TLS证书。
sudo letsencrypt certonly --webroot --agree-tos --email your-email-address -d onlyoffice.your-domain.com -w /var/www/onlyoffice/
在几秒钟内,您将看到如下所示的消息,这意味着已成功获取TLS证书。
编辑 onlyoffice-documentserver.conf
文件。
sudo nano /etc/nginx/conf.d/onlyoffice-documentserver.conf
删除该文件中的所有内容,并将以下文本粘贴到该文件中。相应地更改红色文本。
include /etc/nginx/includes/onlyoffice-http.conf; ## Normal HTTP host server { listen 0.0.0.0:80; listen [::]:80 default_server; server_name onlyoffice.your-domain.com; server_tokens off; ## Redirects all traffic to the HTTPS host root /nowhere; ## root doesn't have to be a valid path since we are redirecting rewrite ^ https://$host$request_uri? permanent; } #HTTP host for internal services server { listen 127.0.0.1:80; listen [::1]:80; server_name localhost; server_tokens off; include /etc/nginx/includes/onlyoffice-documentserver-common.conf; include /etc/nginx/includes/onlyoffice-documentserver-docservice.conf; } ## HTTPS host server { listen 0.0.0.0:443 ssl; listen [::]:443 ssl default_server; server_name onlyoffice.your-domain.com; server_tokens off; root /usr/share/nginx/html; ssl_certificate /etc/letsencrypt/live/onlyoffice.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/onlyoffice.your-domain.com/privkey.pem; # modern configuration. tweak to your needs. ssl_protocols TLSv1.2; 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'; ssl_prefer_server_ciphers on; # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) add_header Strict-Transport-Security max-age=15768000; ssl_session_cache builtin:1000 shared:SSL:10m; # add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; # ssl_stapling on; # ssl_stapling_verify on; # ssl_trusted_certificate /etc/nginx/ssl/stapling.trusted.crt; # resolver 208.67.222.222 208.67.222.220 valid=300s; # Can change to your DNS resolver if desired # resolver_timeout 10s; ## [Optional] Generate a stronger DHE parameter: ## cd /etc/ssl/certs ## sudo openssl dhparam -out dhparam.pem 4096 ## #ssl_dhparam {{SSL_DHPARAM_PATH}}; location ~ /.well-known/acme-challenge { root /var/www/onlyoffice/; allow all; } include /etc/nginx/includes/onlyoffice-documentserver-*.conf; }
保存并关闭文件。然后测试Nginx配置并重新加载。
- sudo nginx -t
-
- sudo systemctl reload nginx
访问https://onlyoffice.your-domain.com
Web浏览器以验证OnlyOffice文档服务器是否在HTTPS模式下正常运行。
SSH进入Nextloud服务器,然后将目录更改为Nextcloud apps目录。
cd /var/www/nextcloud/apps/
接下来,使用以下命令下载Nextcloud OnlyOffice集成应用程序。
sudo git clone https://github.com/ONLYOFFICE/onlyoffice-owncloud.git onlyoffice
然后转到Nextcloud Apps页面,单击Not Enabled
选项卡并启用OnlyOffice应用程序。
之后,转到Nextcloud管理页面,选择Additional Settings
左窗格中的选项卡,然后在文档编辑服务地址字段中输入OnlyOffice的域名。
保存上述设置后,您应该可以通过单击加号(+)按钮在Nextcloud中创建文档,spreedsheets和演示文件。将打开一个单独的选项卡进行编辑。
您还将在office文档的上下文菜单中看到一个名为“Open in OnlyOffice”的新项目。
OnlyOffice Document服务器使用Nginx作为Web服务器。
如果现有的Nextcloud服务器与Nginx一起运行,那么在同一台机器上安装OnlyOffice时,对Nextcloud服务器没有任何损害。它将删除nginx-core
并安装nginx-extras
软件包,因此会有一些停机时间,但您的配置将完好无损。
如果现有的Nextcloud服务器与Apache Web服务器一起运行,并且您想在同一台计算机上安装OnlyOffice,那么您有两个选择:
如果选择第二个路由,则应在安装OnlyOffice文档服务器之前首先更改Apache的端口号。
编辑ports.conf
文件。
sudo nano /etc/apache2/ports.conf
找到这一行:
Listen 80
将其更改为不同的端口号,如8180.请注意,此处不应使用8080,因为OnlyOffice文档服务器需要端口8080才能启动其docservice。
Listen 8180
您还应该更改SSL端口号,因为稍后Nginx将执行SSL终止。找到这一行:
Listen 443
将端口号更改为4433。
Listen 4433
保存并关闭文件。接下来,编辑Nextcloud的虚拟主机文件。
sudo nano /etc/apache2/sites-enabled/nextcloud.conf
第一行应该是这样的:
<VirtualHost *:80>
将端口号更改为8180。
<VirtualHost *:8180>
我们还应该通过在以下行之前添加注释字符来禁用将HTTP重定向到HTTPS。(您的Nextcloud服务器正在使用HTTPS连接,对吧?)
- #RewriteEngine on
- #RewriteCond %{SERVER_NAME} =nextcloud.your-domain.com
- #RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
并更改SSL侦听端口。
<VirtualHost *:443>
将以上端口更改为4433.保存并关闭该文件。重新加载Apache配置。
sudo systemctl reload apache2
现在Apache侦听端口8180和4433.然后我们可以按照上面的说明安装OnlyOffice文档服务器,它将在此过程中安装Nginx。
安装OnlyOffice文档服务器和Nginx后,创建一个Nginx服务器块文件以代理对Apache的请求。
sudo nano /etc/nginx/conf.d/nextcloud-proxy.conf
将以下行添加到该文件中。用您自己的域名替换域名。该路径 ssl_certificate
和ssl_certificate_key
对咱们加密颁发的证书。如果您使用其他CA颁发的证书,则应输入自己的路径。
server { listen 80; server_name nextcloud.your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name nextcloud.your-domain.com; ssl_certificate /etc/letsencrypt/live/nextcloud.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nextcloud.your-domain.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.1 TLSv1.2; add_header Strict-Transport-Security max-age=15768000; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8180; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
该location / {...}
部分将所有请求重定向到侦听端口8180的Apache Web服务器。保存并关闭该文件。然后测试Nginx配置。
sudo nginx -t
如果语法正常,请重新加载Nginx。
sudo systemctl reload nginx
现在,您应该可以像往常一样访问Nextcloud服务器,而无需在URL中添加端口号。如果您使用以下cURL命令来获取HTTP标头,那么您应该看到前端服务器是Nginx。
curl -I https://nextcloud.your-domain.com
样本输出:
- HTTP/1.1 302 Found
- Server: nginx/1.11.9
- Date: Tue, 14 Mar 2017 08:55:30 GMT
- Content-Type: text/html; charset=UTF-8
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。