听!布鲁布鲁,大鱼又在那叨叨了

部署

memcached

1
2
3
4
5
6
7
8
docker run \
--name memcached \
--hostname memcached \
-d \
--restart always \
--network swarm-net \
--mount type=bind,source=/etc/localtime,target=/etc/localtime,readonly \
memcached memcached -m 256

elasticsearch没有部署,不(太)需要搜索功能。

专业版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run \
--name seafile \
--hostname seafile \
-d \
--restart always \
--network swarm-net \
--cpus 3.4 \
--env DB_HOST=mysql \
--env DB_ROOT_PASSWD=123456 \
--env SEAFILE_ADMIN_EMAIL=newnius@example.com \
--env SEAFILE_ADMIN_PASSWORD=password \
--env TIME_ZONE=Asia/Shanghai \
--env SEAFILE_SERVER_LETSENCRYPT=false \
--env SEAFILE_SERVER_HOSTNAME=share.newnius.com \
--mount type=bind,src=/etc/localtime,dst=/etc/localtime,readonly \
--mount type=bind,src=/data/seafile/,dst=/shared/ \
docker.seafile.top/seafileltd/seafile-pro-mc:latest

社区版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run \
--name seafile \
--hostname seafile \
-d \
--restart always \
--network swarm-net \
--cpus 3.4 \
--env DB_HOST=mysql \
--env DB_ROOT_PASSWD=123456 \
--env SEAFILE_ADMIN_EMAIL=newnius@example.com \
--env SEAFILE_ADMIN_PASSWORD=password \
--env SEAFILE_SERVER_LETSENCRYPT=false \
--env SEAFILE_SERVER_HOSTNAME=share.newnius.com \
--mount type=bind,src=/etc/localtime,dst=/etc/localtime,readonly \
--mount type=bind,src=/data/seafile/,dst=/shared/ \
seafileltd/seafile-mc

专业版与社区版对比
https://www.seafile.com/en/product/private_server/

配置https

默认情况下,是走http协议,默认配置上传的时候会有问题,需要登录之后在管理面板修改URL,配置文件里也可以修改,不过官方建议通过web修改。

配置Nginx转发

官方容器里有nginx、可以把配置文件复制出来。

配置多存储后端

分盘,比如重要的文档等数据放在一个硬盘里,对这个盘多加备份,其他的电影等放在另外的盘里,随便存储,坏了就丢。分级保护。

https://manual-cn-origin.seafile.com/deploy_pro/cun-chu-hou-duan/multiple_storage_backends

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
{
"storage_id": "important_storage",
"name": "Important Storage",
"is_default": true,
"fs": {"backend": "fs", "dir": "/seafile-data"},
"commits": {"backend": "fs", "dir": "/seafile-data"},
"blocks": {"backend": "fs", "dir": "/seaflle-data"}
},
{
"storage_id": "tmp_storage",
"name": "Unimportant Storage",
"is_default": false,
"fs": {"backend": "fs", "dir": "/shared2/"},
"commits": {"backend": "fs", "dir": "/shared2/"},
"blocks": {"backend": "fs", "dir": "/shared2/"}
}
]

配置邮箱

https://docs.seafile.com/published/seafile-manual-cn/config/sending_email.md

对于专业版,因为有加密库,可以考虑自动发送密码,免的忘记了。

评价

  1. 安装过程怎么说呢,用docker可以直接跑起来,但是配置文件很乱,mysql的配置信息哪哪都有,很乱。初始化数据库必须要root用户密码,有一点安全方面的问题;
  2. 安装和升级的流程做的不够优秀,体现在docker容器制作、升级脚本和步骤等
  3. 底层存储,分片和加密(可选),安全性比较好,但是也让人比较担忧可用性
  4. 同步文件很快,通过小文件测试,seafile同步两万个小文件一分钟就搞定了,而nextcloud差不多跑了半小时。nc的性能实在是太差了
  5. 功能性方面,seafile很适合用来当纯文档同步和存储,功能比较专一,nextcloud功能很多很杂,但是感觉都做的还不够完善,app经常崩溃
  6. seafile客户端比较丰富,还提供seadrive模式,像挂载硬盘一样挂载,不用全量同步在本地,用的时候也很方便
  7. 分块存储、复用、回收站,非常专业的同步盘做法,相比之下,nextcloud差很多。

总结:功能性选nextcloud,性能选seafile(不过国人维护的项目,可靠性差一些。。)

1
for i in {1..20000}; do dd if=/dev/urandom bs=1 count=1 of=file$i; done

卸载

如果不想继续使用,或者是出错了想要重新安装,可以先删除现有的数据。

删除Mysql数据库信息

1
2
3
4
5
6
7
8
9
drop user seafile@'%.%.%.%';

flush privileges;

drop database seafile_db;

drop database seahub_db;

drop database ccnet_db;

至于seafile其他的数据,因为是docker,直接把容器和挂载的外部文件删除即可。

文档

有两个,不太一致

https://manual-cn-origin.seafile.com/

https://docs.seafile.com/published/seafile-manual-cn/home.md

最后,期待一下go版本的nextcloud/owncloud吧

https://page.codespaper.com/2020/from-nextcloud-to-seafile/