充分利用阿里云ECS(二):私人网盘NextCloud
国内的网盘服务大多面向的是娱乐向功能,人们更多的把它当作大容量云端硬盘(百度网盘、阿里网盘、迅雷云盘等),而且对于私人信息,如相片等一般是不会上传到国内网盘的;国外网盘更多面向同步协作,但容量小,而且绝大多数需要科学上网才能使用,这种情况下,使用NextCloud搭建一个私人网盘就会很有作用。
考虑到配置难易程度以及现有的Samba服务器,NextCloud我选择使用docker部署。
安装
首先需要准备docker,安装过程可参考以前的文章Arch系Linux的深度配置,这里略过不表。
安装NextCloud需要用到两部分镜像——nextcloud和数据库,这里数据库我选择了mysql8+:
# 拉取最新的mysql镜像
$ docker pull mysql
# 拉取最新的nextcloud镜像
$ docker pull nextcloud
需要说明的是nextcloud的镜像有两种,一种是apache版本的,另一种是需要fpm的,两者使用有所不同,默认安装的是apache的最新版本,也就是offical的最新版本。
接下来通过命令运行两个容器:
-
mysql
$ docker run -itd \ --name nextcloud-mysql \ --restart=always \ -v nextcloud_mysql:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=your_passwd \ -e MYSQL_DATABASE=your_database \ -e MYSQL_USER=your_username \ -e MYSQL_PASSWORD=your_user_passwd \ -p 3307:3306 \ mysql:latest参数说明:
- -i:交互式操作;
- -t:终端;
- -d:让容器在后台运行;
- –name:指定容器名;
- –restart:开机自启;
- -v:为数据库映射一个数据卷,nextcloud_mysql为本地的一个目录,这样做方便对数据进行本分和迁移,不指定如果容器需要还是会自动生成数据卷的,只不过很难找出容器对应的数据卷;
- -e:环境变量,分别设置了root用户的密码、新建一个数据库、新建一个用户以及该用户的密码;
- -p:是容器内部端口绑定到指定的主机端口
-
nextcloud
$ docker run -itd \ --name nextcloud \ --restart=always \ -v nextcloud:/var/www/html \ --link nextcloud-mysql:mysql \ -p 4288:80 \ nextcloud:latest参数说明:
- –link:将两个容器连接,这样nextcloud就会直接使用mysql容器作为数据库了。
配置
按照上述步骤基本不会有什么问题,当然也可能出现数据库就是连接不到,但是通过命令行检验都没问题等等一些问题,这里我因为之前有建过一个mysql容器,因此专门为NextCloud建了个新的mysql容器。
下面是已经配置完后的登陆页面,在初次登陆时需要配置管理员账号密码以及数据库,数据库的访问地址不需要填写127.0.0.1:3306之类的,只需要填写mysql即可(上述连接数据库中nextcloud-mysql映射的名称),之后等它安装完即可。

那么还有一个要解决的问题,我物理机中的文件它docker访问不到啊?这里就需要借助上一篇文章中的Samba服务器了。NextCloud是允许挂载外部存储的,虽然性能一般,但挂载本地的Samba还是和直接访问没有多少区别的。
首先我们需要在应用栏目下启动外部存储功能(默认关闭),我这里已经启动了:

接下来我们就可以在设置栏目下添加你的外部存储了:

主要需要配置的就是上图五处:
NextCloud中显示的文件夹名称;Samba服务器地址,本地的话只要127.0.0.1:port即可,port是你设置的端口;- 挂载的
Samba目录,和在Windows上一样,你需要选择一个目录进行挂载; - 登录用户名;
- 登陆密码。
这样在全部文件下就可以看到挂载的文件夹了(挂载了Album目录):

如果遇到“找不到smbclient”这样的问题,那么就需要进入docker容器中安装一下smbclient,具体过程如下:
# /etc/apt/sources.list,换阿里源,通过'echo "xxx" > xxx'的方式写入
deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb http://mirrors.aliyun.com/debian-security buster/updates main
deb-src http://mirrors.aliyun.com/debian-security buster/updates main
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
# 更新一下
root# apt update && apt dist-upgrade && apt autoremove && apt autoclean
# 安装smbclient
root# apt install smbclient libsmbclient-dev
root# pecl install smbclient
root# docker-php-ext-enable smbclient
之后退出并重启容器即可。
更多操作可以自行探索,短暂的体验下来NextCloud还是挺不错的。








