如何基于 Docker 在服务器上部署 Seafile Community 版本
如何基于 Docker 在服务器上部署 Seafile Community 版本
软硬件环境
- BCC Ubuntu 16.04
- Seafile Community v6.3.4
- Docker v18.09.1
什么是 Seafile
安全、可靠、快速的企业云盘
Seafile 是一款开源的企业云盘,注重可靠性和性能。支持 Windows, Mac, Linux, iOS, Android 平台。支持文件同步或者直接挂载到本地访问。
以上文案来自于官网,Seafile 官网
Seafile 有个开源的服务器部署版本,而且是支持 Docker 部署的,本着熟悉熟悉 Docker 的初衷,我踏上了折腾的不归路。
如何在服务器端部署 Seafile
大概可以分为以下步骤:
- 在服务器 Ubuntu 16.04 上安装并配置好 Docker
- 基于 Docker 部署 Nginx 服务器
- 基于 Docker 部署 Seafile Community version
- 开始使用吧~
在服务器 Ubuntu 16.04 上安装并配置 Docker
- 卸载旧版本的 Docker,如果没有安装过,可忽略
sudo apt-get remove docker docker-engine docker.io containerd runc
- 安装必备套件
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- 添加 Docker GPG Key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88
- 添加 Docker 的 repository
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
- 开始安装 Docker CE
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
- 检查 Docker CE 是否安装成功。如果运行成功,说明安装无误
sudo docker run hello-world
- (可选)免 sudo 使用 Docker
- (可选)配置阿里云的 Docker 镜像加速
- (可选)使用 Docker 中国官方镜像加速
如何免 sudo 使用 Docker
sudo groupadd docker # 新增 docker group sudo gpasswd -a $USER docker # 将 docker 添加到 docker group 中 sudo service docker restart # 重启 docker 服务 newgrp - docker # 切换当前会话到新的 group
使用阿里云的 Docker 镜像加速器
使用阿里云的 Docker 镜像加速器,避免由于某些神秘原因导致的镜像下载过慢
- 进入阿里云管理控制台,选择「容器镜像服务-镜像中心-镜像加速器」
- 复制加速器地址,地址类似于:https://Xxxxx.mirror.aliyuncs.com
- 配置镜像加速器。针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://frsj7mun.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
使用 Docker 中国官方镜像加速
通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像。
基于 Docker 部署 Nginx 服务器
服务器的端口号是有限的,而且默认都是使用 80 端口或 443 端口,使用 Docker 通过 Nginx 实现反向代理,配置多域名及多端口号。
将一级或者二级域名绑定在服务器 IP 上,
下载 Nginx 镜像
docker pull nginx
创建并启动 Nginx 容器
docker run –-name=nginx -p 80:80 -p 443:443 -v /nginx/conf.d:/etc/nginx/conf.d -d nginx
上述命令会创建一个名为 nginx 的容器,端口映射为 80-80、443-443,文件夹映射为本机 /nginx/conf.d/
映射到镜像的 /etc/nginx/conf.d
文件夹,-d
表示在后台运行容器
配置 Nginx 的反向代理
- 将域名(假定为 wangyongf.com)解析到服务器的 IP 上
- 基于上述命令创建的容器,将虚拟目录映射到了容器内 Nginx 的配置文件目录,因此可以在服务器的
/nginx/conf.d
目录下创建容器的 Nginx 配置文件
cd /nginx/conf.d sudo vim seafile.wangyongf.com.conf
- 写入配置,内容如下:
server { listen 80; server_name wangyongf.com; # 要解析进来域名 location / { proxy_pass http://SERVER_LOCAL_IP:8001; # 服务器本地ip:Seafile容器对外的端口号 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
服务器本地IP可以在云服务管理控制台看到,也可以在命令行直接查看。
请求的转发流程:
基于 Docker 部署 Seafile Community version
快速运行 Seafile 服务容器
docker run -d --name seafile \ -e SEAFILE_SERVER_HOSTNAME=seafile.wangyongf.com \ -v /opt/seafile-data:/shared \ -p 8001:80 \ seafileltd/seafile:latest
自定义管理员用户名和密码
docker run -d --name seafile \ -e SEAFILE_SERVER_HOSTNAME=seafile.wangyongf.com \ -e SEAFILE_ADMIN_EMAIL=me@wangyongf.com \ -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password \ -v /opt/seafile-data:/shared \ -p 8001:80 \ seafileltd/seafile:latest
启用 Seafile Docker 版本基于 Let's encrypt 的 SSL
docker run -d --name seafile \ -e SEAFILE_SERVER_LETSENCRYPT=true \ -e SEAFILE_SERVER_HOSTNAME=seafile.wangyongf.com \ -e SEAFILE_ADMIN_EMAIL=me@wangyongf.com \ -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password \ -v /opt/seafile-data:/shared \ -p 8001:80 \ -p 8002:443 \ seafileltd/seafile:latest
修改 Seafile 服务的配置
Seafile 服务的配置会存放在 /shared/seafile/conf
目录下,你可以根据 Seafile 手册修改配置。
修改之后需要重启容器:
docker restart seafile
You're all set!
到了这里,应该配置 OK 了。我在文章里也提到了很多的官方文档,如果遇到了问题,可以查阅官方文档,或者借助 Google/Baidu
建议开启 Seafile 的 https 配置,如果只是安装玩玩,那么无所谓,如果是真的自己使用,最好启用 https,否则你的文件不太安全呀呀呀呀。
Docker Nginx 启用 Seafile 服务的 https
本文中讨论的都是基于 Docker 部署的 Nginx 服务,和服务器上直接安装可能会有些区别。
上文中也说了,Seafile 的 Docker 官方镜像可配置启用 https,但实际上,也可以在 Nginx 层就启用 https,然后反向代理的时候使用 http 亦可,我在实践的时候就是采用的这种方式。
Nginx Docker 层启用 seafile.wangyongf.com 的操作步骤如下(我的操作步骤):
- 在服务器使用 apt 安装 Nginx 并配置 seafile.wangyongf.com 域名,使用 certbot 自动配置 lets-encrypt 证书
- 将上述 certbot 自动生成 Nginx 配置移植到
/nginx/conf.d/seafile.wangyongf.com.conf
中,此时配置文件大概长这样:
server { listen 443 ssl; listen [::]:443 ssl ipv6only=on; server_name seafile.wangyongf.com; root /var/www/html; # ssl configurations ssl_certificate /ssl/live/seafile.wangyongf.com/fullchain.pem; ssl_certificate_key /ssl/live/seafile.wangyongf.com/privkey.pem; include /ssl/options-ssl-nginx.conf; ssl_dhparam /ssl/ssl-dhparams.pem; location / { proxy_pass http://SERVER_LOCAL_IP:8001; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } server { if ($host = seafile.wangyongf.com) { return 301 https://$host$request_uri; } listen 80; listen [::]:80; server_name seafile.wangyongf.com; return 404; }
可以看到,上述配置有几点:
- 启用了 ssl
- http 会被重定向到 https
- ssl 证书配置的是 /ssl/ 目录
为什么证书是 /ssl/
目录呢,其实这个目录是我自定义的,你也可以随便叫什么别的目录,上文中我们提到,这个配置是在 /nginx/conf.d/
下,是 Docker Nginx 的配置文件,容器内是访问不到宿主文件的,只能通过文件映射,因此必须将宿主上的ssl证书映射到容器中,对的,上述 /ssl/
就是映射的虚拟目录,其对应的是宿主上的 /etc/letsencrypt
目录。
因此,如果要使用上述的 Nginx 配置,Docker Nginx 容器需要新增一个 /etc/letsencrypt
到 /ssl
的目录映射,但是貌似 Docker 容器在创建完成之后无法再修改映射目录?(如果可以,欢迎留言告诉我~),我就基于现有的容器重新建了个容器,使用如下命令:
docker stop nginx docker commit nginx seafile-nginx docker run –-name=nginx -p 80:80 -p 443:443 -v /nginx/conf.d:/etc/nginx/conf.d -v /etc/letsencrypt:/ssl -d nginx
如何检查 Nginx 配置文件是否正确
sudo nginx -t (-c /etc/nginx/conf.d/default.conf)
PS
之后,也可以使用类似的方式使用 Nginx 的反向代理部署其他的 Docker 服务
开始使用吧~
到了这里,应该没什么问题了,Seafile 应该已经是 https 可访问状态了,这个时候,你可以下载个移动客户端,按照官方教程配置好,然后就开始愉快地使用 Seafile 吧~
参考资料
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型
在生产环境中部署机器学习模型是数据工程中经常被忽视的领域。网上的大多数教程/博客都侧重于构建、训练和调整机器学习模型。如果它不能用于实际的预测,那么它又有什么用呢? 接下来了解一下有哪些部署选项吧:评估选项在生产中部署机器学习模型时,有多种选择。其中一种流行的方法是使用Azure Machine Learning Studio等云服务设计和训练模型,这些服务具有使用拖放工具构建和训练模型的能力。此外,将这些模型作为Web服务发布只需点击几下即可。此类设置的附加优势在于,该部署会随着应用程序使用量的增加而自动扩展。虽然短时间看起来很方便,但从长远来看,这种设置可能会有问题。当我们想要将应用程序从第三方云平台迁移并将其部署在我们的服务器上时,就有难度了。由于这些工具与其各自的云平台紧密集成,因此这种设置不可移植。此外,随着应用程序的扩
- 下一篇
全新 DOCKER PALS 计划上线,带给您不一样的参会体验!
出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五,与您不见不散! 在 DockerCon 哥本哈根大会上,我们推出了 Docker Pals 计划,旨在将与会者联系在一起,帮助他们更加充分地利用会议行程。第一次参加或亲临会议现场可能会让一些人不自在,我们不希望任何人在 DockerCon 上有这种感觉!Pals 会帮助您匹配适合您的新朋友以及一些参加过会议的向导,这样您就可以在到达会议之前拥有一个熟悉的小组。这些参加过会议的向导们可以帮助您确定参加哪些讲座和活动,并提供问题解答。 今年,我们很高兴能够扩展该计划,匹配更多的团队,并在整个星期内添加 Meet-and-Greets 环节。我们想,您是不会错过这么好的 Docker Pals 版本! 以下是 DockerCon 巴塞罗那站与会者对 Docker Pals 的评价: “Docker Pals 使我的 DockerCon 体验提升了十倍,我结交了新的朋友,我希望再次见到他们!”“向导对我来说非常有帮助,我非常喜欢在会议上结交新的朋友。”“我很喜欢这种方式,即使我独自在那里,我也会有一个地方可以寻求帮助。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境