# 利用Nextcloud搭建私有同步云盘

Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Mac、Android、iOS、Linux 等各种平台,也提供了网页端以及 WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。

Nextcloud也提供了许多应用安装,包括但不限于Markdown在线编辑、OnlyOffice(需另外部署服务端)、思维导图、日历等,你可以自行选择以丰富个人网盘的功能。

Nextcloud的服务端部署方式有很多种,本文会介绍两种方法(基于LNMP和基于Docker),读者可以根据自己情况进行选择一种部署方式。服务器需要是Linux操作系统,你可以在本地安装一个虚拟机进行测试,然后再到云服务器上部署。注意Windows系统不支持,建议装个虚拟机。Mac系统理论上支持,可以参考Linux教程来操作。Ubuntu系统支持snap一键安装,甚至安装系统时都提供安装nextcloud的选项。

# 基于LNMP部署

对于一个空白的Linux系统而言,部署的基本流程如下:安装LNMP运行环境 --> 通过Web Installer安装。这个部署方式跟搭建一个网站是一样的,比较简单。

# 安装LNMP运行环境

我是通过宝塔面板安装的LNMP运行环境,当然你也可以选择其他的方式。安装面板比较简单,只需复制粘贴一行命令即可搞定,进入教程查看不同操作系统的对应命令。

宝塔面板是一款流行的服务器管理软件,借助宝塔面板,可以大幅简化我们搭建各种环境的难度。

安装十分简洁,这里以CentOS7为例介绍宝塔面板的安装。

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

输入 y 即可,等待片刻便会安装完毕。

安装成功的界面,记得保存成功界面的内容,网址(请确认ip是否为你服务器的ip,否则需要替换)、用户名和密码。

对于云服务器而言,需要在安全组中打开8888、888、80、443、20、21端口。

浏览器输入网址并登陆后,会提示你是否安装一键套件,这里我们选择LNMP并修改软件版本后,点击一键安装,等待数分钟即可。

# 通过Web Installer安装

在宝塔面板网站管理页面,点击添加站点,域名一栏填写你将要访问Nextcloud的域名(此处以nextcloud.example.com为例),并选择创建MySQL数据库,点击提交(保存数据库用户名和密码等)。

从Nextcloud官网下载setup-nextcloud.php,并上传至网站根目录(/www/wwwroot/nextcloud.example.com)下。 访问http://nextcloud.example.com/setup-nextcloud.php,即可见如下安装界面。

现在你可以按照提示一步步完成部署(可能下载速度比较缓慢),填写刚才创建网站时生成的用户名和密码等。

# 基于Docker部署

选择以Docker的方式来部署nextcloud是因为Docker可以跨平台上运行,可以确保执行环境的一致性,有利于应用的迁移和管理。 服务端部署的基本流程是:安装Docker并启动 --> 运行Nextcloud容器 --> 访问Web端初始化。

# 安装Docker并启动

此处以CentOS7为例,其他操作系统参考官方文档安装。

#step1 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 

#step2 添加yum源
yum-config-manager \
    --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

#step3 安装Docker社区版并启动
yum -y install docker-ce docker-ce-cli containerd 
systemctl start docker

#step4 配置Docker国内镜像加速
#由于国内网络问题,不修改后面拉取镜像的速度会太慢
vi /etc/docker/daemon.json 
#写入如下内容并保存(更新:由于下面这个源仍然速度比较慢,强烈推荐使用阿里云等的国内加速源)
{ "registry-mirrors"
: [
"https://registry.docker-cn.com"] 
}

#step5 重新启动服务
systemctl daemon-reload
systemctl restart docker 

# 运行Nextcloud容器

当你的操作系统安装好Dokcer,我们可以启动Nextcloud容器(会自动拉取镜像,注意可能下载会比较慢,你可以尝试更换源),参数含义如下: -d #容器后台运行 --name nextcloud #容器名 -v /data/nextcloud:/var/www/html #将宿主机的目录/data/nextcloud挂载到容器的/var/www/html -p 8000:80 #将宿主机的端口(此处以8000为例)映射到容器的80端口

docker run -d \
--name nextcloud \
-p 8000:80 \
-v /data/nextcloud:/var/www/html \
nextcloud

# 网页端初始化

第一次使用nextcloud要通过Web端进行配置,如果你是本地虚拟机上测试的话,则需要打开对应端口,如果你使用的是腾讯云、阿里云等的云服务器,则需要配置安全组规则。 访问http://{你的服务器ip地址}:{端口},第一次访问要设置管理员用户名和密码,如果是单人使用,可以直接使用SQLite作为数据库,否则建议其他的数据库后端,点击安装完成完成部署。

# 其他

Ubuntu支持snap安装,仅需一行代码

sudo snap install nextcloud

也提供预先安装好nextcloud的虚拟机,参见Nextcloud VM。