目 录CONTENT

文章目录

【好玩儿的Docker项目】可能是目前全网最完整的Docker搭建Nextcloud教程(包含安全与设置警告报错信息的解决方法)

咕咕
2022-04-13 / 0 评论 / 1 点赞 / 3490 阅读 / 0 字
温馨提示:
本文最后更新于2024-02-21,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

image-20220409160141010

1. 介绍

上次,咕咕在博客里分享了aapanel(宝塔)安装Nextcloud的教程——【好玩的项目】可能是史上最全的基于宝塔面板(海外版aapanel)的Nextcloud网盘搭建教程!(对于Nextcloud还不了解的小伙伴也可以看一下这篇文章)

当时不用Docker搭建的原因就是Nextcloud安装完成之后,

image-20220413154128369

这边的安全与设置警告会有很多提示信息,需要你一个一个优化,用Docker的话,会非常麻烦。而用aapanel(宝塔)安装,由于有一个可视化的面板,很多操作会容易很多。

然而,从文章发布之后,后台一直还是有小伙伴询问用Docker安装Nextcloud的事情,今天咕咕自己也稍微尝试了一下,基本上把安全与设置警告的信息都解决了,所以想着索性分享给大家。

相对于之前的安装方法,这个Docker版本的安装最大的两个特点:

  • 更新方便
  • 搬家、转移方便

今天用到的镜像来自Nextcloud官方镜像:https://hub.docker.com/_/nextcloud

支持多平台:linux/386、linux/amd64、linux/arm/v5

2. 搭建环境

3. 搭建视频(还没拍 待上传 = =)

YouTube:https://youtu.be/twhyKoIBiVY

哔哩哔哩【高清版本可以点击去吐槽到B站观看】:

4. 搭建方式

4.1 搭建

服务器初始设置,参考

新买了一台服务器“必须”要做的6件小事

【Docker系列】不用宝塔面板,小白一样可以玩转VPS服务器!

sudo -i # 切换到root用户

apt update -y  # 升级packages

apt install wget curl sudo vim git  # Debian系统比较干净,安装常用的软件

创建一下安装的目录:

mkdir -p /root/data/docker_data/nextcloud

cd /root/data/docker_data/nextcloud

nano docker-compose.yml

docker-compose.yml填入以下内容:

2022年5月12日更新版本,建议直接用这个,镜像比官方好用,可以省去后面的一些安全警告的配置等(记得NPM第一页那边,选https):

新版的config.php位置在

/root/data/docker_data/nextcloud/config/www/nextcloud/config/config.php

apps目录在这边:

/root/data/docker_data/nextcloud/config/www/nextcloud/apps

升级可以直接在后台升级(记得先备份一下数据稳妥一些):

image-20230107214512843

---
version: "2.1"
services:
  nextcloud:
    image: lscr.io/linuxserver/nextcloud:latest
    container_name: nextcloud
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - MYSQL_HOST=mysql
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=nextcloud
    volumes:
      - /root/data/docker_data/nextcloud/config:/config
      - /root/data/docker_data/nextcloud/data:/data
    ports:
      - 4433:443
    restart: unless-stopped

  mysql:
    image: mysql:8.0
    container_name: nextcloud-db
    restart: unless-stopped
    environment:
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=nextcloud
      - MYSQL_ROOT_PASSWORD=nextcloud
    volumes:
      - /root/data/docker_data/nextcloud/db:/var/lib/mysql

旧版:

version: "3"

services:
  nextcloud:
    container_name: nextcloud-app
    image: nextcloud:latest
    restart: unless-stopped
    ports:
      - 8080:80
    environment:
      - MYSQL_HOST=mysql
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=nextcloud
    volumes:
      - /root/data/docker_data/nextcloud/data:/var/www/html

  mysql:
    image: mysql:8.0
    container_name: nextcloud-db
    restart: unless-stopped
    environment:
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=nextcloud
      - MYSQL_ROOT_PASSWORD=nextcloud
    volumes:
      - /root/data/docker_data/nextcloud/db:/var/lib/mysql

#volumes:
#  mysql:
#  nextcloud:

没问题的话,ctrl+x退出,按y保存,enter确认。

运行:

docker-compose up -d 

访问:http:服务ip:8080 即可。

注意:

1、不知道服务器IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的IP。

2、遇到访问不了的情况,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。

4.2 更新

cp -r /root/data/docker_data/nextcloud /root/data/docker_data/nextcloud.archive  # 万事先备份,以防万一

cd /root/data/docker_data/nextcloud  # 进入docker-compose所在的文件夹

docker-compose pull    # 拉取最新的镜像

docker-compose up -d   # 重新更新当前镜像

利用Docker-compose搭建的应用,更新非常容易~

4.3 卸载

cd /root/data/docker_data/nextcloud  # 进入docker-compose所在的文件夹

docker-compose down    # 停止容器,此时不会删除映射到本地的数据

rm -rf /root/data/docker_data/nextcloud  # 完全删除映射到本地的数据

5. 反向代理

实测不管是Nginx Proxy Manager还是aapanel,反向代理之后,均无法连接到远程云端(比如OneDrive、Google Drive)。

有成功的小伙伴欢迎评论区留言分享。

5.1 利用Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程

之后,登陆Nginx Proxy Manager(不会的看这个:安装Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称NPM)会用到80443端口,所以本机不能占用(比如原来就有Nginx)

直接丢几张图:

image-20220413155337013

注意填写对应的域名端口,按文章来的话,应该是8080

image-20220403104353185

这边申请成功后,千万记得再次打开,然后把Force SSLHSTS Enable勾选上

image-20220413155409545

然后就可以用域名来安装访问了。

6. 安全与设置警告解决方法

6.1 通过不被信任的域名访问

image-20220413204003769

如果你啥也没设置,第一步就会遇到这个问题。

我们需要按提示的要求进行设置:

cd /root/data/docker_data/nextcloud/data/config

nano config.php
image-20220413204017210

加入:

1 => 'nx.gao.ee',  

注意改成自己的域名。

ctrl+x 退出,按y保存,按 enter退出。

6.2 你的实例正生成不安全的URL

image-20220413204533787
nano config.php

加入这个:

'overwrite.cli.url' => 'https://nx.gao.ee',
'overwriteprotocol' => 'https',
image-20220413204506389

ctrl+x 退出,按y保存,按 enter退出。

6.3 您的安装没有设置默认的电话区域

nano config.php

加入这个:

'default_phone_region' => 'CN',
image-20220413205015997

ctrl+x 退出,按y保存,按 enter退出。

6.4 未正确设置以解析……

打开Nginx Proxy Manager,找到Advanced,加入这个

location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
image-20220413211327697

保存即可。

6.5 php-imagick 模块不支持 SVG模块不支持SVG

虽然不影响正常使用,但强迫症使然,总想解决掉。

经过一番查找,发现这个和libmagickcore的某个组件有关,试着安装看看。

首先我们需要进入到容器内部,然后安装。

先来查看容器ID:

docker container ls
image-20220413205336044

进入Nextcloud容器:

docker exec -it 2ee2 bash  # 只要写前四位即可

安装:

apt update -y 

apt install libmagickcore-6.q16-6-extra -y

然后退出即可

exit

注意:此方法修改,后续每次镜像更新,都需要进入容器重新安装

6.6 cron任务自动执行

*/5 * * * * root docker exec -u 1000 nextcloud php -f /config/www/nextcloud/cron.php 2>&1 /dev/null

注意nextcloud是容器名字,1000是id,是linuxserver容器的cron路径。

6.7 重启Nextcloud

上述都搞定之后,最后重启Nextcloud:

cd /root/data/docker_data/nextcloud  # 进入docker-compose所在的文件夹

docker-compose up -d   # 重新启动

错误全部解决。

7. 结尾

祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。

8. 参考资料

https://github.com/NginxProxyManager/nginx-proxy-manager/issues/448
https://www.himstudy.net/%E8%A7%A3%E5%86%B3nextcloud%E6%8F%90%E7%A4%BAphp-imagick%E6%A8%A1%E5%9D%97%E4%B8%8D%E6%94%AF%E6%8C%81svg%E7%9A%84%E9%97%AE%E9%A2%98/

https://yeasy.gitbook.io/docker_practice/container/attach_exec

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区