安装Docker版Seafile
自从几年前用上NextCloud后,就已经习惯了这种同步型网盘了。加上有团队共享的需求,因此暂时找不到其他低成本的替代工具。当然,坚果云很不错,但数据存在别人家就跟每次洗完澡要去别人的衣柜里拿内裤般难受。
但随着NextCloud的几次大版本更新,NC的功能已经臃肿得大大超出我的需求了,随之而来的则是对服务器性能提升的要求。正好,月初时,主力服务器厂商跑路,在尝试了Digital-VM、BuyVM、Melbicom等几个不限流量的国际厂商后,决定留在Melbicom。坦白说,BuyVM的机器性能确实不错,也抢到了拉斯维加斯的1C2G+512G存储,但线路的稳定性确实很抱歉。而Melbicom,号称接入CN2,三网表现都不错,且2C4G的价格比BuyVM便宜很多。
几经权衡,我决定放弃NextCloud,转投Seafile。说实话,清爽的界面,轻量的文件存储和版本控制,实在不错。遂记录安装过程。
一、安装Docker
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
二、安装Docker-Compose
# for CentOS
yum install docker-compose -y
# for Ubuntu
apt-get install docker-compose -y
三、新建并修改 docker-compose.yml
mkdir /root/seafile
cd seafile
nano docker-compose.yml
version: '2.0'
services:
db:
image: mariadb:10.5
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=【数据库密码】 # Requested, set the root's password of MySQL service.
- MYSQL_LOG_CONSOLE=true
volumes:
- 【数据库存储位置】:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
networks:
- seafile-net
memcached:
image: memcached:1.5.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:latest
container_name: seafile
ports:
- "8000:80"
# - "8001:443" # If https is enabled, cancel the comment.
volumes:
- 【文件存储位置】:/shared # Requested, specifies the path to Seafile data persistent store.
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=【数据库用户密码】 # Requested, the value shuold be root's password of MySQL service.
- TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
- SEAFILE_ADMIN_EMAIL=【初始管理员账号邮箱】 # Specifies Seafile admin user, default is '[email protected]'.
- SEAFILE_ADMIN_PASSWORD=【初始管理员密码】 # Specifies Seafile admin password, default is 'asecret'.
- SEAFILE_SERVER_LETSENCRYPT=false # Whether use letsencrypt to generate cert.
- SEAFILE_SERVER_HOSTNAME=【域名】 # Specifies your host name.
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
修改如下几处
- MYSQL_ROOT_PASSWORD=【数据库密码】
- 【数据库存储位置】:/var/lib/mysql
- 【文件存储位置】:/shared
- DB_ROOT_PASSWD=【数据库用户密码】
- SEAFILE_ADMIN_EMAIL=【初始管理员账号邮箱】
- SEAFILE_ADMIN_PASSWORD=【初始管理员密码】
- SEAFILE_SERVER_HOSTNAME=【域名】
四、安装Seafile
docker-compose up -d
至此,Seafile就安装完毕了,接下来进行一些其他的模块配置!
五、配置垃圾回收模块
在 seafile 中,当文件被删除时,组成这些文件的块数据不会立即删除,因为可能有其他文件也会引用这些块数据(用于去重功能的实现)。为了真正删除无用的块数据,还需要额外运行"GC"程序。GC 会自动检测到哪些数据块不再被任何文件所引用,并清除它们。
GC 脚本被放在docker容器的 /scripts 目录下。执行 GC 的方法很简单:docker exec seafile /scripts/gc.sh。对于社区版来说,该程序会暂停 Seafile 服务,但这是一个相对较快的程序,一旦程序运行完成,Seafile 服务也会自动重新启动。而专业版提供了在线运行 GC 的功能,不会暂停 Seafile 服务。
如果已经安装了宝塔面板,则直接添加一个计划任务即可:
任务类型:Shell脚本
任务名称:SeaFile
执行周期:随便填,比如:每天、1时、30分
脚本内容:docker exec seafile /scripts/gc.sh
或
nano /etc/crontab
每12小时执行一次
0 */12 * * * root docker exec seafile /scripts/gc.sh
六、配置邮件模块
需要编辑seahub_settings.py
文件。
docker exec -it seafile bash
nano conf/seahub_settings.py
如果提示无nano,则
apt update && apt install nano -y
在seahub_settings.py
末端添加类似:
EMAIL_USE_TLS = False
EMAIL_HOST = 'smtp.domain.com' # smpt 服务器
EMAIL_HOST_USER = '[email protected]' # 用户名和域名
EMAIL_HOST_PASSWORD = 'password' # 密码
EMAIL_PORT = '25'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
更多请见:官方文档
七、配置WebDav模块
docker exec -it seafile bash
nano conf/seafdav.conf
内容应为:
[WEBDAV]
enabled = true
port = 8080
fastcgi = true
share_name = /seafdav
八、配置反向代理
如果有宝塔面板,则很简单,
新建一个网站,新建“反向代理”,内容为:
目标URL:http://127.0.0.1:8000
或
部署Caddy2,快速配置反向代理。
安装Caddy2
echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \
| sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
sudo apt update
sudo apt install caddy
编辑Caddyfile文件
nano /etc/caddy/Caddyfile
配置反向代理
xx.xx.xx{
reverse_proxy localhost:8000
}
其他Caddy命令
systemctl enable caddy.service # 开机启动
systemctl start caddy.service # 启动
systemctl stop caddy.service # 停止
systemctl restart caddy.service # 重启
systemctl status caddy.service # 查看状态
systemctl daemon-reload # 重载配置
全部配置完,重启一下Docker。
至此,桌面和移动客户端均能正常使用了。
然后再去后台配置一些个性化的内容即可。
如果还有其他功能需求,官方文档基本能解决问题。