【最全教程】如何在宝塔上通过Docker安装seafile?

我相信这是目前最有用的教程。我本身是一个医生,it小白但爱折腾。因为安装seafile是事情我查了无数篇文章,均无法完美安装,或者安装好了但没发预览文档。我花了一个星期的时间,问了数位大佬,重装无数次,积累下这篇经验,现在和大家分享。欢迎大家关注我的博客:https://miaom.uk
本人并不是专业技术员,只凭着我的爱好和强迫症。文章难免出现错误,还望各位大佬轻喷。

通过Docker安装Seafile并开启HTTPS

一周前通过一般方法安装seafile,自我感觉美好。但在深入使用的过程中陆续发现doc文档无法预览、https下无法上传下载等致命问题。官方论坛搜索无果,在社群中一热心网友的提醒下我开始尝试使用Docker。现将全部过程记录如下,作为备忘,也作为他人避坑之指北。

文中的操作环境为CentOS 7,纯净环境。

安装Docker

尽量在纯净环境中进行安装。若不确定系统中有无Docker残留,先执行:


sudo yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的。


sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置 yum 源。


sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装Docker-CE。


sudo yum install docker-ce

启动Docker并将Docker加入开机启动


sudo systemctl start docker

sudo systemctl enable docker

启动Seafile-pro镜像


docker run -d --name seafile \

--restart=always \

-e SEAFILE_SERVER_LETSENCRYPT=true \ #https

-e SEAFILE_SERVER_HOSTNAME=xxx.xxx \ #your_hostname

-e SEAFILE_ADMIN_EMAIL=xxx@xxx.xxx \ #your_email

-e SEAFILE_ADMIN_PASSWORD=xxx \ #your_passwd

-v /data/seafile-data:/shared \

-p 8080:80 \

-p 443:443 \

docker.seadrive.org/seafileltd/seafile-pro:latest

系统会自动拉取镜像并安装。

HTTPS的设置

执行以下命令,以获取容器的日志,并进行跟踪日志输出。


docker logs -f seafile

根据日志可发现,ssl文件目录已创建。现在需要申请ssl证书,并导入到seafile的ssl证书路径。

关闭Seafile。


docker stop seafile

将申请到的SSL证书crt和key文件放置于 /data/seafile-data/ssl路径。注意!如果的域名为xxx.xxx, 那么证书文件名必需为xxx.xxx.crt,私钥称号必需为xxx.xxx.key。

运行Seafile。


docker start seafile

再执行以下命令,以获取容器的日志,并进行跟踪日志输出。


docker logs -f seafile

Seafile至此可正常使用了。

通过宝塔面板自动申请并续期SSL证书

宝塔面板可以自动申请并续期,我们通过ln命令来将宝塔面板申请到的证书与seafile的证书路径连接起来,从而达到自动续期的目的。

在执行此命令之前,应该删除 /data/seafile-data/ssl路径下的xxx.xxx.key文件。


ln /www/server/panel/vhost/cert/xxx.xxx/fullchain.pem /data/seafile-data/ssl/xxx.xxx.crt #your_hostname

ln /www/server/panel/vhost/cert/xxx.xxx/privkey.pem /data/seafile-data/ssl/xxx.xxx.key ##your_hostname

运行Seafile。


docker start seafile

此时会遇到报错


Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use

提示443端口被占用。前往宝塔面板网页配置文件,修改443端口为444。

再运行Seafile。


docker start seafile

再执行以下命令,以获取容器的日志,并进行跟踪日志输出。


docker logs -f seafile

Seafile至此可正常使用了。Enjoy!

但这种方法有致命的bug,无法与其他https网页共存:joy::joy::joy:我不知道如何解决,只有求助大神了

已解决不能共存和冲突的问题。方法如下:
使用docker安装seafile时不要开启ssl,此时seafile访问域名为IP:8080,然后用宝塔面板创建一个域名hostname并申请ssl后反代localhost:8080。进入seafile后台设置,将url分别改为http://hostname和https://hostname/seafhttp。注意,第一个url是http。

非常感谢您的教程。
我也是小白一枚,特爱折腾。但因为不是专业的程序员,所以碰了一鼻子灰。
目前正在用树莓派折腾,Docker拉取seafile镜像死活不行。。。
还请指教:crazy_face:

这个问题,以前碰到过 。树莓派是 高通架构,所以一定程度上, 底层代码就不一定支持专业版, 而社区版 使用2年 没什么问题

官方没有构建 arm 版的docker image,github上好像有人弄过arm的docker构建,你可以去看看,或者去docker hub搜搜看