Please enable Javascript to view the contents

Debian9 下 Docker 部署 Seafile 云盘专业版 并解决端口 Csrf 问题

 ·  ☕ 3 分钟  ·  ✍️ IceKam · 👀... 阅读

前言

马上要开年工作了,目测以后折腾时间会有所缩减,本年度立的flag也是打算给大家分享点干货,就抽个时间把网盘做出来了。

前期测试了nextcloud、owncloud、Seafile、可道云等等。

从安全性、可用性、稳定性、兼容性各方面考量,最终选择了Seafile

Seafile

Seafile介绍与优缺点

Seafile 是一款开源的企业云盘,注重可靠性和性能。支持 Windows, Mac, Linux, iOS, Android 平台。支持文件同步或者直接挂载到本地访问。

优点

据说是清华的人搞的,也很多年了,比较成熟,用户评价也相对较好。

支持加密保存,也就是就算服务器被黑也读取不了数据。

ssl支持较好,少有的国产良心私有云软件。

如官方介绍客户端比较全,适合我等跨平台设备比较多的用户。

专业免费版本支持3个用户,对于我个人来讲完全够用。

缺点

Django开发的,逼格较高,同时入门门槛也比较高。

如果要完美调优需要大量的时间去折腾,而很多小白用户很难正常使用。

部署

思路

不更改默认端口,采用宿机的nginx做透明代理,并共享443端口。

安装docker

1
apt-get remove docker docker-engine docker.io containerd runc
  • 卸载旧的版本。
1
2
3
4
5
6
7
sudo apt-get update
apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common
  • 安装相关支持软件。
1
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  • 添加 Docker’s GPG key
1
sudo apt-key fingerprint 0EBFCD88
  • 验证 Docker’s GPG key
1
2
3
4
5
6
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce
  • 添加源 并安装Docker。

注册帐号

访问地址:https://customer.seafile.com,注册一个用户。

登录专业版镜像

1
docker login docker.seadrive.org
  • 输入在注册帐号里面获取到的Seafile帐号与密码。

添加ssl证书

1
mkdir /你的用户名/seafile/ssl/
  • 并将ssl证书放入此目录,格式为cloud.icekam.key and .crt。

拉取环境并启动

1
2
3
4
5
6
7
docker run -d --name seafile \
  -e SEAFILE_SERVER_LETSENCRYPT=true \
  -e SEAFILE_SERVER_HOSTNAME=icekam.com \
  -e SEAFILE_ADMIN_EMAIL=[email protected] \
  -e SEAFILE_ADMIN_PASSWORD=icekam_password \
  -v /root/seafile:/shared \
  docker.seadrive.org/seafileltd/seafile-pro:latest
  • 注意,这里并不需要映射端口,如果映射会出现以下错误。
Forbidden (403)
CSRF verification failed. Request aborted.

修改本地host

1
2
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)   # 获取Docker ip
vim /etc/hosts
  • 将你设置的域名绑定为获取到的 Docker 的ip。

nginx反向代理

添加一个host配置文件,直接反代,配置文件参考如下:

1
2
3
4
5
6
7
  location / {
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass https://cloud.icekam.com;
  }
  • 请注意nginx也需要配置ssl。

已知问题

以上配置可以正常使用,但是会出现获取不到用户真实ip的问题,这个问题待解决。

总结

本文解决了官方的已知Bug,即Docker下部署更改默认ip会出现Csrf报错的问题。

本人搜遍整个互联网也没人给出一个解决方案,官方也确认这是一个已知的问题,但是因为其他原因未修复。

最终折腾了挺长时间,采用曲线的方式解决了这个问题。

分享
您的鼓励是我最大的动力
bitcoin QR Code

icekam
作者
IceKam
茶艺品鉴砖家,低端码字人口。