在墙里的同学们不难发现,现在除了百度云以外,国内几乎没有什么公开的云盘服务了,有时我们想在自己的不同设备之间、或者给客户共享点资料非常困难,试想一下如果能有自己私有云存储,并且能支持自动同步本地数据还能轻松与他人共享,是件多面嗨皮的事。本文介绍一下如何利用华为云,基于Docker+Seafile搭建私人云存储。
开通华为云服务
工欲善其事,必先利其器。如何购买华为云,这里就不赘述了,详见官网介绍,总之乖乖按照官方指引轻松几步就搞定。笔者双11把手打折了,索性只买了1C1G的弹性云服务器(首月只要30+元),预装了Centos7.2操作系统。通过“管理控制台”进入弹性云服务器界面,可以远程登录主机,如下图所示。
安装Docker平台
使用共有云的一个好处就是OS创建好了以后什么都不需要配置就可以连接公网,比在自家电脑上搭VM方便千百倍。弹性云服务器已经配置好了国内的yum源,通过yum安装docker只需要一个命令即可
yum install -y docker
安装完成后,执行如下命令启动docker平台,并查看执行结果
service docker start
docker ps
部署Seafile容器
Seafile是业界比较有名的开源云存储应用服务,Docker Hub上有现成的镜像,详情参见。
执行pull拉取镜像:
docker pull docker.io/jenserat/seafile
不到一分钟镜像就拉取到本地了。基于这个镜像首次创建容器需要让容器从网关拉取一些额外的配置文件,运行如下命令创建容器,并开启交互模式:
docker run -t -i \
-p 10001:10001 \
-p 12001:12001 \
-p 8000:8000 \
-p 8080:8080 \
-p 8082:8082 \
-v /srv/seafile:/opt/seafile \
jenserat/seafile -- /bin/bash
此命令将容器内的/opt/seafile映射到宿主机的/srv/seafile目录,用于保存后续步骤下载的配置,另外映射了几个端口到宿主机,其中8000是访问UI用的,8082是上传下载文件用的,其他端口不知道干嘛的。
- 容器启动后,在命令行执行
download-seafile
下载Seafile的主要配置文件 - 下载完成后,执行
/opt/seafile/seafile-server-5.*/setup-seafile.sh
执行安装向导,记住不要修改默认的存储位置,其他看情况改。 - 执行
/opt/seafile/seafile-server-latest/seafile.sh start
来启动Seafile主进程 - 执行
/opt/seafile/seafile-server-latest/seahub.sh
启动WEB UI - 配置完成后执行
exit
退出。
以上是首次启动容器的步骤,接下来就不需要这么麻烦了,执行如下命令启动终极容器,不需要交互式命令,用-d参数让他在后台安静的跑。docker run -d \ --name seafile \ -p 10001:10001 \ -p 12001:12001 \ -p 8000:8000 \ -p 8080:8080 \ -p 8082:8082 \ -v /srv/seafile:/opt/seafile \ -e autostart=true \ jenserat/seafile
设置安全组
到这里我们就已经在弹性云服务器上部署好了一个Seafile私有云存储,这时候我们尝试访问这台机器的8000端口,你会发现端口没有响应。这是因为云主机为了安全考虑自动设置了VPC(虚拟子网)和安全组,也就相当于我们说的防火墙,接下来需要在安全组里加上相应的规则,让云主机放通我们的服务端口。
打开“管理控制台”页面,选择“网络”->“私有云”,选择“安全组”,如下图
选择“新建安全组”,添加规则,将我们要用到的端口都添加到“入方向”
此时我们再尝试访问服务器的8000端口,如:http://122.112.204.xxx:8000,就能看到Seafile的登录界面了,用我们前面初始化的管理账号即可登录
之后我们就可以尽情的享受私有云存储带来的便利了,从Seafile官网上可以下载到Windows、Mac等的客户端,轻松实现本地文件自动同步,一点不逊色百度云盘。
绑定域名
如果觉得通过IP访问不够便利,还可以自己申请一个域名,然后通过配置DNS解析直接通过域名访问,这类教程网上一搜一大把,租个域名一年不过也就几十块钱。绑好域名后的效果类似于
大功告成