自建过许多网盘,试过 可道云、Seafile、FileRun、Nextcloud,但Nextcloud的如下特性吸引了我:
以上种种吸引了我进行了无数次的配置、尝试、探索。我在 Centos, Debian, Ubuntu, Docker, Cpanel Virtual Hosting 上都尝试过配置 Nextcloud , 但最终发现,还是官方首推的 sudo snap install nextcloud 方式是最稳定的,此外的自建环境 (Linux + Nginx + Php + MySQL) 总是会出各种各样的兼容性、异常报错,而这些异常报错会在一些莫名其妙、意想不到的地方出现让人在一个莫名其妙的地方掉坑。
以上种种,我决定在服务器上 KVM 虚拟出来一个 Ubuntu 系统专门配置 Nextcloud 服务。会有人说有必要吗?在一台 VPS 就可以配置 LNMG/LAMP + CLoud Drive + Docker + Kubernates + node.js 等等环境。但在我踩过无数的坑之后,发现一切兼容的,都难以发挥其自身最大的力量。
话不多说,本文主要记录 Nextcloud 配置在 KVM 虚拟化出的 Ubuntu 系统上,并持续更新后续各种基于此环境的操作。
qemu-img create -f qcow2 ubuntu_nextcloud.qcow2 100G
创建 KVM 虚拟机
virt-install \
--virt-type=kvm \
--name=ubuntu_nextcloud \
--hvm \
--vcpus=4 \
--memory=4096 \
--cdrom=/srv/kvm/iso/ubuntu-18.04.3-live-server-amd64.iso \
--disk path=/srv/kvm/ubuntu_nextcloud.qcow2,size=400,format=qcow2 \
--network network=default \
--graphics vnc,password=kvm,listen=::,port=5913 \
--autostart \
--force
通过 VNC viewer 连入宿主机 5913 端口输入密码,安装操作系统。
在宿主机使用 Frp, Iptables, NAT...等方式按照需求将虚拟机 80 端口转发出来,当然也可以不转发,这样子可以在内网的机器上使用内网 ip 直接访问到将来配置的 Nextcloud.
A snap is a zip file containing an application together with its dependencies, and a description of how it should safely be run on your system, especially the different ways it should talk to other software. Most importantly snaps are designed to be secure, sandboxed, containerized applications isolated from the underlying system and from other applications.
To install the Nextcloud Snap Package, run the following command in a terminal:
sudo snap install nextcloud
此前已经说明在这里使用 snap 一键安装 Nextcloud ,除此之外还有 Web installer , zip, 等方式,可以直接将 nextcloud 安装在 自建好的 lnmp 环境上,但这种方式在此不再说明。
注:英文部分摘自官网说明。
在使用过程中会需要各种莫名其妙的问题,因此在这里记录基于以上配置方法及环境下遇到的问题。
#查看snap版本信息
snap --version
#找出所有snap应用
snap find
#安装应用
snap install 包名
#重启应用
snap restart 应用名
#升级应用
snap refresh 应用名
#查看安装的应用
snap list
#卸载应用
snap remove 应用名
$ sudo snap set nextcloud php.memory-limit=512M
# To set it to be unlimited
$ sudo snap set nextcloud php.memory-limit=-1
$ sudo snap set nextcloud nextcloud.cron-interval=10m
# disable the cronjob completely
$ sudo snap set nextcloud nextcloud.cron-interval=-1
# 查看可信域
$ sudo nextcloud.occ config:system:get trusted_domains
# 添加可信域,请调整 1 和 example.com, 计数从 ‘0’ 开始
$ sudo nextcloud.occ config:system:set trusted_domains 1 --value=example.com
sudo nextcloud.occ maintenance:mode --off
For server, type example.com/remote.php/dav/principals/users/USERNAME/
snap nextcloud的项目地址在https://github.com/nextcloud/nextcloud-snap,目前snap安装的nextcloud还不能调整和配置包内的php和apache2,但官方已经配置好的apache2和PHP 单文件16Gb的上传限制(实际好像不限制大小),一般来说应该不需要更改。
I copyied the cert files in /var/snap/nextcloud/current/certs/custom/and thensudo nextcloud.enable-https custom -s cert.pem privkey.pem chain.pem也许会成功.