Docker 镜像部署 Nextcloud

一些其他的话

以前在树莓派上部署过 Seafile,并整理写出过一篇笔记:在树莓派上搭建 Seafile – 不让树莓派在抽屉里积灰,但后删掉了,现在想尝试在树莓派上部署 Nextcloud,但觉得直接部署太麻烦,不想折腾也就在 Docker 上找来了官方的 Docker 镜像直接部署了,项目在 Docker 中的链接

这篇文章是我自己整理的笔记,没写到的内容建议直接看 Docker 里的官方文档

另外呢,下文所有的操作都是我在树莓派上进行的,所以内容仅针对 Linux。

执行 Docker 命令

首先需要安装 Docker,这个我在上一篇文章中提到了安装方法。

Docker 镜像私有部署为知笔记

拉取镜像并试运行

以下指令建议都在 root 用户下执行,或加上前缀 sudo

启动命令:

docker run -d -p 8080:80 --name nextcloud nextcloud:fpm

然后使用 http://ip:8080/来进行访问,其中 -p 8080:80 中的 8080 端口可自行修改。

执行了这个命令之后,大概过个几分钟就能正常打开 Nextcloud 页面并且使用了,但这里建议如果打算正式投入使用,在此之前先做好数据持久化。

数据持久化

需要说明的是,平常如果关闭了容器,比如执行了 docker stop nextcloud 指令后,容器并没有被删除,如果想再次打开的话,直接用 docker start nextcloud 指令启动就可以了,但为了能够备份数据,建议使用 -v 参数来挂载数据。

首先把数据复制出来,使用指令:

docker cp nextcloud:/var/www/html ~/nextcloud

这条指令将数据复制出来了,并且在当前用户文件夹中创建了一个名为 nextcloud 的文件夹。

然后先 docker stop 关闭掉镜像,因为这里已经把数据复制出来了,接下来使用 docker rm 把镜像删除掉。

然后输入指令开启一个新的镜像,并且在上面的启动指令的基础上添加一项 -v 参数进行挂载。

docker run -d -p 8080:80 --name nextcloud -v ~/nextcloud:/var/www/html nextcloud

也就是将宿主机中此用户目录下的 nextcloud 目录与容器里的 /var/www/html 挂载到一起。

比较建议先这么做之后再开始正式使用 Nextcloud,因为这样的话后续出了什么问题需要修改 config/config.php 时也可以直接在宿主机上进行操作。

我遇到的一些问题

首先是遇到了提示:内部服务器错误

忘了截图,这张图是我在网上找的。

我这个是权限问题,直接把宿主机上的 nextcloud 目录用 chmod 777 nextcloud -Rf 把权限设置成 777 就行了。这就是我为什么在上面说最好是先 -v 挂载好了盘之后再正式使用 Nextcloud 的原因之一了。

完成了上面的操作之后,会出现一个简单明了的错误提示:错误

这里建议说把权限改为 0770,我这里貌似改了会出问题,在网上查了一下,得到一个方法。

首先,进入宿主机的 nextcloud 文件夹,这个文件夹里的内容跟容器里 /var/www/html 文件夹里的内容是同步的,这一点只要知道 docker run -v 中的这个 -v 参数是干什么的就很容易理解。

然后进入 config 文件夹,里面有个 config.php 文件,打开,然后在最后一行加入这么一句:

'check_data_directory_permissions' => false

如图:

保存,搞定。

还有一个问题,就是如果 IP 不是固定的并且没有绑定域名的话,访问页面可能会出现提示:通过不被信任的域名访问。

这个问题也好解决,只需要打开 config/config.php ,在里面 trusted_domains 这一项中添加一行:

preg_match('/cli/i',php_sapi_name())?'127.0.0.1':$_SERVER['SERVER_NAME'],

如图:


暂时就这些了,之后如果还遇到了什么问题,解决了的话就到这里进行补充。


Docker 镜像部署 Nextcloud
https://vi.diipx.com/2020/Docker-Nextcloud
作者
晚空
发布于
2020年08月22日
许可协议