seafile.conf

seafile.conf 配置
重要提示:本配置文件中的每个条目都是 区分大小写 的。
修改 seafile.conf 后,需要重启相关 Seafile 服务才能使配置生效。使用 Docker 部署时,需要重启 Seafile 容器。
存储配额设置
可以为所有用户设置默认存储配额,例如 2 GB。只需在 seafile.conf 中添加以下配置:
            
                
                
[quota]
# 默认用户配额,单位为 GB,仅支持整数
default = 2
此设置对所有用户生效。如果需要为某个特定用户设置配额,可以使用管理员账户登录 Seahub 网站,然后在“系统管理”(System Admin)页面中进行设置。
从 Seafile 专业版 10.0.9 开始,可以设置单个资料库允许包含的最大文件数量。达到上限后,将无法继续向该资料库上传文件。默认情况下不限制文件数量。
            
                
                
[quota]
library_file_limit = 100000
默认历史版本长度限制
如果不希望保留文件的全部修改历史,可以为所有资料库设置默认的历史版本保留期限。
            
                
                
[history]
keep_days = <保留的天数>
其中 <保留的天数> 是占位符,实际配置时应替换为整数,例如 keep_days = 30 。
默认回收站过期时间
资料库回收站的默认自动清理期限为 30 天 。可以添加以下配置进行修改:
            
                
                
[library_trash]
expire_days = 60
Seafile fileserver
Seafile 文件服务器(fileserver)的设置放在 seafile.conf 的 [fileserver] 段中。
工作线程数
可以设置用于处理 HTTP 请求的工作线程数量。默认值为 10 ,对于大多数使用场景而言,这个值已经比较合适。
            
                
                
[fileserver]
worker_threads = 15
上传与下载大小限制
可以修改上传文件的最大大小,以及下载文件夹时的最大大小。
            
                
                
[fileserver]
# 将单个上传文件的最大大小设置为 200 MB。
# 如果不配置,则不限制上传文件的大小。
max_upload_size=200
# 将下载文件夹的最大大小设置为 200 MB。
# 默认值为 100 MB。
max_download_dir_size=200
文件索引的并发线程数
用户通过网页界面或客户端中的云端文件浏览器上传文件后,文件需要被切分为固定大小的数据块,并保存到存储后端。这个过程称为 索引(indexing) 。
默认情况下,文件服务器使用 1 个线程 顺序执行索引操作,逐个存储数据块。这适用于大多数场景。如果使用 S3、Ceph 或 Swift 存储后端,则可能拥有足够的存储带宽来并行保存多个数据块。
可以通过以下配置指定索引操作的并发线程数量:
            
                
                
[fileserver]
max_indexing_threads = 10
注意: 此选项控制的是 单个文件 执行索引时使用的线程数量,而不是同时上传的文件数量。如果有 N 个文件同时上传,最多可能有 max_indexing_threads × N 个线程用于这些文件的索引操作。
网页上传的文件块大小
用户通过网页界面(Seahub)上传文件时,文件服务器会将其切分为固定大小的数据块。网页上传文件的数据块默认大小为 8 MB ,可以通过以下配置调整:
            
                
                
[fileserver]
# 将数据块大小设置为 2 MB
fixed_block_size=2
网页上传令牌的有效期
用户通过网页界面上传文件时,文件服务器会分配一个用于授权上传操作的令牌(Token)。该令牌默认有效期为 1 小时 。
通过广域网(WAN)上传大文件时,上传时间可能超过 1 小时。可以将令牌的有效期调整得更长。
            
                
                
[fileserver]
# 将上传令牌有效期设置为 3600 秒
web_token_expire_time=3600
下载 ZIP 压缩包的文件名编码
可以从 Seahub 将文件夹下载为 ZIP 压缩包。不过,Windows 上的某些解压缩软件不支持 UTF-8 文件名编码。在这种情况下,可以使用 windows_encoding 选项解决编码兼容性问题。
            
                
                
[zip]
# 下载的 ZIP 文件中的文件名编码
windows_encoding = iso-8859-1
临时文件清理
httptemp 目录存放上传文件和下载 ZIP 压缩包过程中创建的临时文件。如果文件传输中断,有些临时文件可能未被及时清理。
从 Seafile 7.1.5 开始,文件服务器会定期扫描 httptemp 目录,删除创建时间较早的临时文件。
            
                
                
[fileserver]
# 临时文件在多长时间后被删除,单位为秒;默认为 3 天。
http_temp_file_ttl = x
# 扫描临时文件的时间间隔,单位为秒;默认为 1 小时。
http_temp_scan_interval = x
其中 x 为占位符,需要替换成实际秒数,例如 3 天为 259200 秒、1 小时为 3600 秒。
客户端同步文件数及 fs-id-list 请求超时
可以设置 Seafile 客户端能够同步的单个资料库的最大文件数量,默认值为 100000 。
下载资料库时,Seafile 客户端会向服务器请求文件系统 ID 列表(fs-id-list)。可以通过 fs_id_list_request_timeout 控制该请求的超时时间,默认值为 5 分钟 。
这两个选项用于防止耗时过长的 fs-id-list 请求给服务器造成过高负载。两个选项都可以设置为 -1 ,以取消数量限制和超时时间限制。
            
                
                
[fileserver]
max_sync_file_count = 100000
fs_id_list_request_timeout = 300
数据块缓存(专业版)
如果使用对象存储作为存储后端,当一个大文件被频繁下载时,Seafile 服务器可能需要不断从存储后端读取相同的数据块,从而浪费网络带宽,并增加内部网络的负载。
从 Seafile 专业版 8.0.5 开始,可以启用数据块缓存功能以改善此问题。
  • 在 [fileserver] 配置组中设置 use_block_cache 以启用数据块缓存;默认 不启用 。
  • block_cache_size_limit 用于限制缓存大小,默认值为 10 GB 。数据块保存在 seafile-data/block-cache 目录中。当缓存文件总大小超过限制时, seaf-server 会清理较旧的文件,直到缓存大小降至限制值的 70% 。清理间隔为 5 分钟 。需要合理估计缓存目录所需的磁盘空间,否则频繁下载可能很快占满该目录。
  • block_cache_file_types 用于指定需要缓存的文件类型,默认值为 mp4;mov 。
            
                
                
[fileserver]
use_block_cache = true
# 将数据块缓存大小限制为 100 MB
block_cache_size_limit = 100
block_cache_file_types = mp4;mov
跳过数据块哈希计算(专业版)
通过网页和 API 大量上传文件时,根据数据块内容计算数据块 ID 可能带来较大的计算开销。
从 Seafile 专业版 9.0.6 开始,可以添加 skip_block_hash 选项,使用随机字符串作为数据块 ID。
警告: 启用该选项后, fsck 将无法检查数据块内容的完整性。执行 fsck 时,应指定 --shallow 参数,跳过内容完整性检查。
            
                
                
[fileserver]
skip_block_hash = true
上传文件扩展名白名单(专业版)
如果希望限制允许上传的文件类型,从 Seafile 专业版 10.0.0 开始,可以在 [fileserver] 配置组中设置 file_ext_white_list 。
此选项用于列出允许上传的文件扩展名,只有列表中的文件类型可以上传。默认情况下 不启用 该限制。
            
                
                
[fileserver]
file_ext_white_list = md;mp4;mov
网页 API 上传时进行病毒检查(专业版)
从 Seafile 专业版 11.0.7 开始,可以要求文件服务器对通过网页 API 上传的每个文件进行病毒检查。有关更多设置,请参阅 病毒扫描 。
            
                
                
[fileserver]
# 默认值为 false
check_virus_on_web_upload = true
客户端同步后验证数据块
从 Seafile 12.0.4 开始,客户端完成上传后,Seafile 服务器会检查上传的数据块是否完整。该功能默认 启用 。
            
                
                
[fileserver]
# 默认值为 true
verify_client_blocks_after_sync = true
数据库配置
数据库配置位于 [database] 部分。
从 Seafile 11.0 开始, 不再支持 SQLite 。
            
                
                
[database]
type=mysql
host=127.0.0.1
user=root
password=root
db_name=seafile_db
connection_charset=utf8
max_connections=100
使用 MySQL 时,默认数据库连接池大小为 100 ,通常足以满足大多数使用场景。
从 Seafile 10.0.2 开始,可以添加以下配置,启用与 MySQL 服务器之间的加密连接:
            
                
                
[database]
use_ssl = true
skip_verify = false
ca_path = /etc/mysql/ca.pem
当 use_ssl 为 true 且 skip_verify 为 false 时,Seafile 会使用 ca_path 指定的 CA 证书验证 MySQL 服务器证书。 ca_path 是用于签发 MySQL 服务器证书的可信 CA 证书路径。
如果 skip_verify 为 true ,则无需设置 ca_path ,但此时 不会验证 MySQL 服务器的证书 。
文件锁定(仅专业版)
Seafile 专业版服务器会在一定时间后自动让文件锁过期,防止文件被长时间锁定。可以在 seafile.conf 中调整过期时间。
            
                
                
[file_lock]
default_expire_hours = 6
默认值为 12 小时 。
从 Seafile 专业版 9.0.6 开始,可以为获取已锁定文件的信息添加缓存,以减轻同步客户端对服务器造成的负载。从 专业版 12 开始,该选项默认启用。
            
                
                
[file_lock]
use_locked_file_cache = true
要使缓存生效,还需要配置以下 Memcached 选项,将 <MEMCACHED_SERVER_IP> 替换为 Memcached 服务器地址:
            
                
                
[memcached]
memcached_options = --SERVER=<MEMCACHED_SERVER_IP> --POOL-MIN=10 --POOL-MAX=100
存储后端
可以配置 Seafile 使用不同类型的对象存储后端:
也可以配置 Seafile 同时使用多个存储后端 。
集群
如果以集群方式部署 Seafile,应添加以下配置:
            
                
                
[cluster]
enabled = true
提示: 从 Seafile 12 开始,如果使用 Docker 部署 Seafile 集群,则不再需要该选项。
开启 Slow Log
从 Seafile 专业版 6.3.10 开始,可以启用 seaf-server 的 RPC 慢日志进行性能分析。慢日志默认 启用 。
如果需要修改相关选项,可以在 seafile.conf 中添加:
            
                
                
[slow_log]
# 默认值为 true
enable_slow_log = true
# 以下所有慢日志阈值的单位均为毫秒。
# 默认值为 5000 毫秒,仅记录处理时间超过 5000 毫秒的 RPC 请求。
rpc_slow_threshold = 5000
慢日志文件 seafile_slow_rpc.log 位于 logs/slow_logs 目录中。
也可以参考 日志轮转 配置日志文件轮转。早期版本可以向 seaf-server 进程发送 SIGUSR2 信号,使慢日志文件关闭后重新打开。
从 Seafile 专业版 9.0.2 开始,触发日志轮转的信号已改为 SIGUSR1 。 该信号会触发 seaf-server 打开的所有日志文件的轮转,因此应相应更新日志轮转配置。
启用访问日志
虽然 Nginx 会记录请求 URL、响应状态码、上游处理时间等信息,但有时还需要记录更多与请求有关的上下文,例如每个请求对应的用户 ID。这些信息只能由文件服务器自身记录。
从 Seafile 专业版 9.0.2 开始,文件服务器提供访问日志功能。
要启用访问日志,请在 seafile.conf 中添加:
            
                
                
[fileserver]
# 默认值为 false。启用后,fileserver-access.log 将写入日志目录。
enable_access_log = true
日志格式如下:
            
                
                
开始时间 - 用户 ID - URL - 响应状态码 - 处理时间
可以发送 SIGUSR1 信号触发日志轮转。
Go Fileserver
Seafile 9.0 引入了 Go 语言实现的文件服务器(Go Fileserver)。可以在 seafile.conf 中设置以下选项启用它:
            
                
                
[fileserver]
use_go_fileserver = true
与传统的 C 语言文件服务器相比,Go 文件服务器具有以下三个优势:
  1. 同步包含大量文件的资料库时性能更好。 使用 C 文件服务器同步大型资料库时,可能占用服务器的全部工作线程,导致服务变慢。可以通过 max_sync_file_count 限制允许同步的资料库大小,其默认值为 10 万。使用 Go 文件服务器时,可以将该选项设置为更高的值,例如 100 万 。
  2. 支持边生成边下载文件夹 ZIP 压缩包,且不限制下载文件夹的大小。 C 文件服务器必须先为待下载文件夹生成 ZIP 文件,再发送给客户端;Go 文件服务器则可以在传输过程中同时生成 ZIP 文件。因此,Go 文件服务器不再需要 max_download_dir_size 选项。
  3. 从 10.0 版本开始支持上传和下载速率限制。
文件系统对象缓存
Go Fileserver 会在内存中缓存文件系统(FS)对象。一方面,这可以避免反复创建和销毁频繁访问的对象;另一方面,也会延缓对象的释放速度,从而避免 Go 的垃圾回收(GC)机制消耗过多 CPU 资源。
可以通过以下选项设置 FS 缓存允许使用的内存大小:
            
                
                
[fileserver]
# 单位为 MB,默认值为 2 GB。
fs_cache_limit = 100
fs-id-list 请求的最大处理并发数
从 Seafile 专业版 12.0.10 开始,可以设置 fs-id-list 请求的最大处理线程数。
下载资料库时,Seafile 客户端会请求文件系统 ID 列表。可以通过 fs_id_list_max_threads 配置 Go Fileserver 处理这些请求的最大并发数,默认值为 10 。
            
                
                
[fileserver]
fs_id_list_max_threads = 20
单连接上传和下载速率限制
从 Seafile 专业版 10.0.1 开始,使用 Go 文件服务器时,可以在 [fileserver] 配置组中使用 upload_limit 和 download_limit 限制文件上传及下载速度。
该限制适用于 每个连接 。当使用多个连接同时上传或下载时,总带宽占用可能超过设置的限制值。默认情况下 不启用 。
            
                
                
[fileserver]
# 单位为 KB/s
upload_limit = 100
download_limit = 100
单用户总上传和下载速率限制
从 Seafile 专业版 13.0.19 开始,Go Fileserver 支持为每个用户设置总上传/下载速率限制。此功能可以防止个别用户独占服务器带宽,是一种基本的服务质量(QoS)控制措施。
建议根据服务器的总体带宽容量设置合理的限制值。
限制方式如下:
  • 覆盖所有流量: 包括网页界面、API 调用、桌面客户端同步和分享链接产生的流量。
  • 上传与下载采用相同的限制值: 上传和下载的速率分别统计,但不能分别设置两个不同的速率限制。
  • 按用户账户限制,而不是按连接限制: 与 upload_limit 、 download_limit 不同,此限制绑定到用户账户,同一用户所有并发连接的带宽会合并计算,以执行限速。
  • 只能手动配置: 与单连接速率限制不同,不能通过 API 设置这一选项。
            
                
                
[fileserver]
# 默认单位为 KB/s
user_rate_limit=2000
# 也可以使用便于阅读的单位,如 MB、KB。
# user_rate_limit = 2MB
Go Fileserver 性能分析
从 Seafile 9.0.7 开始,可以添加以下配置,启用 Go Fileserver 的性能分析(Profiling)功能:
            
                
                
# profile_password 是必填项,请按实际需要修改。
[fileserver]
enable_profiling = true
profile_password = 8kcUz1I2sLaywQhCRtn2x1
可以使用 Go 语言提供的 pprof 工具访问性能分析接口。详细信息参阅 Go pprof 文档 。
注意: 首先需要在执行以下命令的计算机上安装 Go。命令中 password 的值应与 profile_password 一致。 以上密码仅用于演示,实际部署时请替换为自行生成的安全密码。
            
                
                
go tool pprof 'http://localhost:8082/debug/pprof/heap?password=8kcUz1I2sLaywQhCRtn2x1'
go tool pprof 'http://localhost:8082/debug/pprof/profile?password=8kcUz1I2sLaywQhCRtn2x1'