这些说明提供了有关指定版本的更改,其他信息请始终遵循升级指南。
对于 Docker 版本升级,请参考 Docker Seafile 升级
以前的 Seafile 版本直接使用用户的电子邮件地址或 SSO 身份作为其内部用户 ID。
Seafile 11.0 引入了虚拟用户 ID - 随机的内部标识符,如“adc023e7232240fcbb83b273e1d73d36@auth.local”,对于新用户,将生成一个虚拟 ID,而不是直接使用他们的电子邮件,电子邮件和虚拟 ID 之间的映射将存储在“profile_profile”数据库表中。对于 SSO 用户,SSO ID 和虚拟 ID 之间的映射存储在“social_auth_usersocialauth”表中。
总体而言,这为处理用户帐户和身份更改带来了更大的灵活性,现有用户将使用相同的旧 ID。
以前的 Seafile 版本处理 ccnet 服务器组件中的 LDAP 身份验证,在Seafile 11.0中,LDAP在Seahub Python代码库中重新实现。
LDAP 配置已从 ccnet.conf 移至 seahub_settings.py,“ccnet_db.LDAPImported‘’ 表不再使用-LDAP用户现在与其他用户一起存储在 ‘’ccnet_db.EmailUsers‘’ 表中。
此新实施的好处:
改进了不同系统之间的兼容性,Python 代码比以前的 C 实现更具可移植性。
无论用户是通过LDAP还是电子邮件/密码等其他方法登录,都能一致地处理用户。
升级脚本将把 “ccnet_db.LDAPImported“表合并到 “ccnet_db.EmailUsers‘’表中,需要手动更改设置文件。
如果使用 OAuth 身份验证,则需要稍微更改配置。
如果您使用 SAML,则无需更改配置文件。
Seafile 11.0 弃用 SQLite 作为数据库,推动这一变化的原因有几个:
专注于协作功能 - SQLite 的限制使得高级并发和锁定变得困难,这是协作编辑所需要的,不同的 Seafile 组件需要同时访问数据库。
Docker 部署 - 我们的官方 Docker 镜像不支持 SQLite,MySQL是首选选项。
迁移困难 - 通过SQL转换将SQLite数据库迁移到MySQL是不可靠的。
要从SQLite数据库迁移到MySQL数据库,您可以按照文档迁移:从SQLite迁移到MySQL
Elasticsearch 版本在 Seafile 版本 11.0 中未更改
请注意,您应该使用 root 用户或者 sudo 命令在系统范围内来安装 Python 依赖。
sudo pip3 install future==0.18.* mysqlclient==2.1.* pillow==9.3.* sqlalchemy==2.0.18 captcha==0.4 django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1
upgrade/upgrade_10.0_11.0.sh
LDAP 登录和 LDAP 同步任务的配置项从 ccnet.conf 迁移到seahub_settings.py,配置项的名称基于 10.0 版本,并添加字符“LDAP_”或“MULTI_LDAP_1”,示例如下:
# 基础配置,LDAP登录以及LDAP定时同步任务共同使用这些配置。如果要支持多 LDAP,将配置项中的'LDAP'替换为'MULTI_LDAP_1',再追加到配置文件中,例如:将 MULTI_LDAP_1_SERVER_URL,MULTI_LDAP_1_BASE_DN 等添加到配置文件中。
ENABLE_LDAP = True
LDAP_SERVER_URL = 'ldap://192.168.0.125' # LDAP 服务器的地址 URL
LDAP_BASE_DN = 'ou=test,dc=seafile,dc=ren' # LDAP 服务器中可以登陆Seafile的用户的根节点
LDAP_ADMIN_DN = 'administrator@seafile.ren' # 用于查询 LDAP 服务器中信息的管理员的 DN
LDAP_ADMIN_PASSWORD = 'Hello@123' # LDAP_ADMIN_DN 对应的用户的密码
LDAP_PROVIDER = 'ldap' # 标识用户的来源,默认为 'ldap'
LDAP_LOGIN_ATTR = 'userPrincipalName' # 用于登录 Seafile 的用户属性,可以为mail或userPrincipalName
LDAP_FILTER = 'memberOf=CN=testgroup,OU=test,DC=seafile,DC=ren' # 额外的过滤条件,符合过滤条件的用户可以登陆,否则无法登陆
# 通用的用户信息同步配置项,多个 LDAP 可共同使用
LDAP_USER_FIRST_NAME_ATTR = 'givenName' # 用于同步用户的name
LDAP_USER_LAST_NAME_ATTR = 'sn' # 用于同步用户的name
LDAP_USER_NAME_REVERSE = False # 用于同步用户的name
IMPORT_NEW_USER = True # 同步用户信息时,是否导入新用户
ACTIVATE_USER_WHEN_IMPORT = False # 导入新用户时,是否激活用户
ENABLE_EXTRA_USER_INFO_SYNC = True # 是否同步 login_id、contact_email 等用户信息
# LDAP定时同步任务的周期,单位为分钟
LDAP_SYNC_INTERVAL = 60
# LDAP定时同步用户的配置项。如果要支持多 LDAP,将配置项中的'LDAP'替换为'MULTI_LDAP_1',再追加到配置文件中,例如:将 ENABLE_MULTI_LDAP_1_USER_SYNC,MULTI_LDAP_1_USER_OBJECT_CLASS 等添加到配置文件中。
ENABLE_LDAP_USER_SYNC = True # 是否允许同步用户
LDAP_USER_OBJECT_CLASS = 'person' # 用户对象的 class 名字
LDAP_DEPT_ATTR = '' # LDAP 用户的部门属性
LDAP_UID_ATTR = '' # LDAP 用户的 login_id 属性
LDAP_CONTACT_EMAIL_ATTR = '' # LDAP 用户的 contact_email 属性
LDAP_USER_ROLE_ATTR = '' # LDAP 用户的角色属性
LDAP_AUTO_REACTIVATE_USERS = True # 是否自动激活已禁用的用户
LDAP_USE_PAGED_RESULT = False # 是否使用结果分页扩展,LDAP 协议 v3 支持一个称为 "paged results" 的扩展功能。当您在 LDAP 中有大量用户的时候,这个选项能够大大提高列出用户的速度。而且,AD 限制了单次请求中返回的用户条目数量,您需要启用这个选项才能避免查询错误。
# 通用的用户同步配置项,多个LDAP可共同使用
DEACTIVE_USER_IF_NOTFOUND = False # 同步时,是否删除LDAP中不存在的用户
# LDAP定时同步群组的配置项。
# 如果要支持多 LDAP,将配置项中的'LDAP'替换为'MULTI_LDAP_1',再追加到配置文件中,例如ENABLE_MULTI_LDAP_1_GROUP_SYNC,MULTI_LDAP_1_GROUP_OBJECT_CLASS 等添加到配置文件中。
ENABLE_LDAP_GROUP_SYNC = True # 是否允许同步群组
LDAP_GROUP_FILTER = '' # 群组同步过滤条件
LDAP_SYNC_DEPARTMENT_FROM_OU = True # 是否同步OU为Seafile部门
LDAP_GROUP_OBJECT_CLASS = 'group' # 群组对象的 class 名字
LDAP_GROUP_MEMBER_ATTR = 'member' # 在加载组的成员时使用的属性字段
LDAP_USER_ATTR_IN_MEMBERUID = 'uid' # LDAP_GROUP_MEMBER_ATTR 选项中的用户属性集
LDAP_GROUP_UUID_ATTR = 'objectGUID' # 用于唯一识别 LDAP 中的群组
LDAP_USE_GROUP_MEMBER_RANGE_QUERY = False # 当一个组包含太多成员时,AD将只返回其中的一部分。将此选项设置为 TRUE 可使 LDAP 同步适用于大型组。
LDAP_SYNC_GROUP_AS_DEPARTMENT = False # 是否将群组同步为Seafile中的顶级部门
LDAP_DEPT_NAME_ATTR = '' # 用以同步部门名称的属性
LDAP_CREATE_DEPARTMENT_LIBRARY = False # 将群组同步为顶级部门时,是否自动创建带有群组名称的部门资料库
LDAP_DEPT_REPO_PERM = 'rw' # 设置部门资料库的权限,默认权限为'rw'
LDAP_DEFAULT_DEPARTMENT_QUOTA = -2 # 为部门设置空间配额(单位为MB),默认为无限制
# 通用的群组同步配置项,多个LDAP可共同使用
DEL_GROUP_IF_NOT_FOUND = False # 同步时,是否删除LDAP中不存在的群组
DEL_DEPARTMENT_IF_NOT_FOUND = False # 同步时,是否删除LDAP中不存在的部门
数据迁移
11.0 版本开始不再使用 LDAPUsers 表,需要将该表中已有的用户迁移到 EmailUser 表中,迁移命令:
python3 migrate_ldapusers.py
新版本中,OAuth 登录配置项要保持 email 属性的配置不变,以兼容新旧用户登录。新版本新增一个 uid 属性,如果 OAuth 系统没有 uid 或类似的属性,则保持原来的配置即可,示例如下:
# 旧版本
OAUTH_ATTRIBUTE_MAP = {
"id": (True, "email"),
"name": (False, "name"),
"email": (False, "contact_email"),
}
# 新版本, 如果没有uid属性,则不配置,不影响新旧用户的登录
OAUTH_ATTRIBUTE_MAP = {
"id": (True, "email"), # 新版本中要保持 email 属性配置不变,以兼容新旧用户登录
"uid": (True, "uid"), # Seafile使用uid作为用户的唯一标识符, 不同的 OAuth 系统对应的属性不同, 可能是: uid或username等
"name": (False, "name"),
"email": (False, "contact_email"),
}
其它配置项没有额外变化。
Last modified by 马宇航, 2024-08-23