首先贴出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