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-ypip3install--timeout=3600pylibmcdjango-pylibmc
systemctlenable--nowmemcached添加如下配置到seahub_settings.py:
#location是memcached的地址,如果容器部署,默认会是memcachedCACHES={
'default':{
'BACKEND':'django_pylibmc.memcached.PyLibMCCache',
'LOCATION':'127.0.0.1:11211',
},}Redis
在 Seafile 11.0 版本中添加了对 Redis 的支持。
- 在你的操作系统中使用软件包安装程序安装 Redis。
安全设置
#出于安全考虑,请设置与主机/域相匹配#详细信息请参考ALLOWED_HOSTS=['.myseafile.com']
#是否对CSRFcookie使用安全cookie。#https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-cookie-secureCSRF_COOKIE_SECURE=True
#CSRFCookie的SameSite属性值#https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-cookie-samesiteCSRF_COOKIE_SAMESITE='Strict'
#https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-trusted-originsCSRF_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
#登录时“记住我”的天数。默认值为7LOGIN_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新增,默认值为TrueFORCE_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.0CEENABLE_WIKI=True
#在旧版本中,如果使用单点登录(SSO),密码不会保存在Seafile中。#用户无法使用WebDAV,因为Seafile无法验证密码是否正确。#自6.3.8版本起,可以启用此选项,让用户为WebDAV登录设置专用密码。#使用SSO登录的用户可以使用此密码登录WebDAV。#启用该功能。需先安装pycryptodome。#sudopipinstallpycryptodome==3.12.0ENABLE_WEBDAV_SECRET=TrueWEBDAV_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-workENCRYPTED_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及以上)#用户可在分享链接页面举报滥用,填写举报类型、联系方式和描述#默认值为FalseENABLE_SHARE_LINK_REPORT_ABUSE=True在线文件查看设置
#在线预览文件的最大大小,默认30MFILE_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认证#默认值为FalseENABLE_KRB5_LOGIN=True
#是否启用Shibboleth认证#默认值为FalseENABLE_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=FalseENABLE_UPDATE_USER_INFO=FalseENABLE_CHANGE_PASSWORD=False
#在个人资料页面获取WebAPI授权令牌ENABLE_GET_AUTH_TOKEN_BY_SESSION=True
#自8.0.6CE/PRO版本起#用户注销后重定向的URL,通常配置为单点注销(SingleLogout)URLLOGOUT_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'专业版选项
#是否在用户个人资料弹出对话框中显示已使用流量。默认值为TrueSHOW_TRAFFIC=True
#是否允许管理员通过系统管理中的“库”页面查看用户的未加密库文件#默认值为FalseENABLE_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.htmlREST_FRAMEWORK_THROTTING_WHITELIST=[]Seahub 定制功能
从 6.2 开始,您可以定义一个自定义函数来修改用户搜索功能的结果。
例如,如果您想限制用户只能搜索到处于同一机构的用户,您可以在 {seafile install path}/conf/seahub_custom_functions/__init__.py 中定义 custom_search_user 函数:
代码示例:
importosimportsys
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.modelsimportProfiledefcustom_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 函数:
importosimportsys
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