Seahub 配置

提示:您还可以通过Web界面修改多数配置项。这些配置项会被保存在数据库表(seahub_db/constance_config)中。他们的优先级高于配置文件中的项目。如果要禁用Web界面设置,可以添加 ENABLE_SETTINGS_VIA_WEB = Falseseahub_settings.py

Seahub 下发送邮件提醒

请参看 发送邮件提醒

Memcached

Seahub 默认缓存文件系统上的缓存项(avatars,profiles,等)到(/tmp/seahub_cache)。您可以用Memcached替换。

请参考 "添加Memcached"

用户管理选项

以下选项影响用户注册,密码和 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
# 如果登录密码输错次数超过 ``LOGIN_ATTEMPT_LIMIT``,冻结账号
# since 5.1.2
FREEZE_USER_ON_LOGIN_FAILED = False
# 用户密码最少长度
USER_PASSWORD_MIN_LENGTH = 6
# 检查用户密码的复杂性
USER_STRONG_PASSWORD_REQUIRED = False
# 用户密码复杂性:
# 数字, 大写字母, 小写字母, 其他符号
# '3' 表示至少包含以上四种类型中的 3 个
USER_PASSWORD_STRENGTH_LEVEL = 3
# 管理员添加/重置用户后,强制用户修改登录密码
# 在版本 5.1.1 加入, 默认开启
FORCE_PASSWORD_CHANGE = True
# cookie 的保存时限,(默认为 2 周).
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2
# 浏览器关闭后,是否清空用户会话 cookie
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
# 是否存储每次请求的会话数据. 默认为 `False`
SESSION_SAVE_EVERY_REQUEST = False
# 是否开启个人wiki和群组wiki。默认是 `False`
# Since 6.1.0
ENABLE_WIKI = True
# 是否开启个人设置的重置密码选项。默认是`True`
ENABLE_CHANGE_PASSWORD = True

资料库设置

# 加密资料库密码最小长度
REPO_PASSWORD_MIN_LENGTH = 8
#是否开启加密资料库(默认开启)
ENABLE_ENCRYPTED_LIBRARY = True
# 重置加密资料库密码
# 说明1:此功能需要为 Seafile 配置邮件服务。
# 说明2:此功能开启后,只对用户输入过密码的加密资料库有效。
# 说明3: Seafile 专业版才有此功能。
# 说明4: 该功能只支持浏览器操作的加密资料库密码重置
ENABLE_RESET_ENCRYPTED_REPO_PASSWORD = True
# 生成外链时,是否强制使用密码 (since version 8.0.9)
SHARE_LINK_FORCE_USE_PASSWORD = False
# 加密外链密码最小长度
SHARE_LINK_PASSWORD_MIN_LENGTH = 8
# 外链密码强度,3 表示大写字母、小写字母、数字、其他字符至少包含三项。(since version 8.0.9)
SHARE_LINK_PASSWORD_STRENGTH_LEVEL = 3
# 共享外链的默认过期时长/天 (since version 6.3.8)
# 如果生成外链的时候没有设置过期值,那么就会使用这里配置的值。
# 配置了这个值后,用户不能再生成没有过期时间的外链。
SHARE_LINK_EXPIRE_DAYS_DEFAULT = 5
# 共享外链的最小过期时长 (since version 6.3.6)
# SHARE_LINK_EXPIRE_DAYS_MIN 应该小于 SHARE_LINK_EXPIRE_DAYS_DEFAULT (如果后者设置)
SHARE_LINK_EXPIRE_DAYS_MIN = 3 # 默认是 0, 没有限制.
# 共享外链的最大过期时长 (since version 6.3.6)
# SHARE_LINK_EXPIRE_DAYS_MIN 应该大于 SHARE_LINK_EXPIRE_DAYS_DEFAULT (如果后者设置)
SHARE_LINK_EXPIRE_DAYS_MAX = 8 # 默认是 0, 没有限制.
# 上传外链的默认过期时长/天 (since version 7.1.6)
# 如果生成外链的时候没有设置过期值,那么就会使用这里配置的值。
# 配置了这个值后,用户不能再生成没有过期时间的外链。
UPLOAD_LINK_EXPIRE_DAYS_DEFAULT = 5
# 上传外链的最小过期时长 (since version 7.1.6)
# UPLOAD_LINK_EXPIRE_DAYS_MIN 应该小于 UPLOAD_LINK_EXPIRE_DAYS_DEFAULT (如果后者设置)
UPLOAD_LINK_EXPIRE_DAYS_MIN = 3 # 默认是 0, 没有限制.
# 上传外链的最大过期时长 (since version 7,1.6)
# UPLOAD_LINK_EXPIRE_DAYS_MAX 应该大于 UPLOAD_LINK_EXPIRE_DAYS_DEFAULT (如果后者设置)
UPLOAD_LINK_EXPIRE_DAYS_MAX = 8 # 默认是 0, 没有限制.
# 查看文件或目录的共享外链时是否强制用户登录 (since version 6.3.6)
SHARE_LINK_LOGIN_REQUIRED = True
# 在线编辑(预览)文件时,是否开启水印功能 (since version 6.3.6)
ENABLE_WATERMARK = True
# 关闭与任意目录同步的功能
DISABLE_SYNC_WITH_ANY_FOLDER = True
# 允许用户设置资料库的历史保留天数
ENABLE_REPO_HISTORY_SETTING = True
# 开启该选项,将允许用户给资料库镜像加标签,默认关闭
# Since version 6.2.0
ENABLE_REPO_SNAPSHOT_LABEL = True
# 是否允许普通用户创建组织资料库
# Since version 5.0.5
ENABLE_USER_CREATE_ORG_REPO = True
# 是否允许用户清空回收站 (default True)
# Since version 6.3.6
ENABLE_USER_CLEAN_TRASH = True
# 在外链下载界面添加一个 “举报” 按钮 (Since 7.1.0)
# 用户可在外链页面进行举报,并填写举报类型、联系方式、说明(可选)。
# 默认为 False
ENABLE_SHARE_LINK_REPORT_ABUSE = True

在线文件查看设置

# 是否使用 pdf.js 来在线查看文件. 默认为 `True`
USE_PDFJS = True
# 在线预览的文件大小上限,默认为 30M.
FILE_PREVIEW_MAX_SIZE = 30 * 1024 * 1024
# 可预览文件的文件类型扩展名
# 注意:Since version 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"""
# 开启 thumbnails 功能
# 注意: since version 4.0.2
ENABLE_THUMBNAIL = True
# Seafile只针对小于以下尺寸的图片生成缩略图
# 企业版 6.3.8 之后,也支持在线预览 psd 文件,同样该选项可以限制 psd 文件在线预览的大小
THUMBNAIL_IMAGE_SIZE_LIMIT = 30 # MB
# 文件缩略图的存储位置
THUMBNAIL_ROOT = '/haiwen/seahub-data/thumbnail/thumb/'
# 图片预览的默认大小。放大这个尺寸可以提高预览的质量。
# 注意: since version 6.1.1
THUMBNAIL_SIZE_FOR_ORIGINAL = 1024

Cloud 模式

如果您打算对外提供公共的云盘服务,您应该启用 Cloud 模式。它禁用了seafile 上的"公共"标签,以确保用户不能创建全局的所有人都能访问的资料库。通过全局通讯录一个用户可以搜索其他用户账号,在云服务模式下您也需要它。

# 启用cloud模式并隐藏"公共"标签。
CLOUD_MODE = True
# 禁用全局通讯录
ENABLE_GLOBAL_ADDRESSBOOK = False
# 邀请链接过期时间
INVITATIONS_TOKEN_AGE = 72 # 小时

外部认证

# 使用 ADFS 认证登录
# Default is False
# Since 6.0.9
ENABLE_ADFS_LOGIN = True
# 使用 Kerberos 认证登录
# Default is False
ENABLE_KRB5_LOGIN = True

其他选项

# Seahub (Seafile Web) 外部 URL,如果该值没有设对,会影响文件的上传下载。
# 注意: 外部 URL 意味着"如果你使用 Nginx, 请使用 Nginx 对外的 URL"
# Since 9.0.0
SERVICE_URL=http://www.example.com
# 开启Web页面上的 “系统管理 -> 设置” ,允许管理员在web页面上进行某些设置
# Default is True
# Since 5.1.3
ENABLE_SETTINGS_VIA_WEB = False
# Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'UTC'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
# Default language for sending emails.
LANGUAGE_CODE = 'en'
# Set this to your website/company's name. This is contained in email notifications and welcome message when user login for the first time.
SITE_NAME = 'Seafile'
# Browser tab's title
SITE_TITLE = 'Private Seafile'
# 如果您不打算让seahub站点运行在网站的根路径上,可以设置站点路径
# e.g. 设置为 '/seahub/',网站将运行在 http://example.com/seahub/.
SITE_ROOT = '/'
# 用户上传文件/文件夹时的最大文件数
# Since version 6.0.4
MAX_NUMBER_OF_FILES_FOR_FILEUPLOAD = 500
# 控制发送电子邮件的语言。默认为Seafile系统用户当前的语言。
# Since version 6.1.1
SHARE_LINK_EMAIL_LANGUAGE = ''
# Interval for browser requests unread notifications
# Since PRO 6.1.4 or CE 6.1.2
UNREAD_NOTIFICATIONS_REQUEST_INTERVAL = 3 * 60 # seconds
# 是否允许用户通过个人信息页面删除账号、更改登录密码或更新用户基本信息
# 从专业版 6.3.10 开始
ENABLE_DELETE_ACCOUNT = False
ENABLE_UPDATE_USER_INFO = False
ENABLE_CHANGE_PASSWORD = False
# Web 界面共享资料库(目录)搜索用户时,是否显示用户邮箱
ENABLE_SHOW_CONTACT_EMAIL_WHEN_SEARCH_USER = True
# 是否允许用户在个人设置(user profile)页面获取 web api auth token
ENABLE_GET_AUTH_TOKEN_BY_SESSION = False
# 从 6.3.8 版本开始, 开启此选项后,用户可以设置 WebDav 密码,通过此密码通过 SSO 登录到 WebDav。
# 需要额外安装以下依赖
# sudo pip install pycryptodome==3.12.0
ENABLE_WEBDAV_SECRET = True
WEBDAV_SECRET_MIN_LENGTH = 8
# 用户密码复杂性:
# 数字, 大写字母, 小写字母, 其他符号
# '3' 表示至少包含以上四种类型中的 3 个
WEBDAV_SECRET_STRENGTH_LEVEL = 1
# 使用 Excel 文件导入群组用户时,可附加说明 Excel 内容格式等。
GROUP_IMPORT_MEMBERS_EXTRA_MSG = "下载示例文件后,更新示例文件内容为需要导入的用户,格式为:工号@seafile-domain-example.com"

专业版选项

# 是否在用户头像的弹出对话框中显示所使用的流量。 Default is True
SHOW_TRAFFIC = True
# 允许管理员可以查看未加密资料库中的用户文件。
# 通过访问“系统管理”界面的“资料库”页面。 Default is False.
ENABLE_SYS_ADMIN_VIEW_REPO = True
# 对于非登录用户,要求在访问下载或上传共享链接页面之前提供电子邮件。
# Since version 5.1.4
ENABLE_SHARE_LINK_AUDIT = True
# 允许管理员设置条款, 所有用户在使用前都需要接受这个条款。 Defaults to `False`.
# Since version 6.0
ENABLE_TERMS_AND_CONDITIONS = True
# 开启“两步认证”功能。 Defaults to `False`.
# Since version 6.0
ENABLE_TWO_FACTOR_AUTH = True
# 当用户创建资料库时,允许用户选择一个模板。
# 当用户选择一个模板时,Seafile将根据模板自动创建文件夹。
# Since version 6.0
LIBRARY_TEMPLATES = {
    'Technology': ['/Develop/Python', '/Test'],
    'Finance': ['/Current assets', '/Fixed assets/Computer']
}
# 当检测到病毒时,将电子邮件发送到这些邮箱地址。
# 这个列表可以是任何有效的电子邮件地址,不一定是Seafile用户的电子邮箱。
# Since version 6.0.8
VIRUS_SCAN_NOTIFY_LIST = ['user_a@seafile.com', 'user_b@seafile.com']

RESTful API

# API throttling 相关配置。如果api的返回码为429,可以调高下面的数值。
REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_RATES': {
        'ping': '600/minute',
        'anon': '5/minute',
        'user': '300/minute',
    },
    'UNICODE_JSON': False,
}
# Throtting 白名单,用来忽略特定IP。
# e.g. REST_FRAMEWORK_THROTTING_WHITELIST = ['127.0.0.1', '192.168.1.1']
# 请确保 `REMOTE_ADDR` 头部在 Nginx 配置了,具体参考 https://manual.seafile.com/deploy/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_userseahub_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_groupsseahub_custom_functions/__init__.py 的名字。

注意

./seahub.sh restart

Last modified by Daniel Pan, 2024-03-30

Seahub 下发送邮件提醒
Memcached
用户管理选项
资料库设置
在线文件查看设置
Cloud 模式
外部认证
其他选项
专业版选项
RESTful API
Seahub 定制功能
注意