seafile.conf 配置

存储空间容量设置

用户默认空间上限

[quota]
# 单位为 GB
default = 2

这个设置对所有用户生效. 如果你想对某一特定用户进行容量分配, 请以管理员身份登陆 Seahub 网站, 在System Admin页面中进行设置.

从企业版 10.0.9 开始,您可以设置资料库允许的最大文件数量,当资料库中的文件数量超出这个限制时,无法上传文件到这个资料库。默认没有限制。

[quota]
library_file_limit = 100000

默认历史记录设置

对所有的资料库设置一个默认的文件历史保留天数:

[history]
keep_days = days of history to keep

资料库回收站清理周期

对于删除的资料库,不会被立即彻底清除。它们会被临时存放到“已删除的资料库”和“系统管理”中的“资料库回收站”中,默认会在30天后自动清除这些数据。如果需要修改保留天数:

[library_trash]
expire_days = 60

缓存(专业版)

Seafile 会将一些信息保存到缓存中以提高性能,一些会话信息也会被保存到缓存中以在集群节点之间共享。Seafile 支持使用 Memcached 作为缓存。

如果您使用的是memcached:

[memcached]
# 如果您使用的不是本地的 memcached,替换 localhost 为相应地址
# POOL-MIN 和 POOL-MAX 用于控制连接池的大小。通常使用例子中给的值即可。
memcached_options = --SERVER=localhost --POOL-MIN=10 --POOL-MAX=100

Seafile fileserver

Seafile 监听的端口号 (不要修改该设置)

[fileserver]
# Seafile tcp 端口 (不要修改该设置)
port = 8082

从社区版 6.2 和企业版 6.1.9 开始,你可以设置用于服务 http 请求的线程数。默认值是10个线程。这个默认值适用于大多数应用场景。

[fileserver]
worker_threads = 15

上传/下载大小限制:

[fileserver]
# 上传文件最大限制为200M,默认是无限制.
max_upload_size=200                

# 最大下载目录限制为200M, 默认是100M. 
max_download_dir_size=200  

通过Web界面或客户端中的云端浏览器上传文件后,需要将其分成固定大小的块并存储到后端存储。我们称这个过程为“索引”。默认情况下,文件服务器使用1个线程顺序索引文件并逐个存储块。这适用与大多数情况。但是如果您使用的是 S3/Ceph/Swift 后端,则在存储后端可能会有更多带宽来并行存储多个块。我们提供了一个选项来定义索引中并发线程的数量;

[fileserver]
max_indexing_threads = 10

当用户在Web界面上传文件时,文件服务器将文件分割成固定大小的块。Web上传文件的默认块大小为8MB。块大小可以在这里设置。

[fileserver]
#Set block size to 8MB
fixed_block_size=8

当用户上传文件时,文件服务器分配一个令牌来授权上传操作。该令牌默认有效期1小时。通过WAN上传大型文件时,上传时间可能会超过1小时,您可以将令牌到期时间更改为更大的值。

[fileserver]
#Set uploading time limit to 3600s 
web_token_expire_time=3600

您可以从Web界面下载文件夹为zip存档,但是Windows上的一些zip软件不支持UTF-8,在这种情况下,您可以使用"windows_encoding"设置来解决此问题。

[zip]
# The file name encoding of the downloaded zip file.
windows_encoding = iso-8859-1

“ httptemp”目录包含在文件上载和zip下载期间创建的临时文件。在某些情况下,文件传输中断后,临时文件不会被清除。从7.1.5版本开始,文件服务器将定期扫描“ httptemp”目录以删除很久以前创建的文件。

[fileserver]
# After how much time a temp file will be removed. The unit is in seconds. Default to 3 days.
http_temp_file_ttl = x
# File scan interval. The unit is in seconds. Default to 1 hour.
http_temp_scan_interval = x

自 Pro 7.1.16 和 Pro 8.0.3 中的新功能:您可以设置 Seafile 客户端可同步的资料库中包含的最大文件数。默认值为 100000。下载资料库时,Seafile 客户端会请求 fs id 列表,您可以通过 fs_id_list_request_timeout 选项控制请求的超时时间,默认为 5 分钟。添加这两个选项是为了防止长时间的 fs-id 列表请求导致服务器超载。

自专业版 8.0.4 起,您可以将这两个选项都设置为-1,以允许无限制的大小和超时。

[fileserver]
max_sync_file_count = 100000
fs_id_list_request_timeout = 300

从 Seafile Pro 8.0.6版本开始,您可以用移动端浏览器下载文件。

[fileserver]
# 允许所有文件上传、下载 token 被多次访问。
# 默认下载的 token 不允许多次访问,这造成了对一些移动端浏览器的不兼容。
web_token_reusable = false

如果您使用对象存储作为存储后端,当一个大文件频繁下载时,需要从存储后端获取相同的块到 Seafile 服务器。这可能会浪费带宽并导致内部网络的高负载。从 Seafile Pro 8.0.5 版本开始,我们添加了块缓存来改善这种情况。请注意,此配置仅对通过网页或 API 下载文件有效,对同步文件无效。

use_block_cache = true
# 将块缓存大小限制设置为 100MB 
block_cache_size_limit = 100
# 针对特定的文件后缀使用缓存,默认 mp4 和 mov 格式
block_cache_file_types = mp4;mov

当有大量文件通过网页、API上传时,基于文件内容计算块的哈希值会有很大的计算开销。从Seafile Pro 9.0.6版本开始,您可以通过增加skip_block_hash选项来使用一个随机的字符串作为块ID,从而减少计算开销。注意,这个选项会影响 fsck 程序,使得无法检查块的内容是否损坏。因此设置了这个选项后,执行 fsck 的时候需要指定 --shallow 选项,不验证块内容的完整性。

[fileserver]
skip_block_hash = true

如果你想在上传文件时限制文件类型,从 Pro 10.0.0 版本开始,您可以在 [fileserver] 组中设置 file_ext_white_list 选项。该选项是一个文件类型列表,只有列表中的文件类型才允许上传。默认情况下不启用。

[fileserver]
file_ext_white_list = md;mp4;mov

从 10.0.1 版本开始,使用 go fileserver 时,您可以在 [fileserver] 组中设置 upload_limitdownload_limit 选项,以限制文件上传和下载的速度。默认情况下是不启用的。

[fileserver]
# 单位是 KB/s。
upload_limit = 100
download_limit = 100

更改MySQL连接池大小

当您将seafile服务器配置为使用MySQL时,默认连接池大小为100,这对于大多数用例应该是足够的。您可以通过在seafile.conf中添加以下选项来更改此值:

[database]
......
# Use larger connection pool
max_connections = 200

使用 unix_socket 认证插件

从社区版 10.0.5 和企业版 10.0.7 开始,您可以使用 MariaDB/MySQL 提供的 unix_socket 认证插件。您可以通过增加 unix_socket 选项,并且去掉 userpassword 选项,来开启该功能。

[database]
......
# unix socket 文件路径
unix_socket = /var/run/mysqld/mysqld.sock

开启 Slow Log

Seafile-pro-6.3.10 开始,Seafile增加了 seaf-server 的 RPC 慢请求查询日志,便于管理员更好的做性能分析。

该功能是默认开启的,如果您想要自主配置相关选项,可以在 seafile.conf 中添加如下配置:

[slow_log]
# 默认为 true
enable_slow_log = true
# 所有慢请求日志阈值的单位为毫秒。
# 默认为5000毫秒,这意味着只有处理超过5000毫秒的RPC查询才会被记录。
rpc_slow_threshold = 5000

logs/slow_logs 目录下,可以找到 seafile_slow_rpc.log;并且该日志文件支持使用 log-rotate 做日志切割,只需要向 seaf-server 进程发送 SIGUSR2 信号,进程就会关闭并重新打开日志文件。

自 9.0.2 Pro 起,触发日志旋转的信号已更改为SIGUSR1 。此信号将触发 seaf-server 打开的所有日志文件的轮换。您应相应地更改日志轮换设置。

启用访问日志

尽管Nginx记录了所有具有某些详细信息的请求,例如url,响应代码,上游进程时间,但有时需要有更多关于请求的上下文,例如每个请求的用户ID。此类信息只能从文件服务器本身记录。从 9.0.2 Pro 开始,访问日志功能已添加到文件服务器。

要启用访问日志,请将以下选项添加到 seafile.conf

[fileserver]
# default to false. If enabled, fileserver-access.log will be written to log directory.
enable_access_log = true

日志格式如下:

start time - user id - url - response code - process time

可用于SIGUSR1触发日志轮换。

Go Fileserver性能分析

从Seafile 9.0.7开始,您可以增加下面的选项来开启 go fileserver 的 profile 功能。

# profile_password是必须配置的,您可以按需修改。
[fileserver]
enable_profiling = true
profile_password = 8kcUz1I2sLaywQhCRtn2x1

这个接口可以通过 Go 语言提供的pprof工具来使用。pprof的详细信息,请参阅 https://pkg.go.dev/net/http/pprof。 请注意,您在使用以下命令之前,必须先安装 Go。 password 参数应该与您在配置中设置的相匹配。

go tool pprof http://localhost:8082/debug/pprof/heap?password=8kcUz1I2sLaywQhCRtn2x1
go tool pprof http://localhost:8082/debug/pprof/profile?password=8kcUz1I2sLaywQhCRtn2x1

通知服务配置

从 Seafile 10.0.0 开始,您可以通过添加以下配置选项来启用通知服务:

# jwt_private_key 是必需的。您应该手动生成它。
[notification]
enabled = true
host = 127.0.0.1           # 通知服务的IP
port = 8083                # 通知服务的端口
log_level = info           # 通知服务的日志级别
jwt_private_key = xxxxxx   # jwt_private_key 用于生成 jwt 令牌和验证 seafile 服务

如果你使用nginx,那么你还需要为nginx添加如​​下配置:

server {
    ...

    location /notification/ping {
        proxy_pass http://127.0.0.1:8083/ping;
        access_log      /var/log/nginx/notification.access.log seafileformat;
        error_log       /var/log/nginx/notification.error.log;
    }
    location /notification {
        proxy_pass http://127.0.0.1:8083/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection "upgrade";
        access_log      /var/log/nginx/notification.access.log seafileformat;
        error_log       /var/log/nginx/notification.error.log;
    }

    ...
}

注意

请重启 Seafile 和 Seahub 以使修改生效:

./seahub.sh restart
./seafile.sh restart

文件锁定 (仅限Pro版本)

Seafile Pro服务在一段时间后自动过期文件锁,以防止锁定的文件被锁定太久。可以在seafile.conf文件中调整到期时间。

[file_lock]
default_expire_hours = 6

默认时间是12小时。

从Seafile Pro 9.0.6开始,您可以增加缓存来获取已经锁定的文件(为了减少由于客户端导致的服务器负载)。

[file_lock]
use_locked_file_cache = true

与此同时,您需要配置memcache来使该缓存生效。

[memcached]
memcached_options = --SERVER=<the IP of Memcached Server> --POOL-MIN=10 --POOL-MAX=100

Last modified by 敦福生, 2024-07-30

存储空间容量设置
默认历史记录设置
资料库回收站清理周期
缓存(专业版)
Seafile fileserver
更改MySQL连接池大小
使用 unix_socket 认证插件
开启 Slow Log
启用访问日志
Go Fileserver性能分析
通知服务配置
注意
文件锁定 (仅限Pro版本)