对于修订版本升级,例如: 从10.0.1 升级到 10.0.4 版本,只需要下载新镜像,停止 docker 容器,把 docker-compose.yml 中的 Seafile 镜像版本修改为新版本,然后执行: docker compose up -d 启动就可以了。
对于大版本升级 ,例如 10.0.x 升级 11.0.x ,一般需要以下步骤
-
下载新镜像,停止 docker 容器
-
执行一些各个版本特定手工的配置升级
-
启动容器
请在升级之前阅读下文查看
各个版本的升级说明
。
从 12.0 升级到 13.0
从 Seafile Docker 13.0 开始,
elasticsearch.yml
已从
seafile-server.yml
分离,Seafile 将支持从环境变量获取缓存配置。
1.停止服务
升级前,停止 Seafile 服务
docker compose down
2.下载最新的.yml文件
2.1 下载
seafile-server.yml
在下载最新
seafile-server.yml
之前,请备份您的原始文件:
mv seafile-server.yml seafile-server.yml.bak
2.2 然后根据以下命令下载新
seafile-server.yml
:
#社区版
wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
#专业版
wget https://manual.seafile.com/13.0/repo/docker/pro/seafile-server.yml
下载
通知服务器的
.yml
文件
#和seafile一起部署
wget https://manual.seafile.com/13.0/repo/docker/notification-server.yml
#单独部署
wget https://manual.seafile.com/13.0/repo/docker/notification-server/notification-server.yml
2.3 下载
搜索引擎
.yml
文件(专业版)
从 Seafile Docker 13.0 (
Pro
) 开始,
ElasticSearch
服务将由单独的资源文件(即
elasticsearch.yml
)控制。如果您正在使用 Seafile Pro 并仍计划使用
ElasticSearch
,请下载
elasticsearch.yml
:
wget https://manual.seafile.com/13.0/repo/docker/pro/elasticsearch.yml
如果您使用 SeaSearch 作为搜索引擎,请下载最新的
seasearch.yml
文件:
mv seasearch.yml seasearch.yml.bak
wget https://manual.seafile.com/13.0/repo/docker/pro/seasearch.yml
2.4 下载 seadoc.yml 文件(可选)
如果你使用
SeaDoc
扩展,还需要更新
seadoc.yml
文件。
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
3. 修改
.env
,更新镜像版本并添加缓存配置
3.1 将镜像版本更新到 Seafile 13
# 社区版
SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest
SEADOC_IMAGE=seafileltd/sdoc-server:2.0-latest
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0-latest
#专业版
# -- add `elasticsearch.yml` if you are still using ElasticSearch
# COMPOSE_FILE='...,elasticsearch.yml'
# -- if you are using SeaSearch, please also update the SeaSearch image
# SEASEARCH_IMAGE=seafileltd/seasearch:1.0-latest # or seafileltd/seasearch-nomkl:1.0-latest for Apple chips
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0-latest
SEADOC_IMAGE=seafileltd/sdoc-server:2.0-latest
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0-latest
3.2 添加缓存配置
从 Seafile 13 开始,数据库和缓存的配置可以直接通过环境变量进行设置(您可以在
.env
中定义)。此外,推荐Redis作为主要缓存服务器
。
Redis:
## Cache
CACHE_PROVIDER=redis
### Redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
Memcached:
## Cache
CACHE_PROVIDER=memcached
### Memcached
MEMCACHED_HOST=memcached
MEMCACHED_PORT=11211
3.3 为通知服务器添加配置
如果您在 Seafile 12 中使用通知服务器,请在
.env
中指定通知服务器 URL:
#如果和seafile部署在同一台服务器
ENABLE_NOTIFICATION_SERVER=true
#单独部署
ENABLE_NOTIFICATION_SERVER=true
NOTIFICATION_SERVER_URL=http://<your notification server host>:8083
INNER_NOTIFICATION_SERVER_URL=$NOTIFICATION_SERVER_URL
3.4 添加存储后端的配置 (Pro)
Seafile 13.0 新增了 seaf-server 组件的存储后端
SEAF_SERVER_STORAGE_TYPE
。您可以删除变量或将其设置为空 (
SEAF_SERVER_STORAGE_TYPE=
) 以使用旧方法,即从 seafile.conf 确定存储后端。
本地存储(默认):
#本地存储(默认)
SEAF_SERVER_STORAGE_TYPE=disk
S3 存储:
#S3存储
SEAF_SERVER_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=
多存储后端:
将
SEAF_SERVER_STORAGE_TYPE
设置为
multiple
。在这种情况下,您无需更改
seafile.conf
中的存储配置。
SEAF_SERVER_STORAGE_TYPE=multiple
如果您想使用
seafile.conf
中的存储配置,请删除
.env
中的默认值
SEAF_SERVER_STORAGE_TYPE
:
SEAF_SERVER_STORAGE_TYPE=
4. 删除 obsolote 配置
尽管环境中的配置(即
.env
)的优先级高于配置文件中的配置,但我们建议您删除或修改以下文件中的缓存配置以避免歧义:
4.1 备份旧的配置文件:
# please replace /opt/seafile-data to your $SEAFILE_VOLUME
cp /opt/seafile-data/seafile/conf/seafile.conf /opt/seafile-data/seafile/conf/seafile.conf.bak
cp /opt/seafile-data/seafile/conf/seahub_settings.py /opt/seafile-data/seafile/conf/seahub_settings.py.bak
cp /opt/seafile-data/seafile/conf/seafevents.conf /opt/seafile-data/seafile/conf/seafevents.conf.bak
4.2 清理配置文件中的冗余配置项:
打开
/opt/seafile-data/seafile/conf/seafile.conf
并删除
[memcached]
,
[database]
,
[commit_object_backend]
,
[fs_object_backend]
,
[notification]
和
[block_backend]
如果上述部分在
.env
中已配置。
在大多数情况下,
seafile.conf
仅包含 Seafile 文件服务器的侦听端口
8082
。
打开
/opt/seafile-data/seafile/conf/seafile.conf
并删除[database]相关配置。
打开
/opt/seafile-data/seafile/conf/seahub_settings.py
并删除
DATABASES = {...}
和
CAHCES = {...}
5. 启动服务
docker compose up -d
从 11.0 升级到 12.0
从 Seafile Docker 12.0 开始,使用 .env 和 seafile-server.yml 进行配置。
备份配置文件 (
docker-compose.yml
)
mv docker-compose.yml docker-compose.yml.bak
下载配置文件
下载.env、seafile-server.yml和caddy.yml,并根据
docker-compose.yml.bak
中的配置修改.env 文件。
#Seafile社区版
wget -O .env https://manual.seafile.com/12.0/repo/docker/ce/env
wget https://manual.seafile.com/12.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/12.0/repo/docker/caddy.yml
#Seafile企业版(Github镜像源)
wget -O .env https://manual.seafile.com/12.0/repo/docker/pro/env
wget https://manual.seafile.com/12.0/repo/docker/pro/seafile-server.yml
wget https://manual.seafile.com/12.0/repo/docker/caddy.yml
以下字段需要特别注意:
社区版:
变量名
描述
默认值
SEAFILE_VOLUME
Seafile 数据目录
/opt/seafile-data
SEAFILE_MYSQL_VOLUME
MySQL 数据目录
/opt/seafile-mysql/db
SEAFILE_CADDY_VOLUME
用于存储从 Let's Encrypt 获得的证书的 Caddy 数据目录。
/opt/seafile-caddy
SEAFILE_MYSQL_DB_USER
MySQL 的用户(可在conf/seafile.conf中找到)。
seafile
SEAFILE_MYSQL_DB_PASSWORD
MySQL seafile用户密码
(必填)
SEAFILE_MYSQL_DB_CCNET_DB_NAME
ccnet 数据库名称
ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME
seafile 数据库名称
seafile_db
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME
seahub 数据库名称
seahub_db
JWT
JWT 私钥,Seafile 需要一个长度不小于 32 个字符的随机字符串,可以使用`pwgen -s 40 1`生成。
(必填)
SEAFILE_SERVER_HOSTNAME
Seafile服务器的主机名或域名
(必填)
SEAFILE_SERVER_PROTOCOL
Seafile服务器协议(http或https)
http
TIME_ZONE
时区
Asia/Shanghai
专业版:
变量名
描述
默认值
SEAFILE_VOLUME
Seafile 数据目录
/opt/seafile-data
SEAFILE_MYSQL_VOLUME
MySQL 数据目录
/opt/seafile-mysql/db
SEAFILE_CADDY_VOLUME
用于存储从 Let's Encrypt 获得的证书的 Caddy 数据目录
/opt/seafile-caddy
SEAFILE_ELASTICSEARCH_VOLUME
Elasticsearch数据目录(仅专业版有效)
/opt/seafile-elasticsearch/data
SEAFILE_MYSQL_DB_USER
MySQL 的用户(可在conf/seafile.conf中找到)
seafile
SEAFILE_MYSQL_DB_PASSWORD
MySQL seafile用户密码
(必填)
JWT
JWT 私钥,Seafile 需要一个长度不小于 32 个字符的随机字符串,可以使用`pwgen -s 40 1` 生成。
(必填)
SEAFILE_SERVER_HOSTNAME
Seafile服务器的主机名或域名
(必填)
SEAFILE_SERVER_PROTOCOL
Seafile服务器协议(http或https)
http
TIME_ZONE
时区
Asia/Shanghai
注意:
-
上表中变量的值应与现有的配置保持一致,您可以从 seafile.conf 或其他配置文件中查验这些值。
-
配置文件 .env 中初始化配置的变量可以删除,例如 INIT_SEAFILE_ADMIN_EMAIL , INIT_SEAFILE_ADMIN_PASSWORD
备份seafile.nginx.conf配置文件:
cp seafile.nginx.conf seafile.nginx.conf.bak
注释 “
server listen 80
” 部分:
#server {
# listen 80;
# server_name _ default_server;
# allow certbot to connect to challenge location via HTTP Port 80
# otherwise renewal request will fail
# location /.well-known/acme-challenge/ {
# alias /var/www/challenges/;
# try_files $uri =404;
# }
# location / {
# rewrite ^ https://example.seafile.com$request_uri? permanent;
# }
#}
将
server listen 443
改为
80
:
server {
#listen 443 ssl;
listen 80;
# ssl_certificate /shared/ssl/pkg.seafile.top.crt;
# ssl_certificate_key /shared/ssl/pkg.seafile.top.key;
# ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
...
启动容器。
升级
notification
服务
SeaDoc升级(0.8到1.0)
如果您已经使用 Seafile v11.0 部署了 SeaDoc v0.8,在Seafile12.0中则可以按照以下步骤将其升级到 1.0:
-
删除 sdoc_db
-
删除 seafile.nginx.conf文件中SeaDoc相关配置
-
删除旧的 SeaDoc 并部署一个新的 SeaDoc 服务
删除 sdoc_db
SeaDoc从 1.0 版本开始,开始使用 seahub_db 数据库存储其操作日志,不再需要额外的数据库 sdoc_db。将 Seafile 服务从 11.0 版本升级到 12.0 版本时,seahub_db 中的数据库表会自动创建,sdoc_db可直接删除。
删除 seafile.nginx.conf文件中SeaDoc相关配置
如果您部署了旧版本的 SeaDoc,需要删除 seafile.nginx.conf 文件中的
/sdoc-server/
、
/socket.io
配置
# location /sdoc-server/ {
# add_header Access-Control-Allow-Origin *;
# add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
# add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
# if ($request_method = 'OPTIONS') {
# add_header Access-Control-Allow-Origin *;
# add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
# add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
# return 204;
# }
# proxy_pass http://sdoc-server:7070/;
# proxy_redirect off;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Host $server_name;
# proxy_set_header X-Forwarded-Proto $scheme;
# client_max_body_size 100m;
# }
# location /socket.io {
# proxy_pass http://sdoc-server:7070;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_redirect off;
# proxy_buffers 8 32k;
# proxy_buffer_size 64k;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
# proxy_set_header X-NginX-Proxy true;
# }
部署一个新的 SeaDoc 服务
其他配置
启用 REMOTE_USER
默认情况下,REMOTE_USER 不会传递给 Seafile,如果你需要 SSO 的 REMOTE_USER ,则需要更改
gunicorn.conf.py
。
forwarder_headers = 'SCRIPT_NAME,PATH_INFO,REMOTE_USER'
在seahub中补充或删除ALLOWED_HOSTS
自版本 12.0 起,seaf-server 组件需要向 seahub 组件发送内部请求以检查权限,如果 ALLOWED_HOSTS 设置不正确,在下载文件时会报告 400 Error 错误。在这种情况下,你可以在
seahub_settings.py
中
删除
ALLOWED_HOSTS
,或者在
ALLOWED_HOSTS
列表中
补充
127.0.0.1
# seahub_settings.py
ALLOWED_HOSTS = ['...(your domain)', '127.0.0.1']
从 10.0 升级到 11.0
下载新镜像,停止旧的 docker 容器,将 docker-compose.yml 中的 Seafile 镜像版本修改为新版本。
迁移 LDAP 和 OAuth 的配置和其他一些配置请参考:
https://cloud.seafile.com/published/seafile-manual-cn/upgrade/upgrade_notes_for_11.0.x.md
执行:docker compose up - d 启动容器
从 9.0 升级到 10.0
下载新镜像,停止旧的 docker 容器,将 docker-compose.yml 中的 Seafile 镜像版本修改为新版本,然后执行:docker compose up - d启动容器。
如果您使用的是带有 ElasticSearch、SAML SSO 和存储后端功能的专业版,请按照升级手册了解如何更新这些功能的配置:
https://cloud.seafile.com/published/seafile-manual-cn/upgrade/upgrade_notes_for_10.0.x.md
如果您想使用新的通知服务器和速率控制(仅限专业版),请参考升级手册:
https://cloud.seafile.com/published/seafile-manual-cn/upgrade/upgrade_notes_for_10.0.x.md
从 8.0 升级到 9.0
只需下载新镜像,停止旧的 docker 容器,将 docker-compose.yml 中的 Seafile 镜像版本修改为新版本,然后执行:docker compose up -d 启动。
如果您使用的是带有 ElasticSearch,需要给ElasticSearch升级,请参考升级手册:
https://cloud.seafile.com/published/seafile-manual-cn/upgrade/upgrade_notes_for_9.0.x.md
启用 https
9.0.6 及以后版本中使用了 acme v3 申请证书。 如果存在旧版本生成的证书,启动前需要备份并移走旧的证书目录和旧的 seafile.nginx.conf。
mv /opt/seafile/shared/ssl /opt/seafile/shared/ssl-bak
mv /opt/seafile/shared/nginx/conf/seafile.nginx.conf /opt/seafile/shared/nginx/conf/seafile.nginx.conf.bak
启动新容器会自动申请证书。
docker compose down
docker compose up -d
等待证书申请成功,然后您可以按照想要的内容修改新的 seafile.nginx.conf,并执行以下命令使 nginx 配置生效。
docker exec seafile nginx -s reload
新容器内的定时任务会自动更新证书,无需再次执行本操作
7.1 升级到 8.0
只需下载新镜像,停止旧的 docker 容器,将 docker-compose.yml 中的 Seafile 镜像版本修改为新版本,然后执行:docker compose up -d 启动容器。
7.0 升级到 7.1
只需下载新镜像,停止旧的 docker 容器,将 docker-compose.yml 中的 Seafile 镜像版本修改为新版本,然后执行:docker compose up -d 启动容器。