【Docker推荐】Nextcloud私有云网盘

什么是Nextcloud

Nextcloud脱胎于ownCloud,是一个基于PHP的开源云存储方案。其对于私有云网盘来说有几点优势:

  • 用户文件不存入数据库,恢复时无需重建
  • 提供非常丰富的多平台客户端:Windows/Mac/Linux/Android/iOS,提供比较完善的即时备份/同步功能
  • 提供webDAV接口,非常方便备份和映射
  • 配合官方插件可以提供非常强悍的web端呈现,包括在线查看图片/编辑文档/播放视频
  • 方便生成分享链接

使用Docker搭建Nextcloud

Docker

拉取镜像

1
docker pull nextcloud

安装Nextcloud

端口8001和目录/docker/next根据自己的需求来修改。

1
docker run -d --restart=always --privileged=true --name nextcloud -v /docker/nextcloud:/var/www/html -p 8001:80 nextcloud

docker-compose

创建docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
version: "3"

services:
nextcloud:
ports:
- "8001:80"
volumes:
- /docker/nextcloud:/var/www/html
restart: always
privileged: true
image: nextcloud
container_name: nextcloud

然后使用命令docker-compose up -d搭建

安装Nextcloud

准备工作

  1. 前往服务器控制台防火墙打开8001端口
  2. 然后访问 你的IP:8001 进入到Nextcloud安装界面

数据库的选择

不想折腾的话就选择默认的SQLite,如果习惯用MySQL/MariaDB的话也可以选择,但是我强烈推荐使用PostgreSQL数据库,经过我的测试,Nextcloud使用PostgreSQLMySQL/MariaDB快一些,有兴趣的话也可以自己测试一下。

输入管理员的用户名和密码点击配置好数据库,点击安装按钮进行安装

配置Redis(可选)

配置Redis可提高页面响应速度

打开/config/config.php,在memcache.local下面添加两行

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'Redis的地址',
'port' => 6379,
'password' => 'Redis的密码',
),

配置后台任务(必须)

设置Cron

打开设置-管理-基本设置-后台任务-选择Cron

添加定时任务

1
crontab -e

输入i进入编辑模式,在最后一行添加定时任务,然后按ESC,输入:wq保存退出

1
*/5 * * * * docker exec --user www-data nextcloud php /var/www/html/cron.php

重启定时任务服务使其立马生效

1
service crond restart

提高上传速度(重要)

1
2
docker exec -it -u 33 nextcloud /bin/bash
php occ config:app:set files max_chunk_size --value 0

成功提示:Config value max_chunk_size for app files set to 0

生成缩略图(可选)

使用时会发现,Nextcloud 上传的视频不能生成缩略图。其实 Nextcloud 本身支持生成视频缩略图,需要安装 ffmpeg 并修改配置

1
docker exec -it nextcloud bash

备份镜像源

1
cp /etc/apt/sources.list /etc/apt/sources.list.bak

切换apt镜像源,不然太慢了

1
2
3
4
5
6
echo deb https://mirrors.bfsu.edu.cn/debian bullseye main > /etc/apt/sources.list
echo deb https://mirrors.bfsu.edu.cn/debian-security bullseye-security main >> /etc/apt/sources.list
echo deb https://mirrors.bfsu.edu.cn/debian bullseye-updates main >> /etc/apt/sources.list
apt-get update
apt update
apt install ffmpeg

修改配置文件

添加:

1
2
3
4
5
6
7
'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\Image',
1 => 'OC\\Preview\\Movie',
2 => 'OC\\Preview\\TXT',
),

修改完配置文件记得重启Nextcloud容器来使其生效

1
docker restart nextcloud

至此,安装Nextcloud完成,你可以快乐的使用你的个人网盘了

升级到最新版本

1
docker exec --user www-data nextcloud php occ upgrade