最近整理了几块旧硬盘,看到了很多十几年前的老照片,很是感慨!于是想用旧笔记本搭建一个私有的网盘,将这些美好的照片管理起来。下面记录本次搭建的过程。
1. 环境与版本
1.1 基本信息
宿主机:Ubuntu 20.04
Nextcloud:21.0.1
测试时间:2021-05
1.2 参考链接
2. Docker 部署 Nextcloud
2.1 docker-compose.yml
version: '2' |
将以上示例文件中的“{xxxx}”替换成真实的值之后,执行命令即可启动NextCloud:
docker-compose up -d |
2.2 添加Docker用户组
安装Docker之后,如果当前用户不是管理员,在执行docker命令时需要加上 “sudo”。此时把当前用户加入到Docker用户组即可正常访问。
1. 新建docker组 |
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点执行缩略图 |
3.3 生成视频缩略图
Nextcloud默认不会开启 视频和PDF 的缩略图,在使用时多有不便。下面我们给它添加视频缩略图功能。该功能依赖 ffmpeg,可通过以下命令为 容器 安装依赖:
换源 |
在“/var/www/html/config/config.php”最后添加配置(注意逗号):
'enabledPreviewProviders' => [ |
重启容器即可生效:
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分钟扫描目录 |
3.5 挂载本地或者远程磁盘
在 “应用 > 您的应用”中,将“External storage support” 启用即可。
在“设置 > 管理 > 外部存储”中即可管理外部存储。
4. 总结
以上安装和优化之后,软件部分基本告一段落。但是如果想获得更佳的使用体验,还需要搭配 千兆路由器、5G网卡 等硬件。软硬兼备之后,才能提供更佳的局域网访问速度。