使用Docker搭建NextCloud私人云盘+Collabora文件预览编辑

  • 前言
  • 开始搭建
    • 编写docker-compose.yml文件
    • nginx.conf
    • 启动容器
    • NextCloud配置
      • 接下来配置文件预览服务
      • 启动collabora预览服务
      • 在nextCloud中配置collabora
  • 结尾

前言

今天在看头条的时候,看到了一篇文章,名为《Python3+服务器搭建私人云盘》的文章,看着感觉还不错,也不是很难,所以就想自己动手搭建一个。翻到下面评论的时候,看大家有说NextCloud,名字听上去还不错,然后就搜了搜相关的资料,感觉NextCloud要比使用Python搭建的这个私人云盘好多了,然后就开始了我的折腾之路。虽说在网上看到了许多文章、博客都说是一键部署,但有可能是因为环境不同所导致的,所以踩了许多坑,在这里与大家分享一下,我的踩坑之路。

开始搭建

我所部署的环境是Ubuntu 18.04,已经安装好了docker以及docker-compose等相关组件,docker的安装文章有很多,所以我在这里就不再赘述了。

编写docker-compose.yml文件

version: '3'
services:web:hostname: webimage: nginxports:- 9101:80networks:- cloud_netrestart: alwaysvolumes:- ./nextcloud:/var/www/html- ./nginx.conf:/etc/nginx/nginx.conf:rodepends_on:- appapp:hostname: appimage: nextcloud:17.0.3-fpm-alpinerestart: alwaysnetworks:- cloud_netvolumes:- ./nextcloud:/var/www/htmldb:hostname: dbimage: mariadbrestart: alwaysnetworks:- cloud_netvolumes:- ./db/data:/var/lib/mysqlcommand: --character-set-server=utf8environment:MYSQL_ROOT_PASSWORD: root123456MYSQL_DATABASE: nextcloudMYSQL_USER: nextcloudMYSQL_PASSWORD: nextcloud123networks:cloud_net:

我看网上大部分文章中都使用了nginx,所以我这里的文件也是拿过来直接复制了,然后根据自己所需进行了一下修改。
如果要直接使用此配置文件,还需要创建docker的网络,命令为:

docker network create cloud_net

文件中的端口号,数据库用户名密码等相关参数可以根据自己所需进行修改,如不需要使用容器中的数据库,就可以把文件中db相关的内容进行删除,后续可以使用自己已经启动好的数据库进行配置。

nginx.conf

user  www-data;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;set_real_ip_from  10.0.0.0/8;set_real_ip_from  172.16.0.0/12;set_real_ip_from  192.168.0.0/16;real_ip_header    X-Real-IP;#gzip  on;upstream php-handler {server app:9000;}server {listen 80;add_header X-Content-Type-Options nosniff;add_header X-XSS-Protection "1; mode=block";add_header X-Robots-Tag none;add_header X-Download-Options noopen;add_header X-Permitted-Cross-Domain-Policies none;add_header Referrer-Policy no-referrer;root /var/www/html;location = /robots.txt {allow all;log_not_found off;access_log off;}location = /.well-known/carddav {return 301 $scheme://$host/remote.php/dav;}location = /.well-known/caldav {return 301 $scheme://$host/remote.php/dav;}# set max upload sizeclient_max_body_size 10G;fastcgi_buffers 64 4K;# Enable gzip but do not remove ETag headersgzip on;gzip_vary on;gzip_comp_level 4;gzip_min_length 256;gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;location / {rewrite ^ /index.php$request_uri;}location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {deny all;}location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {deny all;}location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {fastcgi_split_path_info ^(.+\.php)(/.*)$;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;# fastcgi_param HTTPS on;#Avoid sending the security headers twicefastcgi_param modHeadersAvailable true;fastcgi_param front_controller_active true;fastcgi_pass php-handler;fastcgi_intercept_errors on;fastcgi_request_buffering off;}location ~ ^/(?:updater|ocs-provider)(?:$|/) {try_files $uri/ =404;index index.php;}# Adding the cache control header for js and css files# Make sure it is BELOW the PHP blocklocation ~ \.(?:css|js|woff|svg|gif)$ {try_files $uri /index.php$request_uri;add_header Cache-Control "public, max-age=15778463";add_header X-Content-Type-Options nosniff;add_header X-XSS-Protection "1; mode=block";add_header X-Robots-Tag none;add_header X-Download-Options noopen;add_header X-Permitted-Cross-Domain-Policies none;add_header Referrer-Policy no-referrer;# Optional: Don't log access to assetsaccess_log off;}location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {try_files $uri /index.php$request_uri;# Optional: Don't log access to other assetsaccess_log off;}}}

这个配置文件可以拿来直接使用,放在docker-compose.yml同目录下即可,文件名为nginx.conf。

启动容器

docker-compose up -d

启动完成之后,可以查看一下是否全都启动成功

docker-compose ps

如果其中的State全部都为UP,则为启动成功。如果启动失败,需检查相关配置文件是否有误。
启动成功之后,需要等待一会,它会去创建数据库等相关操作。可以去通过ip+端口去查看是否成功,如果出现了nextCloud的页面,即表示成功,可以进行下一步配置了。如果出现了nginx的502页面,就需要多等待一会,不要认为是失败了,而重新做不必要的操作。

NextCloud配置

输入ip+端口访问nextCloud页面,创建管理员账号与数据库配置:

用户名和密码自定义即可。数据库相关信息为docker-compose.yml文件中配置的。全部填写完成之后,点击下方按钮创建。

如果创建完成之后出现0770权限问题,需要修改docker-compose.yml同目录下的nextcloud/config/config.php文件,在文件中添加如下配置:

'check_data_directory_permissions' => false,


然后返回到docker-compose.yml文件目录下,重启容器:

docker-compose restart app

等待重启成功之后,就不会报这个错误了。
登录成功之后,就会出现nextCloud的主页。

接下来配置文件预览服务

因为网络的原因,可能无法在nextCloud应用中安装collabora插件,所以我采用的是离线下载安装的方法。

https://github-production-release-asset-2e65be.s3.amazonaws.com/75662432/d2568100-46b9-11ea-8a73-e32fa22e115f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200307%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200307T020722Z&X-Amz-Expires=300&X-Amz-Signature=b3ab2c86e7b1eac20d4d5a78482e90231c93ed196e438cda3641de1ff70d0cf7&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Drichdocuments.tar.gz&response-content-type=application%2Foctet-stream

这里为应用的下载地址。将下载后的文件解压到与docker-compose.yml同目录下的netxtcloud/apps/目录下。
然后在nextCloud页面中在右上角选择齿轮形状的按钮=》应用,然后找到刚添加的插件,选择启用即可。

启动collabora预览服务

docker run -t -d -p 0.0.0.0:9980:9980 -e 'domain=192\\.168\\.0\\.6|192\\.168\\.0\\.12' -e "username=admin" -e "password=admin" --restart always --cap-add MKNOD collabora/code

这里的端口可以根据自己环境进行设置,以及用户名密码,domain等。
domain:允许访问的地址或域名,多个域名或地址用 “|”隔开,“.”需要用 “\”进行转义。配置完成回车即可启动。
启动成功之后还需要一步配置:

docker ps | grep collabora  ## 查看刚启动的collabora的容器id,输出的第一列为容器id
docker exec -it 容器id /bin/bash ## 即可进入启动的docker容器

然我我们需要修改一个配置文件,文件位置为:/etc/loolwsd/loolwsd.xml。
如果linux命令好的朋友可以使用sed对文件进行编辑修改。这里由于我的sed命令不是很熟悉,就不用这种方法了。
我采用的是将文件复制到宿主机内进行修改后,在复制回容器中。

docker cp 容器id:/etc/loolwsd/loolwsd.xml ./

接着我们使用vi或者vim对文件进行编辑:

vim +/SSL loolwsd.xml

使用此命令即可打开文件并定位到需要修改的位置。

将红框位置修改为false,我这里的是修改过后的文件,如果文件没有被修改这里的值会是true。然后保存退出。
接着将文件在复制回容器中:

docker cp loolwsd.xml 容器id:/etc/loolwsd/

然后我们需要重启容器:

docker restart 容器id

此时collabora文件预览编辑服务就算配置完成了,接下来我们需要在nextCloud页面中进行配置测试。

在nextCloud中配置collabora

然后点击右上角齿轮形状的按钮或者此时为用户头像,选择设置,在线协作选项进行设置。

在此处填写上刚刚collabora服务的地址即可。然后点击Apply应用。
此时就全部配置完成了,然我我们在nextCloud中新建一个文件测试一下。

结尾

至此我们的私人网盘+文件预览编辑服务就部署成功了,nextCloud还有桌面客户端和手机APP,大家可以进行下载进行测试也是可以的。

使用Docker搭建NextCloud私人云盘+Collabora文件预览编辑相关推荐

  1. 搭建nextcloud私人云盘

    搭建nextcloud私人云盘 1. Linux发行版本 本人的设备是OragePi4,安装的是基于debian的Armbian Buster Server,树莓派,云主机等可以安装对应的版本. 2. ...

  2. Docker搭建nextcloud使用云盘

    Docker搭建nextcloud使用云盘 1 下载nextcloud # 下载镜像 docker pull nextcloud:25.0.0 2 docker-compe安装 创建yml文件,名称是 ...

  3. Debian - 搭建NextCloud私人云盘

    nextcloud简介 nextcloud前身是大名鼎鼎的owncloud,两者均是开源的网络硬盘系统.nextcloud不仅可以搭建私有云存储和同步数据,也提供联系人.日程管理功能,web端还提供私 ...

  4. [折腾日记]NextCloud 私人云盘部署教程

    NextCloud 私人云盘部署教程 你是否还在使用微信来分享文件?微信虽然可以传输文件,却无法帮你存储文件,更无法整理你的诸多文件.一个月以前发给某个同事的文件,你要找很久才找到,而且可能会发现&q ...

  5. 闲置硬盘自制nas私有云_家里闲置硬盘怎么办?教你自己搭建一个私人云盘!

    原标题:家里闲置硬盘怎么办?教你自己搭建一个私人云盘! 最近在家比较闲,把家里之前电脑硬盘升级到固态硬盘的那个500G的机械硬盘翻出来,看看如何利用起来,在家里放着也是浪费.因为有好多个人资源需要,但 ...

  6. 基于 Docker 搭建 ownCloud 个人云盘

    在我的博客上阅读 基于 Docker 搭建 ownCloud 个人云盘 官方文档 机翻气息贯穿全文~ 概述 配置: 公开端口 8080,允许 HTTP 连接. 使用单独的 MariaDB 和 Redi ...

  7. NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

    文章目录 摘要 视频教程 1. 环境搭建 2. 测试局域网访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4 配置固定http公网地址 4.1 ...

  8. 如何秒级搭建低成本私人云盘

    随着数字化不断深入,客户的文档资料使用场景延伸到办公.生活.娱乐.家庭等并由此衍生出云盘产品,同时客户的集中痛点聚焦在云盘的速度.价格.安全.分享功能上.现有产品基本采用虚拟化云端方式存储客户资料,对 ...

  9. 通过Cloudreve+云服务器快速搭建一个私人云盘

    文章目录 写在前面 Cloudreve 是什么? 废话不多说我们直接开始 1. 获取 Cloudreve 2. 上传Cloudreve安装包并解压运行 3. 设置进程守护 写在前面 本笔记使用Cent ...

最新文章

  1. Attach Volume 操作(Part I) - 每天5分钟玩转 OpenStack(53)
  2. linux wc命令参数及用法详解
  3. C++实现二叉搜索树的查找(附完整源码)
  4. Embedded web server initialization - jar file default-mimetypes.properties
  5. 更新10_linux,时隔十年,QQ更新了Linux版本
  6. Photoshop插件-创建所有亮度通道蒙板-脚本开发-PS插件
  7. win8/8.1改win7原版系统全部教程之先把驱动精灵万能网卡版存到U盘(2)
  8. linux内核学习资料总结
  9. QQ坦白说_6.09前
  10. 人工智能导论(3)——确定性推理(Certainty Reasoning)
  11. 一键加速索尼相机SD卡文件的复制操作,文件操作批处理教程
  12. wxid中文是什么_微信号wxid怎么登录?wxid与微信号是什么关系?
  13. 【Axure教程】拖动排序——扣款顺序
  14. 微信改版,“内容+服务”成为王道?
  15. 查看CentOS的版本
  16. 机器人导论学习(一)
  17. IIR滤波器和FIR滤波器的区别与联系
  18. C++:计算对称正定 (SPD) 矩阵的逆矩阵(附完整源码)
  19. GitHub 智能编程助手 GPT-4 Copilot X 震撼来袭!动动嘴,AI 就能帮你生成代码
  20. [Latex][BibTex]引用中文文献作者超过3人时用“et al”而不是“等”的解决方法

热门文章

  1. Verilog实现上升、下降沿检测 FPGA
  2. JVM Dump分析
  3. matlab自动重合闸,电力系统自动重合闸matlab仿真.doc
  4. 类似密室逃脱的小游戏
  5. CAD/CAM氧化锆义齿车床假牙雕铣加工高速精密电主轴
  6. 如何操作才能使照片拉伸不变形
  7. 单片机多功能电子琴课设_基于51单片机电子琴的设计(附源码及论文)
  8. 江西医学院 招生 计算机专业,南昌大学江西医学院2021年招生录取分数线
  9. 安装deepin配置dtk开发环境
  10. 标准十进制ASCII码表