安装Docker版Seafile

自从几年前用上NextCloud后,就已经习惯了这种同步型网盘了。加上有团队共享的需求,因此暂时找不到其他低成本的替代工具。当然,坚果云很不错,但数据存在别人家就跟每次洗完澡要去别人的衣柜里拿内裤般难受。

但随着NextCloud的几次大版本更新,NC的功能已经臃肿得大大超出我的需求了,随之而来的则是对服务器性能提升的要求。正好,月初时,主力服务器厂商跑路,在尝试了Digital-VMBuyVMMelbicom等几个不限流量的国际厂商后,决定留在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 'me@example.com'.
      - 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 = 'username@domain.com'    # 用户名和域名
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。

至此,桌面和移动客户端均能正常使用了。

然后再去后台配置一些个性化的内容即可。

如果还有其他功能需求,官方文档基本能解决问题。

 

打完收工!!

阅读剩余
THE END