私人网盘搭建

1403

NextCloud Docker Install

通过OwnCloud团队带来的全新产品:NextCloud,我们可以快速拥有自己的个人网盘。

Nextcloud首页.png

docker搭建

话不多说,选用当下最新的版本

docker pull nextcloud:17.0.0

配置主目录、数据盘、配置文件夹

mkdir -p ~/docker_mnt/nextcloud ~/docker_mnt/nextcloud/custom_apps ~/docker_mnt/nextcloud/data ~/docker_mnt/nextcloud/config 

启动容器

docker run -d -p 8090:80 --name=nextcloud -v ~/docker_mnt/nextcloud:/var/www/html --restart=always   nextcloud:17.0.0

部署https

# 安装 certbot 以及 certbot nginx 插件
sudo yum install certbot python2-certbot-nginx -y

# 执行配置,中途会询问你的邮箱,如实填写即可
sudo certbot --nginx

# 自动续约
sudo certbot renew --dry-run

配置数据库

通过你的域名访问网页后,首次运行会让你输入数据库相关信息

如果你部署了https

编辑config文件

vim ~/docker_mnt/nextcloud/config/config.php

增加配置,避免某个CSP错误

`overwriteprotocol` => `https`

重启docker

docker container restart nextcloud

外挂SMB存储盘

进入容器内部

docker exec -t -i nextcloud /bin/bash 

安装smbclient

apt-get update
apt-get install smbclient

如果你同时会异地组网的话,你甚至可以外挂你的所有笔记本、台式电脑里的内容,实现大一统。

外挂的存储后台任务

Nextcloud可能无法始终找出远程更改的内容(没有通过Nextcloud更改了文件),尤其是当它在外部存储的文件夹层次结构中非常深入时。 此时我们制定定时扫描任务:

docker exec --user www-data nextcloud php occ files:scan --all

网页性能不行?

优化一下吧,基本设置后台任务选择通过Cron后,创建定时任务服务执行下面的命令

docker exec --user www-data nextcloud php cron.php

具体实现: 在/etc/systemd/system/目录下创建nextcloudcron.service和nextcloudcron.timer两个文件
nextcloudcron.service

[Unit]
Description=Nextcloud cron.php job

[Service]
User=root
ExecStart=/usr/bin/docker exec --user www-data nextcloud php cron.php

[Install]
WantedBy=basic.target

nextcloudcron.timer

Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.targett

安装并启动服务

systemctl enable --now nextcloudcron.timer

卸载NextCloud

如果你的安装出了问题,快速卸载干净

docker stop nextcloud

docker rm nextcloud

删除image

#查出id
docker images ls
#执行删除
docker image rm IMAGEID