0x00 背景介绍
最近需要一套存储的东西,但是需要对账户之间有各种的限制与要求,简单方便的做权限管理的东西。思来想去,开始打算用ftp来制作。觉得配置权限可能不方便用,所以最终选择了nextcloud,他的前身是owncloud,以前用过,后面商业化了。这里就着重介绍一下,最简单的布置的方法。
如果你自己不确认要不要用,可以去nextcloud的官网去尝试使用它的demo,有两种:一种是免费的一小时,还有一个需要邮件注册,收费与否不清楚。正常来说,一小时的试用已经足够了。地址:https://demo.nextcloud.com/
系统环境:ubuntu 18.04 lts 64bit
关于安装调试的详细问题,nextcloud官网上面已经写的无比详细了。
0x01 安装
方案 A:snap方式
关于snap,我写过在centos7上面来安装snap,snap默认不在centos的发行版本,实际效果是snap安装后会有问题,启动不正常。后来换了ubuntu 18.04 lts,使用snap安装最简单,一条命令就可以了,具体操作如下:
sudo snap install nextcloud
安装以及后续配置的详细方法见这两篇帖子:
- https://www.howtoing.com/how-to-install-and-configure-nextcloud-on-ubuntu-18-04
- https://wzfou.com/nextcloud/
然后就可以使用了,环境包好了,但是这个问题在于后期维护不便。虽然snap我目前没有用出问题来,但是尤文拖车无法维护也是巨大的问题所在,这就催生了下一个方式的出现——docker方式。
方案 B:docker方式
关于docker,可以简单理解为一个极其轻量级的虚拟机(概念及原理上都不是这样,docker是直接可以调用内核操作的,不需要虚拟机中的操作系统层,这样写的目的在于能有个简单的认识。关于docker以后会专项的记录一下),可以对docker出来的整套系统进行操作。
下面简单说一下可以进行的操作。分两大部分:1. 官方的nextcloud的docker镜像;2. 分别的mysql、apache、php都用docker镜像在进行接口方面的调试与组合。下面着重介绍第一种,第二种的方式在方案3里面会重点介绍。
具体的操作如下:
docker pull nextcloud
具体的操作方法:https://hub.docker.com/_/nextcloud
启动方法
$ docker run -d -p 8080:80 nextcloud
访问http://localhost:8080
即可访问。
方案 C:服务器LAMP、LNMP独立安装
插播一条NGINX方式的全手动的方法,也不错。
虽然容器是未来,可以去批量的复制使用,也非常的方便。但是考虑到这次要做的事,并不是那种能够批量复制使用的环境。也没有足够的时间再次回顾docker,为了方便后期的维修,尽可能的减少中间层的影响,在这里使用了一个非常常规的方式来进行。
- 服务器:ubuntu 18.04 lts
- 服务器硬盘:LVM处理
- 没有组raid,找同配置的机器进行备份
- LAMP:使用的一键LAMP的安装脚本,实在不想再配置了,麻烦。
LAMP手动配置的可以参考以下两篇:
- https://websiteforstudents.com/setup-nextcloud-on-ubuntu-18-04-lts-beta-with-apache2-mariadb-and-php-7-1-support/
- https://www.techrepublic.com/article/how-to-install-nextcloud-13-on-ubuntu-18-04/
下面说具体方法。
服务器系统版本选择Ubuntu 18.04 lts 64 bit,安装的时候硬盘处理那里选lvm的方案,加密与否自己定,加密的话会更复杂一些,因为有密码。不加密也可以,我用的不加密的方式。LVM可以让机器在以后几乎是任意的进行扩容,不用更改目录结构,非常的好用。具体方法看我前几天的帖子,里面有。
下载一键LAMP脚本,这个脚本我用了好多年了,非常好用,安全可靠。
去他官网下载最新的稳定版全量包:https://lnmp.org/
解压以后:
cd lnmp1.5-full/
ls
sudo ./install.sh lamp
然后开始选版本,以下是我选择的版本安装的示例:https://www.lnmp.org/install.html
- mariadb 10.2.14
- enable innoDB storage engine
- php 7.2.6
- php内存分配器:无
- 管理员邮箱:还是留一个吧,实际上也没用
- apache 2.4.33
- 证书创建(创建不创建意义不大,本身就是内网不需要加密,外网还是有证书的好点)
剩下就是等了,编译安装时间会比较长。脚本安装的软件的未知官网有详解:https://lnmp.org/faq/lnmp-software-list.html
然后就是http://localhost
来看一下php的探针之类的,还可以就事把,mysql(mariadb)里面创建出来给nextcloud用的数据库以及用户密码。
我是手动创建的,没用上面的方式,方法如下:
登录数据库:
mysql -uroot -p密码
创建名称为nextcloud的数据库(分号必须写):
CREATE DATABASE nextcloud;
给数据库创建一个叫nextclouduser的用户,给他建一个新的密码:
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY '新的密码';
给nextclouduser的用户赋予权限:
GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY '刚设置的密码' WITH GRANT OPTION;
保存退出:
FLUSH PRIVILEGES;
EXIT
到默认的apache的目录/home/wwwroot/default
中将nextcloud的压缩包中的内容拷贝进去,然后重新赋予权限:
sudo chown -R www-data:www-data /home/wwwroot/default
sudo chown -R 755 /home/wwwroot/default
然后登录http://localhost
或http://127.0.0.1
,按照提示输入自定义的管理员用户名、密码、数据库信息即可,中间要多等一小会。大概2-5分钟配置完成。
Apache 配置项说明(修改自某帖子)
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /home/wwwroot/default/
ServerName localhost
Alias /nextcloud "/home/wwwroot/default/"
<Directory /home/wwwroot/default/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /home/wwwroot/default/
SetEnv HTTP_HOME /home/wwwroot/default/
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
补充:全手动安装Nextcloud(使用apt-get安装二进制包)
0x02 问题解决
1. 中文界面设置
安装完Nextcloud后,默认账户界面为英文,需要手动调整为中文。
解决方法:
在Nextcloud目录的config/config.php
文件中,添加以下代码:
"default_language" => "zh",
如需其他语言,请参考语言简写码。
注意:上述目录需要root权限才能编辑。更改后,新添加的用户将默认使用设置的语言。
2. 加密应用程序私钥问题
每个账户在登录时提示“无效的加密应用程序私钥。请在您的个人设置中更新您的私钥密码,以恢复对加密文件的访问。”
解决方法:
关闭加密模块,目前没有彻底的解决方法,但关闭加密模块有效。
右上角头像图标 --> 应用 --> 已启用的应用 --> Default encryption module --> 关闭即可
3. 默认配额设置
为避免用户占用过多空间,需要修改默认配额到较小值。
解决方法:
右上角头像图标 --> 用户 --> 左下角设置 --> 默认配额 --> 设置为15 MB
这样就默认每个用户配额15 MB(默认自带的文件13 MB)。
4. 集中管理
为实现集中管理,可设置一个文件夹共享出去,其他人设置只上传权限,文件默认保存在各自文件夹内。