.env 文件用于指定 Seafile-docker 实例所使用的组件,以及每个组件所需的环境变量。
使用 Kubernetes 部署时,非敏感配置写入 seafile-env.yaml,密码和密钥写入 seafile-secret Secret。
################################## Docker compose configurations ##################################COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,seasearch.yml'COMPOSE_PATH_SEPARATOR=','## ImagesSEAFILE_IMAGE=seafileltd/seafile-pro-mc:14.0-latestSEAFILE_DB_IMAGE=mariadb:10.11SEAFILE_REDIS_IMAGE=redisSEAFILE_ELASTICSEARCH_IMAGE=elasticsearch:8.15.0SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.12-alpineSEADOC_IMAGE=seafileltd/sdoc-server:2.0-latestNOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:14.0-latest#SEASEARCH_IMAGE=seafileltd/seasearch-nomkl:1.0-latest # Apple's Chip for SeaSearchSEASEARCH_IMAGE=seafileltd/seasearch:1.0-latestMD_IMAGE=seafileltd/seafile-md-server:14.0-latest## Storage### Storage typeSEAF_SERVER_STORAGE_TYPE=disk # disk, s3, multiple;也可留空以读取 seafile.confMD_STORAGE_TYPE=$SEAF_SERVER_STORAGE_TYPE # disk, s3SS_STORAGE_TYPE=$SEAF_SERVER_STORAGE_TYPE # disk, s3### Local storage pathBASIC_STORAGE_PATH=/optSEAFILE_VOLUME=$BASIC_STORAGE_PATH/seafile-dataSEAFILE_MYSQL_VOLUME=$BASIC_STORAGE_PATH/seafile-mysql/dbSEAFILE_ELASTICSEARCH_VOLUME=$BASIC_STORAGE_PATH/seafile-elasticsearch/dataSEAFILE_CADDY_VOLUME=$BASIC_STORAGE_PATH/seafile-caddySS_DATA_PATH=$BASIC_STORAGE_PATH/seasearch-data SEADOC_VOLUME=$BASIC_STORAGE_PATH/seadoc-data### Storage configurations for S3 (only valid in XXX_STORAGE_TYPE=s3)S3_COMMIT_BUCKET=<your commit bucket name>S3_FS_BUCKET=<your fs bucket name>S3_BLOCK_BUCKET=<your block bucket name>S3_SS_BUCKET=<your seasearch bucket name> # for seasearchS3_MD_BUCKET=<your metadata bucket name> # for metadata-serverS3_KEY_ID=<your-key-id>S3_SECRET_KEY=<your-secret-key>S3_USE_V4_SIGNATURE=trueS3_PATH_STYLE_REQUEST=falseS3_AWS_REGION=us-east-1S3_HOST=S3_USE_HTTPS=trueS3_SSE_C_KEY=################################## Startup parameters ##################################SEAFILE_SERVER_HOSTNAME=seafile.example.comSEAFILE_SERVER_PROTOCOL=httpTIME_ZONE=Etc/UTCJWT_PRIVATE_KEY=###################################### Third-party service configuration ######################################## DatabaseSEAFILE_MYSQL_DB_HOST=dbSEAFILE_MYSQL_DB_USER=seafileSEAFILE_MYSQL_DB_PASSWORD=PASSWORDSEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_dbSEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_dbSEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db## CacheCACHE_PROVIDER=redis # options: redis (recommend), memcached### RedisREDIS_HOST=redisREDIS_PORT=6379REDIS_PASSWORD=### MemcachedMEMCACHED_HOST=memcachedMEMCACHED_PORT=11211####################################### Initial variables ## (Only valid in first-time startup) ######################################### Database root password, Used to create Seafile usersINIT_SEAFILE_MYSQL_ROOT_PASSWORD=ROOT_PASSWORD## Seafile admin userINIT_SEAFILE_ADMIN_EMAIL=me@example.comINIT_SEAFILE_ADMIN_PASSWORD=asecret## SeaSearch admin user## (valid in enabling SeaSearch and use Seafile admin by default)INIT_SS_ADMIN_USER=$INIT_SEAFILE_ADMIN_EMAILINIT_SS_ADMIN_PASSWORD=$INIT_SEAFILE_ADMIN_PASSWORD############################################# Additional configurations for extensions ############################################### SeaDoc serviceENABLE_SEADOC=true## SeaSearch### Local cacheSS_MAX_OBJ_CACHE_SIZE=10GB### LogSS_LOG_TO_STDOUT=falseSS_LOG_OUTPUT=trueSS_LOG_LEVEL=info## NotificationENABLE_NOTIFICATION_SERVER=falseNOTIFICATION_SERVER_URL=## Seafile AIENABLE_SEAFILE_AI=falseSEAFILE_AI_LLM_URL=SEAFILE_AI_LLM_KEY=## Metadata serverMD_FILE_COUNT_LIMIT=100000以上为 Seafile 14 专业版的环境变量示例。Seafile 13 使用相应的 13.0-latest 标签:SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0-latest、NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0-latest 和 MD_IMAGE=seafileltd/seafile-md-server:13.0-latest。Seafile 14 社区版的服务器镜像为 seafileltd/seafile-mc:14.0-latest。
Seafile-docker 配置
组件配置
- COMPOSE_FILE:Seafile-docker 各组件的 .yml 文件,多个文件之间必须使用 COMPOSE_PATH_SEPARATOR 定义的符号分隔。核心组件包括 seafile-server.yml 和 caddy.yml,它们必须被指定。
- COMPOSE_PATH_SEPARATOR:用于分隔 COMPOSE_FILE 中 .yml 文件的符号,默认是 ,。
Docker 镜像配置
- SEAFILE_IMAGE:Seafile-server 镜像,Seafile 14 社区版默认 seafileltd/seafile-mc:14.0-latest,专业版默认 seafileltd/seafile-pro-mc:14.0-latest;Seafile 13 专业版示例使用 seafileltd/seafile-pro-mc:13.0-latest。
- SEAFILE_DB_IMAGE:数据库服务器镜像,默认值 mariadb:10.11。
- SEAFILE_REDIS_IMAGE:Redis 服务器镜像,默认值 redis。
- SEAFILE_MEMCACHED_IMAGE:Seafile 13 文档中列出的 Memcached 镜像,默认值 memcached:1.6.29。
- SEAFILE_ELASTICSEARCH_IMAGE:仅适用于专业版使用 Elasticsearch 搜索引擎时。Elasticsearch 镜像,默认值 elasticsearch:8.15.0。
- SEASEARCH_IMAGE:仅适用于专业版。SeaSearch 镜像,默认值 seafileltd/seasearch:1.0-latest。
- SEAFILE_CADDY_IMAGE:Caddy 服务器镜像,默认值 lucaslorentz/caddy-docker-proxy:2.12-alpine。
- SEADOC_IMAGE:仅在集成 SeaDoc 后有效。SeaDoc 服务器镜像,默认值 seafileltd/sdoc-server:2.0-latest。
- NOTIFICATION_SERVER_IMAGE:通知服务器镜像,Seafile 14 默认 seafileltd/notification-server:14.0-latest;Seafile 13 使用相应的 13.0-latest 标签。
- MD_IMAGE:元数据服务器镜像,Seafile 14 默认 seafileltd/seafile-md-server:14.0-latest;Seafile 13 使用相应的 13.0-latest 标签。
- NON_ROOT:以非 root 用户运行 Seafile 容器,默认值 false。
持久卷配置
- BASIC_STORAGE_PATH:Docker 持久化数据的基础路径,默认值 /opt。
- SEAFILE_VOLUME:Seafile 数据卷目录,默认值 /opt/seafile-data。
- SEAFILE_MYSQL_VOLUME:MySQL 数据卷目录,默认值 /opt/seafile-mysql/db。
- SEAFILE_CADDY_VOLUME:Caddy 数据卷目录,用于存储从 Let's Encrypt 获取的证书,默认值 /opt/seafile-caddy。
- SEAFILE_ELASTICSEARCH_VOLUME:仅适用于专业版使用 Elasticsearch 搜索引擎时。Elasticsearch 数据卷目录,默认值 /opt/seafile-elasticsearch/data。
- SS_DATA_PATH:仅适用于专业版。SeaSearch 数据卷目录,默认值 /opt/seasearch-data。
- SEADOC_VOLUME:仅在集成 SeaDoc 后有效。SeaDoc 数据卷目录,默认值 /opt/seadoc-data。
MySQL 配置
- SEAFILE_MYSQL_DB_HOST:MySQL 主机地址,默认值为 Seafile-docker 实例中的预定义服务名 db。
- SEAFILE_MYSQL_DB_PORT:MySQL 端口,默认值 3306。
- INIT_SEAFILE_MYSQL_ROOT_PASSWORD:仅在首次部署时需要,MySQL 的 root 密码。
- SEAFILE_MYSQL_DB_USER:MySQL 用户(数据库用户可在 conf/seafile.conf 中找到)。
- SEAFILE_MYSQL_DB_PASSWORD:MySQL 用户 seafile 的密码。
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:Seafile 数据库名称,默认值 seafile_db。
- SEAFILE_MYSQL_DB_CCNET_DB_NAME:ccnet 数据库名称,默认值 ccnet_db。
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:seahub 数据库名称,默认值 seahub_db。
从 Seafile 14 开始,Docker 部署新建的 Seafile 数据库使用 utf8mb4 字符集,并在 seafile.conf 中设置 connection_charset = utf8mb4,以正确保存 Emoji 等特殊字符。
缓存配置
- CACHE_PROVIDER:Seafile 使用的缓存服务类型,可选值为 redis 或 memcached。从 Seafile 13 开始,推荐使用 redis 以支持新功能,memcached 将不再默认集成进 Seafile Docker。默认值为 redis。
Redis 配置(仅在 CACHE_PROVIDER=redis 时有效)
- REDIS_HOST:Redis 服务器主机名,默认值 redis。
- REDIS_PORT:Redis 服务器端口,默认值 6379。
- REDIS_PASSWORD:Redis 服务器密码。
Memcached 配置(仅在 CACHE_PROVIDER=memcached 时有效)
- MEMCACHED_HOST:Memcached 服务器主机名,默认值 memcached。
- MEMCACHED_PORT:Memcached 服务器端口,默认值 11211。
Seafile-server 配置
- JWT_PRIVATE_KEY:一个不少于 32 个字符的随机字符串。生成示例:pwgen -s 40 1。
- SEAFILE_SERVER_HOSTNAME:Seafile 服务器的主机名或域名。
- SEAFILE_SERVER_PROTOCOL:Seafile 服务器使用的协议(http 或 https)。
- TIME_ZONE:时区(默认值为 UTC)。
- INIT_SEAFILE_ADMIN_EMAIL:管理员用户名(邮箱格式)。
- INIT_SEAFILE_ADMIN_PASSWORD:管理员密码。
- ENABLE_GO_FILESERVER:是否使用 Go 文件服务器(true / false),默认值为 true。
- SEAFDAV_WORKERS:WebDAV 工作进程数,默认值为 5。
- SEAFILE_LOG_TO_STDOUT:是否将日志写入标准输出而非日志文件,默认值为 false。
- SEAFILE_DOCKER_VERBOSE:是否启用 Seafile Docker 启动程序的详细调试日志,默认值为 false。
- SEAFILE_SKIP_DB_UPGRADE:是否跳过启动时自动升级数据库,默认值为 false。
- CSRF_TRUSTED_ORIGINS:CSRF 保护的可信来源列表,格式为 JSON 字符串,例如 ["https://seafile.example.com", "https://seafile.com"]。
Docker Compose 可使用 SEAFILE_SECRETS_FILE、MYSQL_PASSWORD_FILE 和 REDIS_PASSWORD_FILE 从文件读取密码和密钥,参见 Docker Compose Secrets。
搜索服务配置(专业版)
- ENABLE_SEARCH:是否启用搜索服务,默认值为 true。
- SEARCH_ENGINE:搜索引擎,可选 seasearch 或 elasticsearch,默认值为 seasearch。
- ENABLE_FULL_TEXT_SEARCH:是否索引文件内容以实现全文搜索,默认值为 true,同时适用于 SeaSearch 和 Elasticsearch。自专业版 13 起,该选项优先于 seafevents.conf 中的 enable_full_text_search。
- SEASEARCH_URL:Seafile 可访问的 SeaSearch 服务地址;使用 SeaSearch 时必须设置。
- SEASEARCH_TOKEN:调用 SeaSearch API 的授权令牌;使用 SeaSearch 时必须设置。
- ELASTICSEARCH_SCHEME:Elasticsearch 连接协议,默认值为 http。
- ELASTICSEARCH_HOST:Elasticsearch 主机地址;使用 Elasticsearch 时必须设置。
- ELASTICSEARCH_PORT:Elasticsearch 端口,默认值为 9200。
- ELASTICSEARCH_USER:Elasticsearch 用户名。
- ELASTICSEARCH_PASSWORD:Elasticsearch 密码。
SeaDoc 配置(仅在集成SeaDoc后生效)
- ENABLE_SEADOC:是否启用 SeaDoc 服务器,默认值为 false。
S3 存储后端配置(专业版)
- SEAF_SERVER_STORAGE_TYPE:用于存储 Seafile 数据的存储类型。可选项为 disk(本地磁盘)、s3、multiple 或留空;留空时从 seafile.conf 读取存储配置(参见 多存储后端)。
- S3_COMMIT_BUCKET:S3 存储后端中用于保存 commit 对象的存储桶。
- S3_FS_BUCKET:S3 存储后端中用于保存 fs 对象的存储桶。
- S3_BLOCK_BUCKET:S3 存储后端中用于保存块(block)对象的存储桶。
- S3_SS_BUCKET:SeaSearch 数据的 S3 存储桶(当服务启用时有效)。
- S3_MD_BUCKET:元数据服务器数据的 S3 存储桶(当服务可用时有效)。
- S3_KEY_ID:S3 存储后端的密钥 ID。
- S3_SECRET_KEY:S3 存储后端的密钥。
- S3_USE_V4_SIGNATURE:启用时使用 S3 的 V4 协议,默认值为 true。
- S3_AWS_REGION:桶所在的区域(仅 AWS 有效),默认值为 us-east-1。
- S3_HOST:桶的主机地址(不使用 AWS 时必填)。
- S3_USE_HTTPS:启用时使用 HTTPS 连接到 S3,默认值为 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:一个 32 字符的字符串,可以通过 openssl rand -base64 24 生成,也可以是任意 32 字符的随机字符串。如果启用 SSE-C,则必须使用 V4 认证协议和 HTTPS。 更简单的 S3 配置(适用于 Seafile 及其组件): 自 Seafile Pro 13.0 起,为了方便用户在未来部署 Seafile 的相关扩展组件和其他服务,.env 文件中提供了一个专门的配置区块,用于存放 Seafile 及部分扩展组件(如 SeaSearch、Metadata server)的 S3 配置。你可以通过标题 Storage configurations for S3 找到该区块。
.env 文件中的 S3 配置仅支持单一 S3 存储后端模式
Seafile 服务器仅支持在 .env 文件中配置 S3,用于单一存储后端模式(即 SEAF_SERVER_STORAGE_TYPE=s3)。
如果使用需要直接在 seafile.conf 中配置的其他存储后端(例如 Ceph、Swift)或相关高级设置,可将 SEAF_SERVER_STORAGE_TYPE 留空或从 .env 中删除,并按需配置 MD_STORAGE_TYPE 和 SS_STORAGE_TYPE。如果启用多存储后端,则应按多存储后端文档设置 SEAF_SERVER_STORAGE_TYPE=multiple,并配置存储类别。
S3 配置仅在至少一个 STORAGE_TYPE 设置为 s3 时才会生效
专业版 Docker 模板中有三种 STORAGE_TYPE:
- SEAF_SERVER_STORAGE_TYPE(Seafile 数据存储类型)
- MD_STORAGE_TYPE(Metadata server 存储类型,详见对应章节)
- SS_STORAGE_TYPE(SeaSearch 存储类型,详见对应章节)
集群版 Docker 模板只提供 SEAF_SERVER_STORAGE_TYPE。独立部署的扩展服务需使用各自的环境配置文件。
你必须在上述选项中至少指定一个为 s3,S3 相关配置才会生效。
SeaSearch 配置
Metadata Server 配置
- ENABLE_METADATA_MANAGEMENT:是否启用元数据管理,默认值为 false。
- INNER_METADATA_SERVER_URL:Seafile 容器内可访问的 Metadata Server 地址;启用元数据管理时必须设置。
- MD_FILE_COUNT_LIMIT:元数据功能允许的单个仓库最大文件数。如果仓库中文件数超过该值,元数据管理功能将不会启用。对于已启用元数据管理的仓库,如果记录数达到此值,但仍有部分文件未被记录到 Metadata server,则未记录文件的元数据管理将被跳过。默认值为 100000。
Notification server 配置
- ENABLE_NOTIFICATION_SERVER:启用(true)或禁用(false)Seafile 通知功能,默认值为 false。
Kubernetes 环境配置
Kubernetes 的 seafile-env.yaml ConfigMap 存放非敏感配置,并包含 SEAFILE_LOG_TO_STDOUT、SITE_ROOT、SEAFILE_MYSQL_DB_PORT 等选项。JWT_PRIVATE_KEY、SEAFILE_MYSQL_DB_PASSWORD、INIT_SEAFILE_ADMIN_PASSWORD、INIT_SEAFILE_MYSQL_ROOT_PASSWORD、REDIS_PASSWORD、S3_SECRET_KEY、S3_SSE_C_KEY 等密码和密钥应保存在 seafile-secret Secret 中。集群部署时,CLUSTER_INIT_MODE 在 seafile-env.yaml 中配置,CLUSTER_SERVER 和 CLUSTER_MODE 由前后端 Deployment 资源设置。
集群初始化配置
- CLUSTER_INIT_MODE:仅在专业版首次部署有效。集群初始化模式,会生成服务运行所需的配置文件(但不会启动服务)。如果配置文件已存在,则不执行任何操作。默认值为 true。生成配置文件后,请将此项设置为 false。
- CLUSTER_INIT_ES_HOST:Seafile 13 集群配置说明列出的选项,仅在专业版首次部署有效,集群 Elasticsearch 服务器主机地址。
- CLUSTER_INIT_ES_PORT:Seafile 13 集群配置说明列出的选项,仅在专业版首次部署有效,集群 Elasticsearch 服务器端口,默认值为 9200。
- CLUSTER_SERVER:在 cluster/seafile-server.yml 中定义,用于告知 Seafile Docker 是否在集群模式运行,替代 seafile.conf 中的集群配置。
- CLUSTER_MODE:Seafile 服务节点类型,即 frontend(前端,默认)或 backend(后端)。