NextCloud私有云盘安装部署记录
0x00 前言简述
描述:由于个人家里的NAS以及公司团队对私有网盘的进行日常工作文件同步以及协同办公的需求,所以有了这篇文章,讲解记录从选项到安装以及同步使用等相关操作;
最近这几年国内的网盘市场,如今只剩下百度网盘、腾讯网盘了,虽然国内还有一些稳定的网盘但是往往针对于企业对于个人来说不划算;同时在国外也有一些稳定的网盘,但是国内访问并不友好,如 OneDrive、DropBox、Google Drive 等;
此时私有云和 NAS 这种完全掌握在自己手中的云端存储方案就体现其优势了,下文主要介绍利用NextCloud快速搭建个人专属的私有云同步网盘;
私有云同步网盘的优势与不足: 1.优势
- 私密,自己全权管理所有文件;
- 稳定,不存在服务商关闭网盘服务的问题;
- 高速,直链下载,不限速;
- 功能丰富,可安装插件实现各种云端功能。
2.不足
- 需要定期进行维护备份
- 需要用硬件设备的支持
- 对于VPS这种存储容量小的,不适合做仓库盘,建议NAS或者本地服务器中搭建;
不用您问我先来回答了,这么多网盘为何偏偏用NextCloud? 答:自建网盘方案选择Nextcloud 、 ownCloud 、Seafile
,适合个人和企业使用,基础版免费都是成熟方案,主体功能上大同小异,且都支持在线查看/播放文件、插件扩展等功能。 下面一张谷歌趋势图可以看见当前开源网盘的热度情况;
WeiyiGeek.google趋势
NextCloud简述 描述:Nextcloud是一个开源、免费、专业的私有云存储项目,他可以帮您简单快速在个人,公司电脑、服务器甚至是树莓派等设备上架设一套属于自己或者团队专属的云同步网盘,所以它是一款开源网盘的绝佳解决方案;
版本说明:
- Home 家庭版本 (免费试用即社区版本)
- Enterprises 企业版本
特点:
- Nextcloud跨平台支持微软 Windows、macOS 和 Linux 的客户端应用程序,以及适用于 Android 和 Apple iOS 操作系统的移动客户端下载地址。
- Nextcloud文件提供了一个内置的
通用文件访问和同步平台
,具有强大的协作分享功能和桌面、移动和web界面以及WebDAV形式访问。 - Nextcloud群件集成了
日历、联系人、邮件
和其他生产力特性,帮助团队更快、更容易地按照您的条件完成工作。 - Nextcloud Talk通过集成的屏幕共享和SIP集成,通过浏览器和移动接口提供现场、私人音频/视频会议和文本聊天(
默认安装不带该插件
)。 - Nextcloud上的文件存储在一般的目录结构中,并可透过WebDAV访问。
- Nextcloud可以透过OpenID或者LDAP来实现用户群组或组群间的读写权限调整,以达到分享文件的目的和利用第三方平台的OAuth2进行接入;
- Nextcloud上用户可以使用基于浏览器文本编辑器、书签服务、缩放网址服务、相册以及RSS阅读器与文本查看器;
- Nextcloud具有良好的扩展性,可以将文件轻松连线到DropBox、Google云端与Amazon S3中;
Tips:
- Nextcloud 扩展应用安装(可离线安装):https://apps.nextcloud.com
0x01 安装实践
NextCloud安装所需组件php-fpm / mysql / nginx / nextcloud / APCu + Redis
;
NextCloud安装方式大约有三种:
- 手动安装
- 脚本安装
- Docker安装(推荐)|Snap安装
1.手动安装
环境准备:CentOS Linux release 7.7.1908 (Core)
:
Step1.自行关闭或放行防火墙和selinux规则
#主机名称设置与hosts绑定
hostnamectl set-hostname nextcloud
echo "127.0.0.1 nextcloud" >> /etc/hosts
#Selinux与防火墙设置
blanc="\033[1;37m"; gris="\033[0;37m"; magenta="\033[0;35m"; rouge="\033[1;31m"; vert="\033[1;32m"; jaune="\033[1;33m"; bleu="\033[1;34m"; rescolor="\033[0m"
echo -e "\n${jaune}SELinux disable and firewall settings ...${rescolor}" && sleep 1
sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config && setenforce 0
firewall-cmd --add-service=http --permanent && firewall-cmd --add-service=https --permanent && firewall-cmd --reload
Step2.安装wlnmp一键安装包源与EPEL源
rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache fast
Step3.基础lnmp环境安装与php依赖安装
#此处以php7.4与mysql5.7.x版本安装
yum install unzip
yum install wphp74 wnginx wmysql57
#安装php依赖相关(安装redis及redis模块扩展,默认安装的redis密码为空,建议添加redis密码 )
yum install wphp74-fileinfo wphp74-imagick wphp74-apcu wphp74-redis wredis5
Step4.Nginx配置 建议使用https,我这里为了方便就直接使用http方式了(请在以下两个配置文件中任选其一),如果你想使用https,请自行申请证书和生成赫尔曼密钥。
http配置文件:(需替换server_name的地址
)
cat > /usr/local/nginx/conf/vhost/demo.conf <
https配置文件:请删除原有的/usr/local/nginx/conf/vhost/demo.conf内容,将以下内容复制进来,并替换server_name的地址!
cat > /usr/local/nginx/conf/vhost/demo.conf <
Step5.配置php-fpm.conf与启用php-opcache
echo 'zend_extension=opcache.so' >> /usr/local/php/etc/php.ini
sed -i 's/;opcache.enable=1/opcache.enable=1/' /usr/local/php/etc/php.ini
sed -i 's/;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=8/' /usr/local/php/etc/php.ini
sed -i 's/;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/' /usr/local/php/etc/php.ini
sed -i 's/;opcache.memory_consumption=128/opcache.memory_consumption=128/' /usr/local/php/etc/php.ini
sed -i 's/;opcache.save_comments=1/opcache.save_comments=1/' /usr/local/php/etc/php.ini
sed -i 's/;opcache.revalidate_freq=2/opcache.revalidate_freq=1/' /usr/local/php/etc/php.ini
sed -i 's/memory_limit = 128M/memory_limit = 512M/' /usr/local/php/etc/php.ini
#如果不配置此项可能会导致Nextcloud安装警告:PHP的安装似乎不正确,无法访问系统环境变量。
#getenv("PATH") 函数测试返回了一个空值。
echo 'env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin' >> /usr/local/php/etc/php-fpm.conf
Step6.重启nginx/php-fpm/mysql服务
#nginx
nginx -t
/etc/init.d/nginx restart
#php
/etc/init.d/php-fpm74 configtest
/etc/init.d/php-fpm74 restart
#mysql
/etc/init.d/mysql restart
Step7.配置mysql建立Nextcloud的数据库与数据库账号;
mysql -uroot -p
mysql> set password = password('Root密码修改');
mysql> create database nextcloud character set=utf8;
mysql> create user 'nextcloud'@'localhost' identified by 'NextCloud';
mysql> grant nextcloud.* on databasename.tablename to 'nextcloud'@'localhost'
mysql> quit
Step8.下载与安装nextcloud
官方下载:
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip
速度确实感人
#安装解压
cd /usr/local/nginx/html/
curl -L http://down.whsir.com/downloads/nextcloud-18.0.4.zip
unzip nextcloud-18.0.4.zip
#权限设置
chown -R www.www /usr/local/nginx/html/nextcloud
Step9.安装与配置Nextcloud
访问http://SERVER_NAME,请选择MySQL/MariaDB数据库,默认会在网站根目录下创建一个data目录用来存放数据,该目录可根据情况进行更改,我这里保持默认状态进行安装!
WeiyiGeek.
Step10.如果完成上一步基本都可以正常使用nextcloud了,如果不行请查看错误日志并解决,但是往往为了提升使用体验,我们需要对其配置内存缓存;
Nextcloud官方提供了几种缓存配置方案
APCu、Memcached及Redis
:
如果你是小型/私人家庭用途,可以仅使用APCu进行缓存。
如果你是用于公司集群用途,可以使用APCu+redis方式进行缓存。
memcached缓存方案,它不适合与事务性文件锁定一起使用(关于事务性文件锁定可以查看官方文档,因为它不存储锁,而且数据可以随时从缓存中消失。
因此官方建议的
最佳缓存方案是redis
, 对于Redis和APCu内存缓存的说明:APCu在本地缓存中比Redis更快。如果您有足够的内存, 请使用APCu进行内存缓存,并使用Redis进行文件锁定。如果内存不足,请同时使用Redis。
(1)最佳缓存配置APCu+Redis(推荐): 前面我们已经安装了APCu+Redis模块扩展
#修改nextconfig配置文件
vi /usr/local/nginx/html/nextcloud/config/config.php
......
'dbpassword' => '59iSA7XDJciDTXsmR4BU174k95Wijg',
'installed' => true,
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
],
);
(2) 纯Redis作为缓存与仅使用APCu作为缓存对比
#纯Redis
vi /usr/local/nginx/html/nextcloud/config/config.php
......
'dbpassword' => '59iSA7XDJciDTXsmR4BU174k95Wijg',
'installed' => true,
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
],
);
#使用APCu
echo 'apc.enable_cli=1' >> /usr/local/php/etc/php.ini
/etc/init.d/php-fpm74 restart
vi /usr/local/nginx/html/nextcloud/config/config.php
......
'dbpassword' => '59iSA7XDJciDTXsmR4BU174k95Wijg',
'installed' => true,
'memcache.local' => '\OC\Memcache\APCu',
);
(3) 使用memcached作为缓存:APC用于本地缓存,将memcached作为分布式缓存
#yum install wphp74-memcached wmemcached
vi /usr/local/nginx/html/nextcloud/config/config.php
......
'dbpassword' => '59iSA7XDJciDTXsmR4BU174k95Wijg',
'installed' => true,
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => [
[ '127.0.0.1', 11211 ],
],
);
2.Docker安装 (推荐)
2.Docker安装 (推荐)
描述:此处推荐采用Docker进行安装 NextCloud 网盘相关依赖服务。
步骤 01.Docker 环境安装
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
步骤 02.安装Docker版MySQL与Nextcloud以及onlyoffice在线编辑插件
mkdir -vp /app/nextcloud/{mysql,data} /app/onlyoffice/{logs,data,front}
# 部署 MySQL 8.0 数据库
docker run -d --name mysql \
-v /app/nextcloud/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Password \
-e MYSQL_DATABASE=nextcloud \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=Password \
-p 3306:3306 \
--restart=always \
mysql:8.0
# 部署 onlyoffice/documentserver 支持 office 在线编辑
sudo docker run -d --restart=always \
--name onlyoffice -p 9000:80 -p 9001:443 \
-v /app/onlyoffice/logs:/var/log/onlyoffice \
-v /app/onlyoffice/data:/var/www/onlyoffice/data \
-v /app/onlyoffice/front:/usr/share/fonts/truetype/custom \
-it onlyoffice/documentserver
# 安装 nextcloud 网盘
docker run -d --name nextcloud \
-v /app/nextcloud/data:/var/www/html \
--link mysql:mysql \
--link onlyoffice:onlyoffice \
--restart=always \
-p 80:80 nextcloud:latest
步骤 03.安装初始化访问 宿主机IP:80 进行NextCloud初始化相关配置,即管理员账号密码,以及nextcloud数据库连接相关设置。
步骤 04.安装配置完成后我们还需一些常规配置。
从商城仓库中下载onlyoffice连接插件,Nextcloud与其对应版本如下 (https://apps.nextcloud.com/apps/onlyoffice):
# Downloads
Nextcloud 24 7.3.4 All releases
Nextcloud 23 7.3.4 All releases # 当前环境选择。
# 下载当前最新版本
wget https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.3.4/onlyoffice.tar.gz
# 解压到指定nextcloud app目录之中。
tar -zxvf /onlyoffice.tar.gz -C /app/nextcloud/data/apps
# 最后登陆管理员账户,启动该组件即可。
您的安装没有设置默认的电话区域。这是在没有国家代码的情况下验证配置文件设置中的电话号码所必需的。如果号码没有国家代码,请添加“默认电话区域”,并加上希望使用的区域对应的ISO 3166-1代码。
# 进入Docker
docker exec -it nextcloud bash
# 编辑config文件
nano /config/config.php
# 在倒数第二行添加
'default_phone_region' => 'CN',
此实例中的 php-imagick 模块不支持 SVG。为了获得更好的兼容性,建议安装它。
#进入Docker
docker exec -it nextcloud bash
#安装libmagick
apt install libmagickcore-6.q16-6-extra
3.Snap安装
3.Snap安装
描述:什么是Snap?
答:它的安装包扩展名是.snap类似于一个容器,完全独立于系统,它包含一个应用程序需要用到的所有文件和库(Snap包含一个私有的root文件系统里面包含依赖的软件包),他们安装在独立的目录中且各个应用之间相互隔离,互不影响,而且安装快捷简单,运行容易管理;主要支持的主流发行版Ubuntu和Debian;
Snap安装的优缺点:
优点:安装简单、稳定、自动升级以及自带配置环境无需自行配置;
缺点:配置不灵活、最新版本的NextCloud可能不兼容以前的插件;
特别说明:建议国外的VPS采用此种方式安装,因为国内速度真的感人;
安装环境&版本说明:
#cat /etc/issue
Ubuntu 20.04 LTS : 5.4.0-26-generic
#NextCloud组件版本
Nextcloud 18.0.4
Apache 2.4
PHP 7.3
MySQL 5.7
Redis 5.0
mDNS for network discovery
基础流程:
#1.设置主机名与防火墙设置
hostnamectl set-hostname nextcloud
echo "127.0.0.1 nextcloud" >> /etc/hosts
ufw allow 80,443/tcp
# Rules updated
# Rules updated (v6)
#2.检测是否安装snap(Ubuntu从16.04默认自带)
snap --version
# snap 2.44.3+20.04
# snapd 2.44.3+20.04
# series 16
# ubuntu 20.04
# kernel 5.4.0-26-generic
#3.验证查找是否有nextcloud可用包
snap find nextcloud
# Name Version Publisher Notes Summary
# nextcloud 18.0.4snap1 nextcloud✓ - Nextcloud Server - A safe home for all your data
snap info nextcloud #查询软件详细信息
# snap-id: njObIbGQEaVx1H4nyWxchk1i8opy4h54
# channels:
# latest/stable: 18.0.4snap1 2020-04-25 (20498) 243MB -
#4.采用snap安装Nextcloud
snap install nextcloud
nextcloud 18.0.4snap1 from Nextcloud✓ installed
# 5.启动停止
snap start nextcloud
snap stop nextcloud
如下:您只需要输入创建的管理员及密码就可以使用了
WeiyiGeek.安装完成之后效果
专有命令:
root@k8s:~# nextcloud.[tab]
#1.安装Nextcloud,使用提供的创建admin用户凭证。
nextcloud.manual-install
#2.SSL 启用
nextcloud.disable-https
nextcloud.enable-https
#3.数据导入导出
nextcloud.export -abcd #导出适合于迁移服务器的数据
nextcloud.import -abcd #导入从另一个Nextcloud snap实例导出的数据
#4.数据库
nextcloud.mysql-client
nextcloud.mysqldump
#5.模块管理
nextcloud.occ
基础设置:
使用SSL证书加密Nextcloud,执行以下命令可以从
Let's Encrypt
申请证书,申请成功后将重启容器内的Apache实例以立即实施SSL