写点什么

Nextcloud 一站式体验

用户头像
白粥
关注
发布于: 2021 年 05 月 18 日
Nextcloud一站式体验

最近整理了几块旧硬盘,看到了很多十几年前的老照片,很是感慨!于是想用旧笔记本搭建一个私有的网盘,将这些美好的照片管理起来。下面记录本次搭建的过程。

1. 环境与版本

1.1 基本信息

  • 宿主机:Ubuntu 20.04

  • Nextcloud21.0.1

  • 测试时间:2021-05

1.2 参考链接

2. Docker 部署 Nextcloud

2.1 docker-compose.yml


version: '2'
services: db: image: mariadb container_name: nextcloud-db restart: always command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - /{宿主机挂载路径}/nextcloud-db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD={ROOT密码:xxxx} - MYSQL_DATABASE={数据库名:xxxx} - MYSQL_USER={用户:xxx} - MYSQL_PASSWORD={密码:xxxx}
redis: image: redis:alpine container_name: nextcloud-redis restart: always
app: image: nextcloud container_name: nextcloud-app restart: always ports: - 80:80 links: - db - redis volumes: - /{宿主机挂载路径}/nextcloud-data:/var/www/html environment: - MYSQL_DATABASE={数据库名:xxxx} - MYSQL_USER={用户:xxx} - MYSQL_PASSWORD={密码:xxxx} - MYSQL_HOST=db - REDIS_HOST=redis
复制代码


将以上示例文件中的“{xxxx}”替换成真实的值之后,执行命令即可启动 NextCloud:


docker-compose up -d
复制代码



2.2 添加 Docker 用户组

安装 Docker 之后,如果当前用户不是管理员,在执行 docker 命令时需要加上 “sudo”。此时把当前用户加入到 Docker 用户组即可正常访问。


# 1. 新建docker组sudo groupadd docker
# 2. 将当前用户加入到docker组sudo gpasswd -a $USER docker
# 3. 更新用户组sudo newgrp docker
# 4. 测试docker images
复制代码


3. Nextcloud 优化

由于我们是通过旧设备搭建的 Nextcloud,在通过浏览器访问 Nextcloud 会发现特别慢。别担心,这并不一定是硬件老旧的原因,我们可以通过以下尝试来优化 nextcloud 的速度,提升用户体验。

3.1 优化后台任务

点击用户头像,在下拉列表中选中“设置”选项;



在“管理”菜单项下,点击“基本设置”功能,我们可以看到 “后台任务”功能。后台任务默认是以“AJAX”的形式执行的,所以我们访问页面时会觉得很慢。我们选择推荐配置,选中“Cron”。利用系统的定时任务执行相关的后台任务,提高页面的响应速度。

AJAX:调度方法是默认选项。不幸的是,它也是最不可靠的。每次用户访问 Nextcloud 页面时,都会执行一个后台作业。这种机制的优点是它不需要访问系统也不需要注册第三方服务。与 Webcron 服务相比,这种机制的缺点是它需要定期访问页面才能触发它。

Webcron: 通过在外部 webcron 服务(例如,easyCron)上注册 Nextcloud cron.php 脚本地址,可以确保定期执行后台作业。要在服务器上使用此类服务,您必须能够使用 Internet 访问服务器。

Cron: 使用操作系统 cron 功能是执行常规任务的首选方法。此方法可以执行预定作业,而不会受到 Web 服务器可能具有的固有限制。



通过命令对当前用户添加自动任务:

crontab -e
复制代码


-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

在文字编辑器中添加命令,5 分钟执行一次容器内的 cron.php 文件:


*/5 * * * * docker exec --user www-data nextcloud-app php /var/www/html/cron.php
复制代码


其中 nextcloud-app 为 docker-compose.yml 中定义的容器名称,可根据实际情况调整

添加完成后,可以在“基本设置”页面观察后台任务的执行情况。



3.2 生成图片缩略图:Preview Generator

应用商店

Preview Generator 是 Nextcloud 应用商店中提供的插件,可以提前生成图片的缩略图,提升系统性能,提高加载速度。



如果安装失败,我们根据提示,把对应的下载地址复制出来,通过其他方式下载之后,解压到 nextcloud 的 “/var/www/html/apps”**目录下,然后再回到应用安装界面,点击“启用”**即可。

安装完成后,我们执行以下命令,生成图片的缩略图即可:


docker exec --user www-data nextcloud-app php occ preview:generate-all
复制代码


对应的缩略图会存储在 “/var/www/html/data/appdata_ocjvg36ftk1b/preview”目录下。

3.2.1 设置自动任务

我们可以通过添加自动任务来自动生成图片的缩略图,向之前一样,执行 “crontab -e”命令,添加如下条目即可:

# 每天23点执行缩略图0 23 * * * docker exec --user www-data nextcloud-app  php occ preview:pre-generate
复制代码

3.3 生成视频缩略图

Nextcloud 默认不会开启 视频和 PDF 的缩略图,在使用时多有不便。下面我们给它添加视频缩略图功能。该功能依赖 ffmpeg,可通过以下命令为 容器 安装依赖:


# 换源docker exec -it --user root nextcloud-app  sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.listdocker exec -it --user root nextcloud-app  apt-get update# 安装ffmpegdocker exec -it --user root nextcloud-app  apt-get -y  install ffmpeg# 验证docker exec -it nextcloud-app  ffmpeg
复制代码


“/var/www/html/config/config.php”最后添加配置(注意逗号):

'enabledPreviewProviders' => [    'OC\Preview\PNG',    'OC\Preview\JPEG',    'OC\Preview\GIF',    'OC\Preview\HEIC',    'OC\Preview\BMP',    'OC\Preview\XBitmap',    'OC\Preview\MP3',    'OC\Preview\TXT',    'OC\Preview\MarkDown',    'OC\Preview\OpenDocument',    'OC\Preview\Krita',    'OC\Preview\Movie', ],
复制代码



重启容器即可生效:

docker-compose restart
复制代码

3.4 设置自动扫描文件

如果我们有非常多的资料需要加入到 Nextcloud 中,显然自带的上传功能并不能满足需求。我们可以把资料直接复制到对应的用户目录下:“/var/www/html/data/{用户}/files”,然后让 Nextcloud 自动扫描即可加入到索引中。



执行索引命令:

docker exec --user www-data nextcloud-app php occ files:scan --all
复制代码

3.4.1 设置自动扫描任务

我们可以通过添加自动任务来自动生成文件的索引,向之前一样,执行 “crontab -e”命令,添加如下条目即可:

# 每30分钟扫描目录*/30 * * * * docker exec --user www-data nextcloud-app  php occ files:scan --all
复制代码

3.5 挂载本地或者远程磁盘

在 “应用 > 您的应用”中,将“External storage support” 启用即可。



在“设置 > 管理 > 外部存储”中即可管理外部存储。



4. 总结

以上安装和优化之后,软件部分基本告一段落。但是如果想获得更佳的使用体验,还需要搭配 千兆路由器5G 网卡 等硬件。软硬兼备之后,才能提供更佳的局域网访问速度。

发布于: 2021 年 05 月 18 日阅读数: 33
用户头像

白粥

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
Nextcloud一站式体验