seahub_settings.py

Seahub 配置
提示:可以通过Web界面修改多数配置项,这些配置项会被保存在数据库表(seahub_db/constance_config)中。他们的优先级高于配置文件中的项目。如果要禁用Web界面设置,可以添加 ENABLE_SETTINGS_VIA_WEB = False 到 seahub_settings.py。
Seahub 下发送邮件提醒
缓存
Seahub 默认将缓存项(avatars,profiles等)缓存到目录/tmp/seahub_cache您可以用Memcached/Redis替换。
Memcached
#Debian/Ubuntu安装memcached;如果容器部署不需要单独安装
apt-getinstallmemcachedlibmemcached-dev-y
pip3install--timeout=3600pylibmcdjango-pylibmc

systemctlenable--nowmemcached
添加如下配置到seahub_settings.py:
#location是memcached的地址,如果容器部署,默认会是memcached
CACHES={
    'default':{
        'BACKEND':'django_pylibmc.memcached.PyLibMCCache',
        'LOCATION':'127.0.0.1:11211',
    },
}
Redis
在 Seafile 11.0 版本中添加了对 Redis 的支持。
  1. 在你的操作系统中使用软件包安装程序安装 Redis。
安全设置
#出于安全考虑,请设置与主机/域相匹配
#详细信息请参考
ALLOWED_HOSTS=['.myseafile.com']

#是否对CSRFcookie使用安全cookie。
#https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-cookie-secure
CSRF_COOKIE_SECURE=True

#CSRFCookie的SameSite属性值
#https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-cookie-samesite
CSRF_COOKIE_SAMESITE='Strict'

#https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-trusted-origins
CSRF_TRUSTED_ORIGINS=['https://www.myseafile.com']
用户管理选项
以下选项影响用户注册,密码和 session。
#是否在网页上启用或禁用注册。默认值为`False`。
ENABLE_SIGNUP=False

#注册完成后是否自动激活用户。默认值为`True`。
#如果设置为`False`,新用户需要管理员在后台激活。
ACTIVATE_AFTER_REGISTRATION=False

#系统管理员添加新成员时是否发送邮件。默认值为`True`。
SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER=True

#系统管理员重置用户密码时是否发送邮件。默认值为`True`。
SEND_EMAIL_ON_RESETTING_USER_PASSWD=True

#用户注册完成后是否发送邮件通知系统管理员。默认值为`False`。
NOTIFY_ADMIN_AFTER_REGISTRATION=True

#登录时“记住我”的天数。默认值为7
LOGIN_REMEMBER_DAYS=7

#登录尝试次数限制,超过后显示验证码
LOGIN_ATTEMPT_LIMIT=3

#登录失败次数超过限制时是否冻结用户账号
#版本5.1.2或专业版5.1.3及以上
FREEZE_USER_ON_LOGIN_FAILED=False

#用户密码的最小长度(从seafile12版本开始已弃用)
USER_PASSWORD_MIN_LENGTH=6

#密码强度等级,基于四种输入类型(从seafile12版本开始已弃用):
#数字、大写字母、小写字母、其他符号
#'3'表示密码至少包含上述三种类型
USER_PASSWORD_STRENGTH_LEVEL=3

#默认False,仅检查USER_PASSWORD_MIN_LENGTH
#如果为True,则检查密码强度等级,仅允许STRONG(或以上)级别
USER_STRONG_PASSWORD_REQUIRED=False

#管理员添加或重置用户时是否强制用户更改密码
#版本5.1.1新增,默认值为True
FORCE_PASSWORD_CHANGE=True

#Cookie有效期,单位秒(默认:2周)
SESSION_COOKIE_AGE=60*60*24*7*2

#用户关闭浏览器时是否使sessioncookie过期
SESSION_EXPIRE_AT_BROWSER_CLOSE=False

#是否在每次请求时保存session数据。默认值为`False`
SESSION_SAVE_EVERY_REQUEST=False

#是否启用“已发布库”功能。默认值为`False`
#版本6.1.0CE
ENABLE_WIKI=True

#在旧版本中,如果使用单点登录(SSO),密码不会保存在Seafile中。
#用户无法使用WebDAV,因为Seafile无法验证密码是否正确。
#自6.3.8版本起,可以启用此选项,让用户为WebDAV登录设置专用密码。
#使用SSO登录的用户可以使用此密码登录WebDAV。
#启用该功能。需先安装pycryptodome。
#sudopipinstallpycryptodome==3.12.0
ENABLE_WEBDAV_SECRET=True
WEBDAV_SECRET_MIN_LENGTH=8

#密码强度等级,基于四种输入类型:
#数字、大写字母、小写字母、其他符号
#'3'表示密码至少包含上述三种类型
WEBDAV_SECRET_STRENGTH_LEVEL=1

#自7.0.9版本起,可以强制全体用户使用双因素认证登录。
#前提是管理员在“系统管理->设置”页面启用了双因素认证。
#然后可以将以下配置添加到配置文件中。
ENABLE_FORCE_2FA_TO_ALL_USERS=True
资料库快照标签功能
#开启此选项可让用户为资料库快照添加标签。默认值为“False”。
ENABLE_REPO_SNAPSHOT_LABEL=False
资料库设置
#是否启用创建加密库
ENABLE_ENCRYPTED_LIBRARY=True
#重置加密资料库密码
#说明1:此功能需要为Seafile配置邮件服务。
#说明2:此功能开启后,只对用户输入过密码的加密资料库有效。
#说明3:Seafile专业版才有此功能。
#说明4:该功能只支持浏览器操作的加密资料库密码重置
ENABLE_RESET_ENCRYPTED_REPO_PASSWORD=True

#加密库的版本
#仅能设置为`2`或`4`
#版本3不安全(使用AES128加密),因此不再支持
#关于版本2和4的区别,可参考:
#https://manual.seafile.com/latest/administration/security_features/#how-does-an-encrypted-library-work
ENCRYPTED_LIBRARY_VERSION=2

#从版本12开始,你可以为新加密库选择密码哈希算法
#密码用于加密加密密钥,因此使用安全的密码哈希算法防止暴力破解很重要
#12版本之前,固定使用PBKDF2-SHA256(1000次迭代)
#
#目前支持两种哈希算法:
#-PBKDF2:唯一可用参数是迭代次数。随着GPU越来越多用于此类计算,需要逐步增加迭代次数。
#默认迭代次数为1000,截至2023年推荐迭代次数为600,000
#-Argon2id:安全哈希算法,即便在GPU上计算也代价高。可设置三个参数:时间成本、内存成本、并行度
#参数用逗号分隔,例如"2,102400,8",这是Seafile默认参数
#更多信息可参考https://github.com/P-H-C/phc-winner-argon2
#
#注意:仅支持sync客户端>=9.0.9和SeaDrive>=3.0.12同步使用这些算法创建的库
ENCRYPTED_LIBRARY_PWD_HASH_ALGO="argon2id"
ENCRYPTED_LIBRARY_PWD_HASH_PARAMS="2,102400,8"
#ENCRYPTED_LIBRARY_PWD_HASH_ALGO="pbkdf2_sha256"
#ENCRYPTED_LIBRARY_PWD_HASH_PARAMS="600000"

#加密库密码最小长度
REPO_PASSWORD_MIN_LENGTH=8

#生成分享/上传链接时是否强制使用密码(版本8.0.9及以上)
SHARE_LINK_FORCE_USE_PASSWORD=False

#分享链接密码最小长度(版本4.4及以上)
SHARE_LINK_PASSWORD_MIN_LENGTH=8

#分享/上传链接密码强度等级
#基于四种输入类型:数字、大写字母、小写字母、其他符号
#'3'表示密码至少包含三种类型(版本8.0.9及以上)
SHARE_LINK_PASSWORD_STRENGTH_LEVEL=3

#分享链接默认过期天数(版本6.3.8及以上)
#配置此值后,用户无法再生成无过期时间的分享链接
#如果生成分享链接时未设置过期时间,则使用此处配置的值
SHARE_LINK_EXPIRE_DAYS_DEFAULT=5

#分享链接最小过期天数(版本6.3.6及以上)
#SHARE_LINK_EXPIRE_DAYS_MIN应小于SHARE_LINK_EXPIRE_DAYS_DEFAULT(如果已设置)
SHARE_LINK_EXPIRE_DAYS_MIN=3#默认0,表示无限制

#分享链接最大过期天数(版本6.3.6及以上)
#SHARE_LINK_EXPIRE_DAYS_MAX应大于SHARE_LINK_EXPIRE_DAYS_DEFAULT(如果已设置)
SHARE_LINK_EXPIRE_DAYS_MAX=8#默认0,表示无限制

#上传链接默认过期天数(版本7.1.6及以上)
#配置此值后,用户无法再生成无过期时间的上传链接
UPLOAD_LINK_EXPIRE_DAYS_DEFAULT=5

#上传链接最小过期天数(版本7.1.6及以上)
UPLOAD_LINK_EXPIRE_DAYS_MIN=3#默认0,表示无限制

#上传链接最大过期天数(版本7.1.6及以上)
UPLOAD_LINK_EXPIRE_DAYS_MAX=8#默认0,表示无限制

#查看文件/文件夹分享链接时是否强制用户登录(版本6.3.6及以上)
SHARE_LINK_LOGIN_REQUIRED=True

#浏览器查看(非编辑)文件时是否启用水印(版本6.3.6及以上)
ENABLE_WATERMARK=True

#禁用与任意文件夹同步。默认值为`False`
#注意:版本4.2.4及以上
DISABLE_SYNC_WITH_ANY_FOLDER=True

#是否启用库历史设置
ENABLE_REPO_HISTORY_SETTING=True

#是否允许用户将库分享给任意群组
#版本6.2.0及以上
ENABLE_SHARE_TO_ALL_GROUPS=True

#是否允许用户清空回收站(默认True)
#版本6.3.6及以上
ENABLE_USER_CLEAN_TRASH=True

#在下载链接上添加“举报滥用”按钮(版本7.1.0及以上)
#用户可在分享链接页面举报滥用,填写举报类型、联系方式和描述
#默认值为False
ENABLE_SHARE_LINK_REPORT_ABUSE=True
在线文件查看设置
#在线预览文件的最大大小,默认30M
FILE_PREVIEW_MAX_SIZE=30*1024*1024

#可在线预览的文本文件扩展名
#注意:版本6.1.1及以上
TEXT_PREVIEW_EXT="""ac, am, bat, c, cc, cmake, cpp, cs, css, diff, el, h, html,
htm,java,js,json,less,make,org,php,pl,properties,py,rb,
scala,script,sh,sql,txt,text,tex,vi,vim,xhtml,xml,log,csv,
groovy,rst,patch,go"""

#Seafile仅为小于以下大小的图片生成缩略图
#版本6.3.8pro及以上支持psd文件在线预览
THUMBNAIL_IMAGE_SIZE_LIMIT=30#MB

#是否为视频生成缩略图。需先安装ffmpeg和moviepy
#详情请参考:https://manual.seafile.com/deploy/video_thumbnails.html
#注意:此选项在版本7.1中已弃用
ENABLE_VIDEO_THUMBNAIL=False

#使用视频第5秒的帧作为缩略图
#注意:此选项在版本7.1中已弃用
THUMBNAIL_VIDEO_FRAME_TIME=5

#存放缩略图文件的绝对路径
THUMBNAIL_ROOT='/haiwen/seahub-data/thumbnail/thumb/'

#图片预览的默认大小。增大此值可提高预览质量
#注意:版本6.1.1及以上
THUMBNAIL_SIZE_FOR_ORIGINAL=1024
地图服务
GOOGLE_MAP_KEY='<替换为你的Google Maps API Key>'
SERVER_GOOGLE_MAP_KEY='<替换为你的Google Maps API Key>'
注意:
为了防止 Google API 密钥被滥用,应对其使用进行限制。但即便设置了限制,滥用风险仍然存在——尤其是因为 GOOGLE_MAP_KEY 必须包含在你的源代码中,因此是公开可访问的。此外,如果大量使用地图插件,可能会增加 Google 的费用支出,因此需要密切监控你的开销。
Cloud 模式
如果您打算对外提供公共的云盘服务,您应该启用 Cloud 模式。它禁用了seafile 上的"公共"标签,以确保用户不能创建全局的所有人都能访问的资料库。通过全局通讯录一个用户可以搜索其他用户账号,在云服务模式下您也需要它。
#启用cloud模式并隐藏"公共"标签。
CLOUD_MODE=True
#禁用全局通讯录
ENABLE_GLOBAL_ADDRESSBOOK=False
外部认证
#是否启用ADFS(ActiveDirectory联合服务)认证
#默认值为False
#版本6.0.9及以上
ENABLE_ADFS_LOGIN=True

#是否强制用户通过ADFS/OAuth登录,而不是使用邮箱和密码
#默认值为False
#版本11.0.7及以上,在版本12.0中,也用于控制通过OAuth登录的用户
DISABLE_ADFS_USER_PWD_LOGIN=True

#是否启用Kerberos认证
#默认值为False
ENABLE_KRB5_LOGIN=True

#是否启用Shibboleth认证
#默认值为False
ENABLE_SHIBBOLETH_LOGIN=True

#是否允许客户端使用外部浏览器进行单点登录(SSO)
#当为False时,使用内置浏览器进行SSO
#当为True时,使用操作系统的默认浏览器进行SSO
#使用系统浏览器的好处是可以支持硬件双因素认证(2FA)
#版本11.0.0及以上,sync客户端9.0.5,Drive客户端3.0.8及以上
CLIENT_SSO_VIA_LOCAL_BROWSER=True#默认值为False

#客户端SSOUUID的有效期(秒)
CLIENT_SSO_UUID_EXPIRATION=5*60
其他选项
#Seahub(SeafileWeb)的外部访问URL
#域名部分(如www.example.com)用于生成分享链接以及通过网页下载/上传文件
#注意:自9.0.0起,SERVICE_URL已移动到seahub_settings.py
#注意:自12.0起,SERVICE_URL已不再使用
#SERVICE_URL='https://seafile.example.com:'

#在系统管理->设置中禁用通过网页修改配置
#默认值为True
#自5.1.3起
ENABLE_SETTINGS_VIA_WEB=False

#时区设置,选项可参考:
#http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
#注意:不是所有操作系统都支持全部选项
#如果在Windows系统上运行,必须设置为系统的时区
TIME_ZONE='UTC'

#安装使用的语言代码,所有可选语言请参考:
#http://www.i18nguy.com/unicode/language-identifiers.html
#也用于发送邮件的默认语言
LANGUAGE_CODE='en'

#自定义语言选项
LANGUAGES=(
    ('en','English'),
    ('zh-cn','简体中文'),
    ('zh-tw','繁體中文'),
)

#网站或公司名称,用于邮件通知和用户首次登录的欢迎信息
SITE_NAME='Seafile'

#浏览器标签页标题
SITE_TITLE='PrivateSeafile'

#如果不想将Seahub运行在网站根路径,可设置为自定义路径
#例如:设置为'/seahub/',则访问路径为http://example.com/seahub/
SITE_ROOT='/'

#用户上传文件/文件夹时的最大数量
#自6.0.4版本起
MAX_NUMBER_OF_FILES_FOR_FILEUPLOAD=500

#控制发送邮件的语言,默认使用用户当前语言
#自6.1.1版本起
SHARE_LINK_EMAIL_LANGUAGE=''

#浏览器请求未读通知的间隔时间(秒)
#PRO6.1.4或CE6.1.2及以上
UNREAD_NOTIFICATIONS_REQUEST_INTERVAL=3*60

#是否允许用户在个人资料页面删除账号、更改登录密码或更新基本信息
#PRO6.3.10及以上
ENABLE_DELETE_ACCOUNT=False
ENABLE_UPDATE_USER_INFO=False
ENABLE_CHANGE_PASSWORD=False

#在个人资料页面获取WebAPI授权令牌
ENABLE_GET_AUTH_TOKEN_BY_SESSION=True

#自8.0.6CE/PRO版本起
#用户注销后重定向的URL,通常配置为单点注销(SingleLogout)URL
LOGOUT_REDIRECT_URL='http{s}://www.example-url.com'

#启用系统管理员添加使用条款(T&C),所有用户在使用前必须接受
#默认值为False
#自6.0版本起
ENABLE_TERMS_AND_CONDITIONS=True

#启用账户双因素认证(2FA),默认值为False
#自6.0版本起
ENABLE_TWO_FACTOR_AUTH=True

#用户创建库时选择模板
#选择模板后,Seafile会自动创建与模板相关的文件夹
#自6.0版本起
LIBRARY_TEMPLATES={
    'Technology':['/Develop/Python','/Test'],
    'Finance':['/Currentassets','/Fixedassets/Computer']
}

#是否允许用户在“设置”页面更改密码,默认值为True
#自6.2.11版本起
ENABLE_CHANGE_PASSWORD=True

#是否允许与SSO账户关联的用户在“设置”页面更改或重置本地密码,默认值为True
#设置为False则禁止SSO用户修改本地密码
ENABLE_SSO_USER_CHANGE_PASSWORD=True

#搜索用户时是否显示联系邮箱
ENABLE_SHOW_CONTACT_EMAIL_WHEN_SEARCH_USER=True

#指定头像存储到数据库(默认存储到本地seahub-data目录)
AVATAR_FILE_STORAGE='seahub.base.database_storage.DatabaseStorage'
专业版选项
#是否在用户个人资料弹出对话框中显示已使用流量。默认值为True
SHOW_TRAFFIC=True

#是否允许管理员通过系统管理中的“库”页面查看用户的未加密库文件
#默认值为False
ENABLE_SYS_ADMIN_VIEW_REPO=True

#对未登录用户,在分享链接页面下载或上传文件前要求提供邮箱
#自5.1.4版本起
ENABLE_SHARE_LINK_AUDIT=True

#上传文件到分享上传链接后是否进行病毒检查。默认值为False
#自6.0版本起
ENABLE_UPLOAD_LINK_VIRUS_CHECK=True

#当检测到病毒时,发送邮件通知以下邮箱
#列表中的邮箱可以是任意有效邮箱,不必是Seafile用户邮箱
#自6.0.8版本起
VIRUS_SCAN_NOTIFY_LIST=['user_a@seafile.com','user_b@seafile.com']
RESTful API
#API限流相关设置。如果在API调用过程中收到429响应码,可以增大限流速率
REST_FRAMEWORK={
    'DEFAULT_THROTTLE_RATES':{
        'ping':'600/minute',#ping请求每分钟最多600次
        'anon':'5/minute',#匿名用户每分钟最多5次请求
        'user':'300/minute',#已登录用户每分钟最多300次请求
    },
    'UNICODE_JSON':False,#是否以Unicode格式返回JSON
}

#限流白名单,用于对某些IP禁用限流
#例如:REST_FRAMEWORK_THROTTING_WHITELIST=['127.0.0.1','192.168.1.1']
#请确保在Nginx配置中正确设置`REMOTE_ADDR`头,参考:
#https://manual.seafile.com/13.0/setup_binary/ce/deploy_with_nginx.html
REST_FRAMEWORK_THROTTING_WHITELIST=[]
Seahub 定制功能
从 6.2 开始,您可以定义一个自定义函数来修改用户搜索功能的结果。
例如,如果您想限制用户只能搜索到处于同一机构的用户,您可以在 {seafile install path}/conf/seahub_custom_functions/__init__.py 中定义 custom_search_user 函数:
代码示例:
importos
importsys

current_path=os.path.dirname(os.path.abspath(__file__))
seahub_dir=os.path.join(current_path, \
        '../../seafile-server-latest/seahub/seahub')
sys.path.append(seahub_dir)

fromseahub.profile.modelsimportProfile
defcustom_search_user(request,emails):

    institution_name=''

    username=request.user.username
    profile=Profile.objects.get_profile_by_user(username)
    ifprofile:
        institution_name=profile.institution

    inst_users=[p.userforpin
            Profile.objects.filter(institution=institution_name)]

    filtered_emails=[]
    foremailinemails:
        ifemailininst_users:
            filtered_emails.append(email)

    returnfiltered_emails
注意,您不应该更改 custom_search_user 和 seahub_custom_functions/__init__.py 的名字。
企业版 6.2.5 开始,如果您在系统管理的设置页面上开启了ENABLE_SHARE_TO_ALL(允许用户将资料库共享给系统中的任何群组)功能,您还可以定义一个自定义函数来返回用户可以共享资料库的组。
例如,您希望用户可以将资料库共享给其所在的群组和test@test.com所在的群组,您可以在 {seafile install path}/conf/seahub_custom_functions/__init__.py 中定义 custom_get_groups 函数:
importos
importsys

current_path=os.path.dirname(os.path.abspath(__file__))
seaserv_dir=os.path.join(current_path, \
        '../../seafile-server-latest/seafile/lib64/python2.7/site-packages')
sys.path.append(seaserv_dir)

defcustom_get_groups(request):

    fromseaservimportccnet_api

    groups=[]
    username=request.user.username

    # for current user
    groups+=ccnet_api.get_groups(username)

    # for 'test@test.com' user
    groups+=ccnet_api.get_groups('test@test.com')

    returngroups
注意,您不应该更改 custom_get_groups 和 seahub_custom_functions/__init__.py 的名字。
注意
  • 请重启 Seahub 以使更改生效.
  • 如果更改没有生效,请删除 seahub_setting.pyc 缓存文件.
  • 如果需要在 seahub_settings.py 里添加中文注释,请把 # -*- coding: utf-8 -*- 写入文件第一行,并单独为一行。
dockercomposerestart