从 Seafile 13 开始,有两种方法可以为 Seafile 服务器配置 S3 存储(单个 S3 存储后端)
- 环境变量(从 Seafile 13 开始推荐)
- 配置文件 (seafile.conf)
使用环境变量设置 (13.0)
从 Seafile 13 开始,将支持从环境变量配置 S3,并将提供更方便的方式。这部分的详细说明可以参考.env文件的介绍。
- Seafile 准备至少 3 个桶(S3_COMMIT_BUCKET、S3_FS_BUCKET 和 S3_BLOCK_BUCKET)。
- 将SEAF_SERVER_STORAGE_TYPE设置为 true
- 下表填写 .env 中相应的变量值:
变量名
描述
默认值
S3_COMMIT_BUCKET
S3 存储后端commit对象存储桶
SEAF_SERVER_STORAGE_TYPE=s3时必填
S3_FS_BUCKET
S3 存储后端fs对象存储桶
SEAF_SERVER_STORAGE_TYPE=s3时必填
S3_BLOCK_BUCKET
S3 存储后端block对象存储桶
SEAF_SERVER_STORAGE_TYPE=s3时必填
S3_KEY_ID
S3 存储后端密钥 ID
SEAF_SERVER_STORAGE_TYPE=s3时必填
S3_SECRET_KEY
S3 存储后端密钥
SEAF_SERVER_STORAGE_TYPE=s3时必填
S3_AWS_REGION
存储桶的区域
us-east-1(默认值)
S3_HOST
存储桶的主机地址
(不使用 AWS 时必填)
S3_USE_HTTPS
使用与 S3 的 HTTPS 连接(如果已启用)
true
S3_USE_V4_SIGNATURE
如果启用,使用 S3 的 v4 协议
true
S3_PATH_STYLE_REQUEST
此选项要求 Seafile 使用 URL
https://192.168.1.123:8080/bucketname/object 访问对象。在Amazon S3,默认 URL 格式为虚拟主机样式,例如https://bucketname.s3.amazonaws.com/object。但这种风格依赖于高级 DNS 服务器设置。因此,大多数自托管存储系统仅实现路径样式格式。
false
S3_SSE_C_KEY
openssl rand -base64 24 可以生成一串 32 个字符。它可以是任何 32 个字符长的随机字符串。如果启用 SSE-C,则需要使用 V4 身份验证协议和 https。
空
无论您使用的是 AWS 还是任何其他 S3 兼容对象存储,我们都建议您遵循S3 命名规则。在 S3 上创建存储桶时,请先阅读S3 命名规则。注意,特别是不要在存储桶的名称中使用大写字母(不要使用驼峰式命名,例如 MyCommitObjects)。
#推荐命名方式
seafile-commit-object
seafile-fs-object
seafile-block-object
S3_SSE_C_KEY是一个包含 32 个字符的字符串。您可以使用以下命令生成 sse_c_key。请注意,密钥不必进行 base64 编码。它可以是任何 32 个字符长的随机字符串。该示例仅显示了生成此类键的一种可能方法。
opensslrand-base6424但是,如果您的 S3 存储桶中有现有数据,则打开上述配置将使您的数据无法访问。这是因为 Seafile 服务器不支持在同一存储桶中混合加密和非加密对象。您必须创建一个新存储桶,并按照存储后端迁移将数据迁移到该存储桶中。
除了 Seafile 服务器之外,以下扩展(如果已安装)将与 Seafile 服务器共享.env中的相同 S3 授权信息:
SeaSearch:通过指定 SS_STORAGE_TYPE=s3 和 S3_SS_BUCKET 来启用该功能
元数据服务器:通过指定 MD_STORAGE_TYPE=s3 和 S3_MD_BUCKET 来启用该功能。
#AWSSEAF_SERVER_STORAGE_TYPE=s3S3_COMMIT_BUCKET=my-commit-objectsS3_FS_BUCKET=my-fs-objectsS3_BLOCK_BUCKET=my-block-objectsS3_KEY_ID=your-key-idS3_SECRET_KEY=your-secret-keyS3_USE_V4_SIGNATURE=trueS3_PATH_STYLE_REQUEST=falseS3_AWS_REGION=eu-central-1S3_HOST=S3_USE_HTTPS=true#第三方共有云SEAF_SERVER_STORAGE_TYPE=s3S3_COMMIT_BUCKET=my-commit-objectsS3_FS_BUCKET=my-fs-objectsS3_BLOCK_BUCKET=my-block-objectsS3_KEY_ID=your-key-idS3_SECRET_KEY=your-secret-keyS3_USE_V4_SIGNATURE=trueS3_PATH_STYLE_REQUEST=trueS3_AWS_REGION=eu-central-1#willbeignoredwhenS3_HOSTisspecifiedS3_HOST=<accessendpointforstorageprovider>S3_USE_HTTPS=true
#私有部署SEAF_SERVER_STORAGE_TYPE=s3S3_COMMIT_BUCKET=my-commit-objectsS3_FS_BUCKET=my-fs-objectsS3_BLOCK_BUCKET=my-block-objectsS3_KEY_ID=your-key-idS3_SECRET_KEY=your-secret-keyS3_USE_V4_SIGNATURE=trueS3_PATH_STYLE_REQUEST=trueS3_AWS_REGION=eu-central-1#willbeignoredwhenS3_HOSTisspecifiedS3_HOST=<yours3apiendpointhost>:<yours3apiendpointport>S3_USE_HTTPS=true#accordingtoyourS3configuration使用配置文件进行设置(兼容12.0及之前版本)
Amazom S3
AWS S3 是最初的 S3 存储提供商。
编辑 seafile.conf 文件
[commit_object_backend]name = s3bucket = my-commit-objectskey_id = your-key-idkey = your-secret-keyuse_v4_signature = trueaws_region = eu-central-1[fs_object_backend]name = s3bucket = my-fs-objectskey_id = your-key-idkey = your-secret-keyuse_v4_signature = trueaws_region = eu-central-1[block_backend]name = s3bucket = my-block-objectskey_id = your-key-idkey = your-secret-keyuse_v4_signature = trueaws_region = eu-central-1各配置项释义如下:
- bucket:需要为commit、fs和block对象创建单独的桶,当您在 S3 上创建 buckets 时,请先阅读 S3 bucket 命名规则。注意, 尤其不要在 bucket 的名字中使用大写字母(不要使用骆驼式命名法,比如 MyCommitOjbects)。
- key_id 和 key: key_id 和 key 用来提供 S3 的身份认证。您可以在您的 AWS 账户页面的"安全证书"段找到 key_id 和 key。
- use_v4_signature:有两种版本的身份验证协议可用于S3存储。版本2是较旧的版本,一些区域可能仍支持它;版本4是Amazon S3当前使用的版本,并得到大多数区域的支持。如果不设置此选项,Seafile将使用v2协议,建议使用v4协议。
- aws_region:如果使用v4协议,请将此选项设置为创建桶时选择的区域。如果没有设置,并且您使用的是v4协议,Seafile将使用us-east-1作为默认值。如果您使用v2协议,此选项将被忽略。
如果您使用的S3是中国区,还需要在每个bucket配置段下添加相应地区的host配置,例如中国北京区:
host = s3.cn-north-1.amazonaws.com.cn使用用户提供的密钥进行服务器端加密 (SSE-C)
从 Pro 11.0 开始,您可以将 SSE-C 用于 S3。在 seafile.conf 中添加以下选项:
[commit_object_backend]name = s3......use_v4_signature = trueuse_https = truesse_c_key = XiqMSf3x5ja4LRibBbV0sVntVpdHXl3P[fs_object_backend]name = s3......use_v4_signature = trueuse_https = truesse_c_key = XiqMSf3x5ja4LRibBbV0sVntVpdHXl3P[block_backend]name = s3......use_v4_signature = trueuse_https = truesse_c_key = XiqMSf3x5ja4LRibBbV0sVntVpdHXl3Pssk_c_key 是一个 32 字节的随机字符串。
第三方公有云服务
国内市场上还有其他与S3兼容的云存储提供商,如阿里云、腾讯云和华为云。以下是相关配置:
编辑 seafile.conf 文件
[commit_object_backend]name = s3bucket = my-commit-objectshost = <access endpoint for storage provider>key_id = your-key-idkey = your-secret-key#v2 authentication protocol will be used if not setuse_v4_signature = true#required for v4 protocol. ignored for v2 protocolaws_region = <region name for storage provider>[fs_object_backend]name = s3bucket = my-fs-objectshost = <access endpoint for storage provider>key_id = your-key-idkey = your-secret-keyuse_v4_signature = trueaws_region = <region name for storage provider>[block_backend]name = s3bucket = my-block-objectshost = <access endpoint for storage provider>key_id = your-key-idkey = your-secret-keyuse_v4_signature = trueaws_region = <region name for storage provider>配置项释义:
- host:访问存储服务的端点。通常以地区名称开头。必须提供主机地址,否则Seafile将使用AWS的地址。
- bucket:需要为commit、fs和block对象创建单独的桶。
- key_id 和 key: key_id 和 key 用来提供 S3 的身份认证。
- use_v4_signature:有两种版本的身份验证协议可用于S3存储。版本2是较旧的版本,一些服务商可能仍支持它;版本4是Amazon S3当前使用的版本,并得到大多数服务商的支持。如果不设置此选项,Seafile将使用v2协议,建议使用v4协议。
- aws_region:如果使用v4协议,请将此选项设置为创建桶时选择的区域。如果没有设置,并且您使用的是v4协议,Seafile将使用us-east-1作为默认值。如果您使用v2协议,此选项将被忽略。
私有部署的 S3 存储
许多私有部署的对象存储系统现在都兼容 S3 API,例如 OpenStack Swift 和 Ceph 的 RADOS Gateway。你可以使用这些兼容 S3 的存储系统作为 Seafile 的后端。下面是一个配置示例:
[commit_object_backend]name = s3bucket = my-commit-objectskey_id = your-key-idkey = your-secret-keyhost = 192.168.1.123:8080path_style_request = true[fs_object_backend]name = s3bucket = my-fs-objectskey_id = your-key-idkey = your-secret-keyhost = 192.168.1.123:8080path_style_request = true[block_backend]name = s3bucket = my-block-objectskey_id = your-key-idkey = your-secret-keyhost = 192.168.1.123:8080path_style_request = true[memcached]memcached_options = --SERVER=localhost --POOL-MIN=10 --POOL-MAX=100配置项释义:
- host:它是 S3 兼容服务的地址和端口。不能在 host 选项前添加 "http "或 "https"。默认情况下,它将使用 http 连接。如果要使用 https 连接,请设置 use_https = true 选项。
- bucket:需要为commit、fs和block对象创建单独的桶。
- key_id 和 key: key_id 和 key 用来提供 S3 的身份认证。
- path_style_request 要求 Seafile 使用类似 https://192.168.1.123:8080/bucketname/object 的 URL 来访问对象。在亚马逊 S3 中,默认的 URL 格式是虚拟主机样式,如https://bucketname.s3.amazonaws.com/object。但这种方式依赖于高级 DNS 服务器设置。因此,大多数兼容 S3 的存储系统只实现了路径样式格式。
以下是上面示例配置中未显示的几个选项:
- use_v4_signature:有两种版本的身份验证协议可用于S3存储。版本2是大多数私有部署存储支持的协议;版本4是AWS S3当前使用的协议,但某些私有部署存储可能不支持。如果不设置此选项,Seafile将使用v2协议。我们建议先使用V2,如果它不起作用,请尝试V4。
- aws_region:如果使用v4协议,请将此选项设置为创建桶时选择的区域。如果没有设置,并且您使用的是v4协议,Seafile将使用us-east-1作为默认值。如果您使用v2协议,此选项将被忽略。
使用HTTPS连接到S3
要使用 HTTPS 连接到 S3,请在 seafile.conf 中添加以下选项:
[commit_object_backend]name = s3......use_https = true[fs_object_backend]name = s3......use_https = true[block_backend]name = s3......use_https = true因为服务器软件包是基于CentOS 6构建的,所以如果您使用的是Debian / Ubuntu,则必须将系统CA软件包复制到CentOS的CA软件包路径。否则,Seafile找不到CA捆绑软件,因此SSL连接将失败。
sudomkdir-p/etc/pki/tls/certs
sudocp/etc/ssl/certs/ca-certificates.crt/etc/pki/tls/certs/ca-bundle.crt
sudoln-s/etc/pki/tls/certs/ca-bundle.crt/etc/pki/tls/cert.pem
启动服务测试
您可以通过以下命令启动seafile服务并访问您的网站。
./seafile.shstart
./seahub.shstart