.env

.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=','
## Images
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:14.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_REDIS_IMAGE=redis
SEAFILE_ELASTICSEARCH_IMAGE=elasticsearch:8.15.0
SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.12-alpine
SEADOC_IMAGE=seafileltd/sdoc-server:2.0-latest
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:14.0-latest
#SEASEARCH_IMAGE=seafileltd/seasearch-nomkl:1.0-latest # Apple's Chip for SeaSearch
SEASEARCH_IMAGE=seafileltd/seasearch:1.0-latest
MD_IMAGE=seafileltd/seafile-md-server:14.0-latest
## Storage
### Storage type
SEAF_SERVER_STORAGE_TYPE=disk # disk, s3, multiple;也可留空以读取 seafile.conf
MD_STORAGE_TYPE=$SEAF_SERVER_STORAGE_TYPE # disk, s3
SS_STORAGE_TYPE=$SEAF_SERVER_STORAGE_TYPE # disk, s3
### Local storage path
BASIC_STORAGE_PATH=/opt
SEAFILE_VOLUME=$BASIC_STORAGE_PATH/seafile-data
SEAFILE_MYSQL_VOLUME=$BASIC_STORAGE_PATH/seafile-mysql/db
SEAFILE_ELASTICSEARCH_VOLUME=$BASIC_STORAGE_PATH/seafile-elasticsearch/data
SEAFILE_CADDY_VOLUME=$BASIC_STORAGE_PATH/seafile-caddy
SS_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 seasearch
S3_MD_BUCKET=<your metadata bucket name> # for metadata-server
S3_KEY_ID=<your-key-id>
S3_SECRET_KEY=<your-secret-key>
S3_USE_V4_SIGNATURE=true
S3_PATH_STYLE_REQUEST=false
S3_AWS_REGION=us-east-1
S3_HOST=
S3_USE_HTTPS=true
S3_SSE_C_KEY=
#################################
# Startup parameters #
#################################
SEAFILE_SERVER_HOSTNAME=seafile.example.com
SEAFILE_SERVER_PROTOCOL=http
TIME_ZONE=Etc/UTC
JWT_PRIVATE_KEY=
#####################################
# Third-party service configuration #
#####################################
## Database
SEAFILE_MYSQL_DB_HOST=db
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=PASSWORD
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
## Cache
CACHE_PROVIDER=redis # options: redis (recommend), memcached
### Redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
### Memcached
MEMCACHED_HOST=memcached
MEMCACHED_PORT=11211
######################################
# Initial variables #
# (Only valid in first-time startup) #
######################################
## Database root password, Used to create Seafile users
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=ROOT_PASSWORD
## Seafile admin user
INIT_SEAFILE_ADMIN_EMAIL=me@example.com
INIT_SEAFILE_ADMIN_PASSWORD=asecret
## SeaSearch admin user
## (valid in enabling SeaSearch and use Seafile admin by default)
INIT_SS_ADMIN_USER=$INIT_SEAFILE_ADMIN_EMAIL
INIT_SS_ADMIN_PASSWORD=$INIT_SEAFILE_ADMIN_PASSWORD
############################################
# Additional configurations for extensions #
############################################
## SeaDoc service
ENABLE_SEADOC=true
## SeaSearch
### Local cache
SS_MAX_OBJ_CACHE_SIZE=10GB
### Log
SS_LOG_TO_STDOUT=false
SS_LOG_OUTPUT=true
SS_LOG_LEVEL=info
## Notification
ENABLE_NOTIFICATION_SERVER=false
NOTIFICATION_SERVER_URL=
## Seafile AI
ENABLE_SEAFILE_AI=false
SEAFILE_AI_LLM_URL=
SEAFILE_AI_LLM_KEY=
## Metadata server
MD_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。
  • ENABLE_SEAFDAV:是否启用 WebDAV 服务(true / false),默认值为 false。详见 WebDAV 扩展。
  • 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后生效)
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:
  1. SEAF_SERVER_STORAGE_TYPE(Seafile 数据存储类型)
  2. MD_STORAGE_TYPE(Metadata server 存储类型,详见对应章节)
  3. SS_STORAGE_TYPE(SeaSearch 存储类型,详见对应章节)
集群版 Docker 模板只提供 SEAF_SERVER_STORAGE_TYPE。独立部署的扩展服务需使用各自的环境配置文件。 你必须在上述选项中至少指定一个为 s3,S3 相关配置才会生效。
SeaSearch 配置
关于 SeaSearch 的 .env 配置,参见 SeaSearch。
Metadata Server 配置
关于 Metadata Server 的 .env 配置,参见 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。
  • NOTIFICATION_SERVER_URL:客户端(浏览器)与通知服务器通信的地址,默认值为 https://seafile.example.com/notification。
  • INNER_NOTIFICATION_SERVER_URL:Seafile 服务器与通知服务器通信的内部地址,默认值为 http://notification-server:8083。
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(后端)。