音乐播放器
Thinker's Space
 
文章 标签
8

Powered by Gridea | Theme: Fog
载入天数...
载入时分秒...

充分利用阿里云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映射的名称),之后等它安装完即可。

image-20201222204446250

那么还有一个要解决的问题,我物理机中的文件它docker访问不到啊?这里就需要借助上一篇文章中的Samba服务器了。NextCloud是允许挂载外部存储的,虽然性能一般,但挂载本地的Samba还是和直接访问没有多少区别的。

首先我们需要在应用栏目下启动外部存储功能(默认关闭),我这里已经启动了:

image-20201222205453675

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

image-20201222205758528

主要需要配置的就是上图五处:

  1. NextCloud中显示的文件夹名称;
  2. Samba服务器地址,本地的话只要127.0.0.1:port即可,port是你设置的端口;
  3. 挂载的Samba目录,和在Windows上一样,你需要选择一个目录进行挂载;
  4. 登录用户名;
  5. 登陆密码。

这样在全部文件下就可以看到挂载的文件夹了(挂载了Album目录):

image-20201222210321637

如果遇到“找不到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还是挺不错的。