首先贴出Nextcloud在Docker Hub上的官方页面,可以先看看官方的命令,再与我这个比较。
https://hub.docker.com/_/nextcloud?tab=description
另外,好多我这篇文章里列出的问题,通过查阅这篇文档基本上都能很好的解决。这也说明出了问题看帮助文档的正确性!::(捂嘴笑)

再续前言

在之前的一篇博客中,我提到了怎么用Docker安装Nextcloud私有云。这里简单复述一下过程:

  • 1.安装Docker,并换源(我用的是Docker-ce)
  • 2.docker run官方镜像源,主要做好端口映射、文件夹映射、自启动(可以参考这里)
#!/bin/bash
docker run -d \
-v /home/docker/nextcloud/data:/var/www/html/data \
-v /home/movies:/var/www/html/data/用户名/files/Movies \
-v /home/docker/nextcloud/custom-apps:/var/www/html/custom_apps \
-v /home/docker/nextcloud/config:/var/www/html/config \
-v /home/docker/nextcloud/config/passwd:/etc/passwd \
-p 80:80 \
--link mysql:mysql \
--name nextcloud \
--restart=always \
helsing/nextcloud 
原文链接:https://blog.csdn.net/u010457406/java/article/details/84335143

这里注意有几行是和我的操作不同的,不用理会,重点记住文件夹映射(可选),和容器自启动。

  • 3.浏览器登陆,基本设置
  • 4.进入容器,把受信域名添加进去

到这里,你的Nextcloud网盘就能初步使用了。不过我最近重装了一台旧笔记本用做服务器,再次用Nextcloud的时候,还是有好多事情值得再说一说的。

性能设置

在【设置】-【基本设置】里,可以选择性能的设置,这三个的区别见官方文档

后台任务

在官方文档里,指出用cron做定时任务刷新服务器是个很好的办法,于是按照文档的方案设置了一通,前后发现了这几个问题:

  • crontab设置的定时任务只能www-data用户才能执行————改到docker内执行定时任务————只有进入docker后才会执行————废弃
  • 进入容器需要sudo,而我是Deepin,需要输入密码————配置root账户的crontab
  • crontab不能执行定时任务,而手动就行执行————猜想是环境变量的问题————非也,系命令出错

以下列出正确的操作步骤:

  • 1.创建脚本nextcloud.sh,内容为:

      #! /bin/bash
      docker exec -u www-data 772e7771fbed php -f /var/www/html/cron.php
      sleep 15s   #仅仅为确保命令正确完成

www-data是docker里的用户,如果你也是docker官方源搭建的,不用改它。772e7771fbed为Nextcloud的容器号,需要先执行sudo docker ps -a查看。后面的命令时执行容器里的cron.php文件,无需改动。
需要注意的是:不使用sudo docker exec -it命令,因为“加了-it参数就开启了一个终端,计划任务无法进入任何终端。”,参见这篇博客。这条命令参见Nextcloud社区的这篇讨论

  • 2.切换至root账户:sudo su,编辑定时任务crontab -e,添加

    */5 * * * * /home/moonhikari/sh/nextcloud.sh &> /dev/null

    注意root账户下要写清家目录,最后添加&> /dev/null避免系统发邮件。
    设置完成,在网页里把性能设置改为cron即可。

未完待续

光这点设置就耗费了我大半天的时间,其他的以后用到会持续更新!
这里贴出几个这次用到的命令

Deepin下查看crontab的日志

journalctl -f /usr/sbin/cron

Docker设置自启动

docker update --restart=always 容器名称或者容器id

升级更新

另外,docker安装的Nextcloud更新不能使用“升级管理器”,但可以借助Docker的特性进行升级,方法来源这篇博客

  • 1.更新镜像
docker pull nextcloud
  • 2.创建临时容器
    通过 --volumes-from 选项加载原来容器的数据卷, 772e7771fbed 为原容器的ID。临时指定一个端口,以便测试。

    docker run -d --name tmpcloud -p 3000:80 --volumes-from 772e7771fbed nextcloud
  • 3.删除原来的容器并创建新容器
docker rm 772e7771fbed
docker run -d --name nextcloud --restart=always -p 8080:80 \
-- volumes-from tmpcloud nextcloud

同样,文件夹映射可选可不选。

  • 4.删除掉旧的镜像与临时容器
docker image rm c6d89012cfd7
docker stop tmpcloud
docker rm tmpcloud