公司最近准备搭建私有文件存储服务,主要的需求点在团队协作,文件共享和权限控制,我又有机会冒充系统管理员啦。

一直对seafile很感兴趣,给L演示后,他也觉得不错,于是开始搭建。

首选方案当然是用docker。一搜github找到它:docker-seafile

剩下的就是细节啦。

#安装seafile * 安装docker,参考我此前的文章 * docker run:

1
2
3
4
5
6
7
8
9
:::text  
  sudo docker run -t -i \
  -p 10001:10001 \
  -p 12001:12001 \
  -p 8001:8000 \
  -p 8080:8080 \
  -p 8082:8082 \
  -v /srv/seafile:/opt/seafile \
  jenserat/seafile -- /bin/bash
  • mkdir seafile&cd seafilegit clone https://github.com/JensErat/docker-seafile.git
  • 在宿主机里 cd docker-seafile,./download-seafile.sh , sudo cp . /srv/seafile -R
  • 进入容器:/opt/seafile/seafile-server-4.3.2/setup-seafile.sh,回答相应问题
  • /opt/seafile/seafile-server-latest/seafile.sh start
  • /opt/seafile/seafile-server-latest/seahub.sh start
  • exit

#运行seafile

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
docker run -d \
  --name seafile \
  -p 10001:10001 \
  -p 12001:12001 \
  -p 8001:8000 \
  -p 8080:8080 \
  -p 8082:8082 \
  -v /srv/seafile:/opt/seafile \
  -e autostart=true \
  jenserat/seafile

#开机自启 加上--restart=no

#使用 访问ip:8001

#重新配置

1
2
3
4
5
6
进入到容器中
rm -rf /opt/seafile/ccnet
rm -rf  /opt/seafile/seafile-data
/opt/seafile/seafile-server-4.3.2/setup-seafile.sh
/opt/seafile/seafile-server-latest/seafile.sh restart
/opt/seafile/seafile-server-latest/seahub.sh restart

#定制开发(将其作为文件服务) * web api : http://manual-cn.seafile.com/develop/web_api.html#file-share-link * python api : http://manual-cn.seafile.com/develop/python_api.html

#桌面端以及移动端下载 https://www.seafile.com/download/

#接口调试 试了下缩略图功能:http://manual-cn.seafile.com/develop/web_api.html#get-thumbnail-image

  • 获取token:curl -d "username=MYUSERNAME&password=MYPASSWORD" http://MYSERVER/api2/auth-token/
  • 获取缩略图:curl -H "Authorization: Token MYTOKEN" http://MYSERVER/api2/repos/{repo_id}/thumbnail/?p=echarts5.jpeg&size=123 > thumbnail.png

其中repo_id进入具体资料库,从url中可以看到

#坑记录 由于文件服务器搭建在内网,偶尔也有外部访问的需求(主要是文件分类之类的工作,技术负责人/规范制定者们得经常出门在外,这个需求还是挺常见的),所以使用ngrok映射出去,由于文件相关的服务在8082端口,而ngrok只映射web server服务,所以外部可以操作网站,却无法查看/上传/下载文件。这与需求不矛盾: )