前言
随着小孩的出生,对于视频存储的需求越来越高,手机空间容量明显不够了,因此淘了一个大容量的硬盘去记录生活中的点滴。另外,考虑到家人间需要共享存储,并考虑数据的安全性,因此选择自搭网盘。在网站上搜索了一堆,最终确定使用nextcloud,因为代码开源,可以自由定制,后续可以根据需要进行修改,当然前期最重要的还是满足最基本的家用需求,快速部署使用。部署过程中还是遇到了许多坑,因此记录下来可以与大家共享。
准备工作
安装nextcloud前,自用的是一台安装了Win11和ubuntu22.4双系统机器,Win11使用的是固态硬盘,ubuntu使用的是2T的机械硬盘。此次扩容又加了一个8T的机械硬盘。常规的挂载硬盘就不多叙述。
部署过程
部署nextcloud的过程并没有预期中的顺利,主要原因是对于nextcloud主要需求是需要将数据存储在新加的8T硬盘上。
1、snap安装nextcloud
这个安装是最简单的,就一条命令执行,sudo snap install nextcloud
sudo snap set nextcloud ports.http=8081
修改端口后启动起来,可以正常使用,很高兴的创建了两个账号并上传了很多图片。等后面想在PC上看存储的照片时,发现nextcloud安装的数据目录挂载在/var/snap/nextcloud/common/nextcloud/data,这不符合我的需求。在网上寻找了一些变更目录的方法,主要是修改/var/snap/nextcloud/current/nextcloud/config/config.php配置文件:
'datadirectory' => '/data/nextcloud/data'
但是很不幸的是这种方法修改,进入网页总是会提示该目录下没有.ocdata。尝试修改目录权限等操作,都不可行。只有将目录设置在/var/snap/nextcloud/common/下的位置才可以。另外尝试通过管理员设置界面去添加外部存储功能插件应用,但是也无法添加外部硬盘位置,无法识别到。可能这是snap版本本身的限制问题。因此仔细从nextcloud官网去查看说明文档,这个数据目录最好在初始安装的时候就确定好,后续更改是不建议的。
那么,我就按照官方文档建议的方法去安装,使用AIO。
2、AIO安装nextcloud
安装命令也是非常简单的,通过docker容器去安装
docker
sudo docker run \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 8000:80 \
--publish 8081:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env NEXTCLOUD_DATADIR=/data/nextcloud_data \
--env SKIP_DOMAIN_VALIDATION=true \
--privileged \
nextcloud/all-in-one:latest
主要修改是更改了数据存储目录和端口映射。进入网页按提示操作,可能由于网络的原因,部分操作可能非常的慢,需要经历较长的等待。待有容器running,需要注意的就是域验证这个容器可能会跑不起来,网页上会有提示可以打开nextcloud了。
但是这时候又进入不幸的开始,因为AIO里面强制使用https连接,而我自己的域名又没有https,只能无奈的转入下一方案。
3、web installer
主要参考的文档
Installation on Linux — Nextcloud latest Administration Manual latest documentationExample installation on Ubuntu 22.04 LTS — Nextcloud latest Administration Manual latest documentation 文档里面有细致的说明,下面主要是说明下在实际应用时可能会遇到的情况。
需要首先创建数据库用户及密码,后续nextcloud设置中会用到,文档中有详细说明。
另外是需要配置apache服务器,从官网下载的setup-nextcloud.php放到服务器目录,打开后按照网页提示进行操作。 注意服务器目录的权限设置。
php设置页会对主机依赖检查,依据文档安装
sudo apt update && sudo apt upgrade
sudo apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql \
php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip
在依赖项检查时出现很多php模块依赖缺失,排查原因是因为本机安装了多个php版本,默认使用的最早期php5,而官网要求php8.1以上。因此在apache2中启用最新的php8.3模块:
sudo a2enmod php8.3
systemctl restart apache2
依赖项通过之后就进入正常nextcloud的配置流程。注意配置新的数据路径在新的硬盘上。
4、数据迁移
由于之前在snap版本中已经上传过数据,因此需要将数据同步到新的目录下。由于之前创建的用户很少,因此新部署之后直接创建了跟之前相同的用户,并将之前用户目录的下数据拷贝到新用户目录下。
最后更新数据:
sudo -u www-data php occ files:scan --all