seafile.conf

seafile.conf 配置
重要提示: 本配置文件中的每个条目都是区分大小写的。
修改后需要重启 seafile 和 seahub 服务才能生效:
            
                
                
./seahub.sh restart
./seafile.sh restart
存储配额设置
你可以为所有用户设置默认配额(例如 2GB),在 seafile.conf 中添加:
            
                
                
[quota]
# 默认用户配额(单位 GB,只能为整数)
default = 2
此设置适用于所有用户。如果想为特定用户设置配额,可登录 Seahub 网站以管理员身份在 “系统管理员” 页面设置。
从 Pro 10.0.9 版本起,你可以设置库中允许的最大文件数量,当超过限制时无法上传文件。默认无限制:
            
                
                
[quota]
library_file_limit = 100000
默认历史版本长度限制
如果不想保留所有文件的历史版本,可设置默认历史版本保留天数:
            
                
                
[history]
keep_days = <保留的天数>
默认回收站过期时间
对于删除的资料库,不会被立即彻底清除。它们会被临时存放到“已删除的资料库”和“系统管理”中的“资料库回收站”中,默认会在30天后自动清除这些数据。如果需要修改保留天数:
            
                
                
[library_trash]
expire_days = 60
系统回收站
Seafile 使用系统回收站,删除的库将移动至此,便于管理员恢复意外删除的库。
Seafile fileserver
Seafile fileserver的配置在文件   seafile.conf [fileserver] 部分
            
                
                
[fileserver]
# fileserver 的绑定地址
# 如果未使用代理部署,则默认为 0.0.0.0:无访问限制
# 设置为 127.0.0.1,如果与本地代理一起使用:仅允许本地访问。
host = 127.0.0.1
# 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]
#设置块大小为2MB
fixed_block_size=2
当用户上传文件时,文件服务器分配一个令牌来授权上传操作。该令牌默认有效期1小时。通过WAN上传大型文件时,上传时间可能会超过1小时,您可以将令牌到期时间更改为更大的值。
            
                
                
[fileserver]
#设置上传时间限制为3600s
web_token_expire_time=3600
您可以从Web界面下载文件夹为zip存档,但是Windows上的一些zip软件不支持UTF-8,在这种情况下,您可以使用"windows_encoding"设置来解决此问题。
            
                
                
[zip]
# 下载的 zip 文件的文件名编码。
windows_encoding = iso-8859-1
“ httptemp”目录包含在文件上载和zip下载期间创建的临时文件。在某些情况下,文件传输中断后,临时文件不会被清除。从7.1.5版本开始,文件服务器将定期扫描“ httptemp”目录以删除很久以前创建的文件。
            
                
                
[fileserver]
# 临时文件在多长时间后会被删除,单位为秒。默认为 3 天。
http_temp_file_ttl = x
# 文件扫描间隔,单位为秒。默认为 1 小时。
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 服务器。这可能会浪费带宽并导致内部网络的高负载。从 Seafile Pro 8.0.5 版本开始,我们添加了块缓存来改善这种情况。请注意,此配置仅对通过网页或 API 下载文件有效,对同步文件无效。
  • 要启用此功能,请在 [fileserver] 组中设置 use_block_cache 选项。默认情况下未启用。
  • block_cache_size_limit 选项用于限制缓存的大小。其默认值为 10GB。这些块缓存在 seafile-data/block-cache 目录中。当缓存文的总大小超过限制时,seaf-server 将清理旧文件,直到大小减少到限制的 70%。清理间隔为 5 分钟。您必须很好地估计缓存目录需要多少空间。否则,在频繁下载时,这个目录会很快被填满。
  • block_cache_file_types 配置用于选择缓存的文件类型。 block_cache_file_types 默认值为 mp4;mov。
            
                
                
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_limit download_limit 选项,以限制文件上传和下载的速度。默认情况下是不启用的。
            
                
                
[fileserver
# 单位是 KB/s
upload_limit = 100
download_limit = 100
自 Seafile 11.0.7 Pro 版本起,你可以要求文件服务器通过 Web API 对每个上传的文件进行病毒检查。在 病毒扫描 处查找更多选项。
            
                
                
[fileserver]
check_virus_on_web_upload = true
客户端同步后验证文件块完整性(12.0.4 起,默认启用):
            
                
                
[fileserver]
verify_client_blocks_after_sync = true
数据库配置
数据库的配置存储在 [database]   部分。(从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
当Seafile务器配置为使用 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 时,它将通过在 ca_path 中配置的 CA 检查 MySQL 服务器证书是否合法。 ca_path 是用于签署 MySQL 服务器证书的受信任 CA 证书路径。当 skip_verify 为 true 时,无需添加 ca_path 选项。此时不会验证 MySQL 服务器证书。
文件锁定(仅专业版)
Seafile Pro 服务器文件锁 会在一段时间后 自动过期,以防止被锁定的文件锁定时间过长,过期时间可以在 seafile.conf 文件中进行调整。
            
                
                
[file_lock]
default_expire_hours = 6 #默认是12小时
自 Seafile-pro-9.0.6 版本起,可以为获取锁定文件添加缓存(减少同步客户端导致的服务器负载),自专业版 12 起,此选项默认启用。
            
                
                
[file_lock]
use_locked_file_cache = true
与此同时,您需要配置memcache来使该缓存生效。
            
                
                
[memcached]
memcached_options = --SERVER=<the IP of Memcached Server> --POOL-MIN=10 --POOL-MAX=100
存储后端
你可以将 Seafile 配置为使用各种类型的对象存储后端
你也可以将 Seafile 配置为同时使用 多存储后端
集群
当你使用集群部署 Seafile 时,应添加以下配置(从12版本开始,如果你使用的是docker部署的集群,这个选项不再需要):
            
                
                
[cluster]
enabled = true
开启 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]
# 默认值为 false。如果启用,fileserver-access.log 将被写入日志目录。
enable_access_log = true
日志格式如下:
            
                
                
start time - user id - url - response code - process time
可用于 SIGUSR1 触发日志轮换。
Go Fileserver
Seafile 9.0 引入了一个用 Go 实现的fileserver。要启用它,你可以添加以下配置到seafile.conf中:
            
                
                
[fileserver]
use_go_fileserver = true
Go fileserver与用 C 语言实现的传统文件服务器相比有三个优势:
  1. 同步包含大量文件的库时性能更好。使用 C fileserver时,同步大型库可能会耗尽服务器中的所有工作线程,从而使服务变慢。有一个配置选项 max_sync_file_count 可用于限制要同步的库的大小。默认值为 10 万。使用 Go fileserver时,你可以将此选项设置为更高的数字,例如 100 万。
  2.   即时下载压缩文件夹,并且对下载文件夹的大小没有限制。对于 C fileserver必须先为下载的文件夹创建一个 zip 文件,然后将其发送给客户端。对于 Go fileserver,可以在传输给客户端的同时创建 zip 文件。因此,Go fileserver不再需要配置项 max_download_dir_size
  3. 自 10.0 版本起,你还可以设置上传 / 下载速率的限制。
Go fileserver在内存中缓存文件系统对象。一方面,它避免了对重复访问的对象进行重复创建和销毁;另一方面,它也会减慢对象释放的速度,这将防止 Go 的垃圾回收机制消耗过多的 CPU 时间。你可以通过以下选项设置文件系统缓存所使用的内存大小。
            
                
                
[fileserver]
# 单位:MB. 默认是2G.
fs_cache_limit = 100
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