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-get install memcached libmemcached-dev -y
pip3 install --timeout=3600 pylibmc django-pylibmc

systemctl enable --now memcached
添加如下配置到seahub_settings.py:
            
                
                
#locationmemcached的地址,如果容器部署,默认会是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']

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

# CSRF Cookie 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

# 用户密码的最小长度
USER_PASSWORD_MIN_LENGTH = 6

# 密码强度等级,基于四种输入类型:
# 数字、大写字母、小写字母、其他符号
# '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

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

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

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

# 在旧版本中,如果使用单点登录(SSO),密码不会保存在 Seafile 中。
# 用户无法使用 WebDAV,因为 Seafile 无法验证密码是否正确。
# 6.3.8 版本起,可以启用此选项,让用户为 WebDAV 登录设置专用密码。
# 使用 SSO 登录的用户可以使用此密码登录 WebDAV
# 启用该功能。需先安装 pycryptodome
# sudo pip install pycryptodome==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-SHA2561000 次迭代)
#
# 目前支持两种哈希算法:
# - 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.8 pro 及以上支持 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
外部认证
            
                
                
# 是否启用 ADFSActive Directory 联合服务)认证
# 默认值为 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.5Drive 客户端 3.0.8 及以上
CLIENT_SSO_VIA_LOCAL_BROWSER = True # 默认值为 False

# 客户端 SSO UUID 的有效期(秒)
CLIENT_SSO_UUID_EXPIRATION = 5 * 60
其他选项
            
                
                
# SeahubSeafile Web)的外部访问 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 = 'Private Seafile'

# 如果不想将 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 = ''

# 浏览器请求未读通知的间隔时间(秒)
# PRO 6.1.4 CE 6.1.2 及以上
UNREAD_NOTIFICATIONS_REQUEST_INTERVAL = 3 * 60

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

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

# 8.0.6 CE/PRO 版本起
# 用户注销后重定向的 URL,通常配置为单点注销(Single LogoutURL
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': ['/Current assets', '/Fixed assets/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 函数:
代码示例:
            
                
                
import os
import sys

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)

from seahub.profile.models import Profile
def custom_search_user(request, emails):

    institution_name = ''

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

    inst_users = [p.user for p in
            Profile.objects.filter(institution=institution_name)]

    filtered_emails = []
    for email in emails:
        if email in inst_users:
            filtered_emails.append(email)

    return filtered_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 函数:
            
                
                
import os
import sys

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)

def custom_get_groups(request):

    from seaserv import ccnet_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')

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