6.2
v6.2 版本需要进行多项配置更新。为了简化升级过程,我们在升级时下载的发布文件中加入了一个迁移脚本。
此脚本只适用于从 6.1 升级至 6.2 版本,不能跨版本使用!
cd /opt/seatable
./migrate_6.1_6.2.sh
该脚本可以重复执行。
你可以利用这一机制检查是否已经完成所有必要的配置迁移,以及是否已经删除所有废弃的配置文件。
此外,每次执行脚本时,脚本都会先对以下目录中的整个 `conf/` 目录创建备份:
/opt/seatable/seatable-data/seatable
注意检查部署路径,如过不是默认的部署路径,需要同步修改升级脚本内的路径配置!
该脚本会自动完成以下操作:
-
将 `SECRET_KEY` 变量从 `dtable_web_settings.py` 移动到 `.env` 文件;
-
清理 `dtable_web_settings.py` 中不再使用的配置项。
此外,该脚本还会检查当前的配置文件,并列出需要手动完成的修改:
以下配置文件已被弃用,必须删除:
-
dtable-api-gateway.conf
-
dtable-db.conf
-
dtable-events.conf
-
dtable-storage-server.conf
-
dtable_server_config.json
所有非默认配置都必须迁移为环境变量;
如果你没有修改过这些配置文件,则无需设置额外的环境变量;
如果你已经为表格快照和资源文件启用了 S3 存储,则需要将相关配置迁移为环境变量;
如果你已经启用了 SeaTable AI,则必须将大语言模型提供商的配置迁移到新的 `seatable_config.yaml` 配置文件中。
这是为了支持针对不同任务配置多个大语言模型提供商。
6.1
从6.1开始,可以使用
环境变量配置s3,如果 seafile-server 和 storage-server 同时使用S3,可共用 S3_HOST 等配置。
注意:如果有一个组件不用 s3,则不要配置 env,而是需要在 conf 文件里单独配置。
STORAGE_TYPE=disk #What kind of the SeaTable data for storage. Available options are `disk` (i.e., local disk), `s3`
S3_STORAGE_BUCKET=***
S3_COMMIT_BUCKET=***
S3_FS_BUCKET=***
S3_BLOCK_BUCKET=***
S3_KEY_ID=***
S3_SECRET_KEY=***
S3_USE_V4_SIGNATURE=true #Use the v4 protocol of S3 if enabled, default is `true`
S3_AWS_REGION=us-east-1 #Region of your buckets (AWS only), default is `us-east-1`.
S3_HOST=*** #Host of your buckets (required when not use AWS).
S3_USE_HTTPS=true #Use HTTPS connections to S3 if enabled, default is `true`
S3_PATH_STYLE_REQUEST=false #This option asks Seafile to use URLs like `https://192.168.1.123:8080/bucketname/object` to access objects. In *Amazon S3*, the default URL format is in virtual host style, such as `https://bucketname.s3.amazonaws.com/object`. But this style relies on advanced DNS server setup. So most self-hosted storage systems only implement the path style format. Default `false`.
S3_SSE_C_KEY=*** #A string of 32 characters can be generated by openssl rand -base64 24. It can be any 32-character long random string. It's required to use V4 authentication protocol and https if you enable SSE-C.
S3_PART_SIZE= #Controls the multipart upload threshold. Usually no configuration required.
从6.1版本开始,ENABLE_PYTHON_SCRIPT的默认值已从true改为false。如果你使用 Python 运行器,必须确保 /opt/seatable-compose/.env 文件中设置了 ENABLE_PYTHON_SCRIPT=true。如果没有这个设置,升级后 Python 脚本的执行将被禁用。
6.0
升级到6.0无需特殊步骤。
5.3
自 SeaTable 5.3 启将支持通过环境变量来设置数据库和 Redis 等的访问信息。
更新容器编排相关文件
您需要下载 SeaTable 5.3 版本的 docker-compose.yml 文件,
开发者版
docker-compose.yml
,企业版
docker-compose.yml
。并且在 .env 文件中添加以下配置项:
SEATABLE_MYSQL_DB_HOST=
SEATABLE_MYSQL_DB_PORT=
SEATABLE_MYSQL_DB_USER=
SEATABLE_MYSQL_DB_PASSWORD=
REDIS_HOST=
REDIS_PORT=
REDIS_PASSWORD=
JWT_PRIVATE_KEY=
您需要参考
/opt/seatable/conf/dtable_server_config.json 内的配置项
,编辑以上配置项
-
SEATABLE_MYSQL_DB_HOST,与 dtable_server_config.json 内的 host 字段相同
-
SEATABLE_MYSQL_DB_PORT,与 dtable_server_config.json 内的 port 字段相同
-
SEATABLE_MYSQL_DB_USER,与 dtable_server_config.json 内的 user 字段相同
-
SEATABLE_MYSQL_DB_PASSWORD,与 dtable_server_config.json 内的 password 字段相同
-
REDIS_HOST,与 dtable_server_config.json 内的 redis_host 字段相同
-
REDIS_PORT,与 dtable_server_config.json 内的 redis_port 字段相同
-
REDIS_PASSWORD,与 dtable_server_config.json 内的 redis_password 字段相同。注意这里如果 REDIS 没有设置密码的话,那么不需要设置这个变量的值 (注意不要填写为空字符串 "")。
-
JWT_PRIVATE_KEY,与 dtable_server_config.json 内的 private_key 字段相同
同时您需要去掉以下配置项
# SEATABLE_MYSQL_ROOT_PASSWORD=
Python 运行器
ENABLE_PYTHON_SCRIPT=true
PYTHON_SCHEDULER_URL=http://python-scheduler
PYTHON_SCHEDULER_AUTH_TOKEN=...
其中
PYTHON_SCHEDULER_URL 和
PYTHON_SCHEDULER_AUTH_TOKEN
可以通过 dtable_web_settings.py 中原来的
SEATABLE_FAAS_URL 和
SEATABLE_FAAS_AUTH_TOKEN
获取。
自 5.3 启
SeaTable 将仅支持从
API-Gateway 加载 Base 和代理 WebSocket,因此您需要手工修改 nginx.conf ,将
/socket.io 改为
/api-gateway/socket.io/,以及
http://dtable_servers 改为
http://127.0.0.1:7780/socket.io/
:
更新反向代理
#location /socket.io {
# proxy_pass http://dtable_servers;
location /api-gateway/socket.io/ {
proxy_pass http://127.0.0.1:7780/socket.io/;
如果您的 nginx.conf 配置文件中缺少代理 /api-gateway/ 的配置
项
,那么您需要参考 SeaTable 4.4 额外升级步骤来添加 N
ginx 代理
/api-gateway/
配置项。
更新 SeaTable 配置文件
自 5.3 版本启,SeaTable 将支持自动清理数据库,建议您开启该功能。为此您需要将以下配置添加进 dtable-events.conf
[CLEAN DB]
enabled = true
除此之外在确定 SeaTable 功能正常后,请删除过期的配置项,包括
-
删除 ccnet.conf 文件
-
删除 seafile.conf 中的缓存、数据库相关的配置,如
[database]
type = mysql
host = db
port = 3306
user = root
password = ***
db_name = seafile_db
connection_charset = utf8
-
删除 dtable_web_settings.py 中的缓存、数据库相关的配置,以及 DTABLE_PRIVATE_KEY, 这些将在环境变量中读取,如
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'db',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '***',
'NAME': 'dtable_db',
'OPTIONS': {
'charset': 'utf8mb4',
},
}
}
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://redis:6379',
}
}
DTABLE_PRIVATE_KEY = '***'
#以下内容可被移除,将不再使用或无需额外配置
DTABLE_SERVER_URL = ''
DTABLE_SOCKET_URL = ''
DTABLE_DB_URL = ''
SEATABLE_FAAS_URL = ''
SEATABLE_FAAS_AUTH_TOKEN = ''
-
删除 dtable_server_config.json 中的缓存、数据库相关的配置,以及 private_key( 需要注意的是这里的“{ }”需要保留,不能删除 )
"host": "db",
"user": "root",
"password": "***",
"database": "dtable_db",
"port": 3306,
"private_key": "***",
"redis_host": "redis",
"redis_port": 6379,
"redis_password": ""
-
删除 dtable-events.conf 中 [DATABASE] 和 [REDIS] 两个章节
[DATABASE]
type = mysql
host = db
port = 3306
username = root
password = ***
db_name = dtable_db
[REDIS]
host = redis
port = 6379
重启服务并应用升级
由于镜像启动时会自动执行升级脚本以及更新数据库,因此修改完配置文件后直接重新启动一次镜像即可
docker compose up -d
在启动 SeaTable 后,
您可能还需要进入容器运行命令来迁移应用中的评论
docker exec -it seatable bash
cd /opt/seatable/seatable-server-latest/dtable-web
seatable.sh python-env manage.py merge_app_comments_to_base
5.2
从版本 5.2 开始,Redis 被用作默认缓存后端,不再使用 memcached。
您需要将
depends_on:
memcached
和
memcached
章节从 docker-compose.yml 文件中去除:
services:
seatable-server:
image: ${SEATABLE_IMAGE:-seatable/seatable-developer:latest}
...
depends_on:
db:
condition: service_healthy
# memcached:
# condition: service_started
...
# memcached:
# image: ${SEATABLE_MEMCACHED_IMAGE:-memcached:1.5.6}
# restart: unless-stopped
# container_name: seatable-memcached
# entrypoint: memcached -m 256
# networks:
# - backend-seatable-net
您还需要更新配置文件,
去
除
conf/dtable_web_settings.py
中的
CACHES
、
COMPRESS_CACHE_BACKEND
配置项
:
#CACHES = {
# 'default': {
# 'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
# 'LOCATION': 'memcached',
# },
# 'locmem': {
# 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
# },
#}
#COMPRESS_CACHE_BACKEND = 'locmem'
然后添加新的
CACHES
配置
项
:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://redis:6379',
}
}
如果您使用了 S3 存储,您还需要去除 conf/seafile.conf 中的
memcached
配置项:
#[memcached]
#memcached_options = --SERVER=memcached --POOL-MIN=10 --POOL-MAX=100
然后为 S3 存储
添加 redis 配
置项:
[redis]
redis_host = redis
redis_port = 6379
# size of connection pool to redis, default is 100
max_connections = 100
最后重新启动 SeaTable:
docker compose down
docker compose up -d
5.1
Python 运行器
相关镜像升级
SEATABLE_SCHEDULER_IMAGE=seatable/seatable-python-scheduler:4.1.0
SEATABLE_STARTER_IMAGE=seatable/seatable-python-starter:4.1.0
SEATABLE_RUNNER_IMAGE=seatable/seatable-python-runner:4.1.1
日志输出
升级到 5.1 后,python-scheduler 和 python-starter 服务支持将日志输出到标准输出,使用环境变量控制
在 python-pipeline.yml 中增加环境变量
services:
python-scheduler:
image: ${SEATABLE_SCHEDULER_IMAGE:-seatable/seatable-python-scheduler:latest}
restart: unless-stopped
container_name: python-scheduler
environment:
...
- LOG_TO_STDOUT=${SEATABLE_PYTHON_PIPELINE_LOG_TO_STDOUT:-false}
python-starter:
image: ${SEATABLE_STARTER_IMAGE:-seatable/seatable-python-starter:latest}
restart: unless-stopped
container_name: python-starter
environment:
...
- LOG_TO_STDOUT=${SEATABLE_PYTHON_PIPELINE_LOG_TO_STDOUT:-false}
如果想将日志输出到容器的标准输出中需要同时在 .env 中增加配置
SEATABLE_PYTHON_PIPELINE_LOG_TO_STDOUT=true
脚本容器
seatable-api 升级到了 2.8.2 增加两个库
seatable-api==2.8.2
pdfmerge
pillow-heif
且 5.1 后脚本在容器中以非 root 用户运行
4.4
api-gateway
自 4.4 版本开始,我们添加了 API-Gateway 组件,默认开启。
API-Gateway
整合了 dtable-db 和 dtable-server 的 API ,让 API 接口更加简单和一致。
升级的时候,你需要手工为 nginx.conf 添加以下内容
location /api-gateway/ {
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://127.0.0.1:7780/;
proxy_redirect off;
proxy_set_header Host $http_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;
proxy_hide_header Access-Control-Allow-Origin;
proxy_hide_header Access-Control-Allow-Methods;
proxy_hide_header Access-Control-Allow-Headers;
access_log /opt/nginx-logs/api-gateway.access.log seatableformat;
error_log /opt/nginx-logs/api-gateway.error.log;
}
total_cache_size
Python 运行器
运行器相关镜像需要更新到 3.1.x,修改 .env 文件并重启
SEATABLE_SCHEDULER_IMAGE=seatable/seatable-python-scheduler:3.1.0
SEATABLE_STARTER_IMAGE=seatable/seatable-python-starter:3.1.1
SEATABLE_RUNNER_IMAGE=seatable/seatable-python-runner:3.1.1
4.3
自 4.3 版本开始,我们使用了新的方法部署 SeaTable 和 Python 运行器。其中最主要的差别在于
-
新版使用 .env 文件来存储初始化配置所需的变量
-
新版 docker 启动后自动运行数据库升级语句和启动服务,不再需要手工操作
您可以选择继续使用旧的部署方式升级 SeaTable 4.3 (指使用旧版的 docker-compose.yml 文件),也可以手工迁移到新的部署方式 (指使用新版的 docker-compose.yml 和 .env 文件)。
Python 运行器必须使用新的部署方式。
继续使用旧的部署方式升级 SeaTable
运行以下命令获得SeaTable的最新版本.
# 开发者版
docker pull seatable/seatable-developer:latest
# 企业版
docker pull docker.seafile.top/seafileltd/seatable-enterprise:latest
停止当前运行的SeaTable容器
docker compose down
然后修改 docker-compose.yml 中的标签, 并重新启动一个新的SeaTable容器
docker compose up -d
升级数据库
docker exec -it seatable /bin/bash # 登录到 SeaTable 容器. 然后执行upgrade语句
seatable.sh upgrade-sql 4.3
SeaTable 容器将自动启动服务,无需手工操作。
使用新的部署方式升级 SeaTable
您需要下载新的 .env 和 docker-compose.yml 文件,然后根据旧的配置修改 .env 和 docker-compose.yml 文件。
特别注意需要修改 .env 中的
-
SeaTable 数据的卷目录(SEATABLE_VOLUMES)
-
MySQL 数据的卷目录(SEATABLE_MYSQL_VOLUMES)
-
MySQL 的 host 改为 db(SEATABLE_MYSQL_DB_HOST)
-
MySQL 的 root 的密码(SEATABLE_MYSQL_ROOT_PASSWORD)
-
许可证文件(SEATABLE_LICENSE)
启动 SeaTable 容器
docker compose up -d
SeaTable 容器将自动升级数据库,自动启动服务,无需手工操作。
升级 Python 运行器
迁移到新版 Python 运行器的重点在于迁移已有的数据库数据。
备份 Python 运行器数据库数据到主机
/opt/seatable-faas-scheduler/mysql-data/scheduler.sql
docker exec -it seatable-faas-scheduler-mysql bash
/usr/bin/mysqldump -u root -p --opt faas_scheduler > /var/lib/mysql/scheduler.sql
停止当前 Python 运行器
cd /opt/seatable-python-runner
./stop.sh
cd /opt/seatable-faas-scheduler
docker compose down
如果和 SeaTable 部署在同一台机器上
在 SeaTable mysql 中导入Python 运行器数据库数据
# 主机上复制数据
cp /opt/seatable-faas-scheduler/mysql-data/scheduler.sql /opt/seatable/mysql-data/scheduler.sql
# mysql 容器中导入数据
docker exec -it seatable-mysql bash
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS scheduler";
mysql -u root -p scheduler </var/lib/mysql/scheduler.sql
# scheduler 容器中升级数据库表
docker exec -it python-scheduler bash
mysql -h db -u root -p scheduler </opt/scheduler/upgrade/2.7.0.sql
如果在单独一台机器上部署
导入数据库数据
# 主机上复制数据
cp /opt/seatable-faas-scheduler/mysql-data/scheduler.sql /opt/seatable-python-pipeline/mysql-data/scheduler.sql
# mysql 容器中导入数据
docker exec -it python-pipeline-mysql bash
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS scheduler";
mysql -u root -p scheduler </var/lib/mysql/scheduler.sql
# scheduler 容器中升级数据库表
docker exec -it python-scheduler bash
mysql -h db -u root -p scheduler </opt/scheduler/upgrade/2.7.0.sql
最后重启 Python 运行器
docker compose down
docker compose up -d
4.2
要开启新版组织架构功能,在
dtable_web_settings.py
中增加配置
ENABLE_ADDRESSBOOK_V2 = True
4.0
增加了以下的可配置项目
1
)
回收站自动清空时间间隔,在 dtable_web_settings.py 中增加配置,默认为 30天
TRASH_CLEAN_AFTER_DAYS = 30
2
)
可以配置默认的 Seafile 服务器,这样用户在第三方账号中选择对接 Seafile 的时候默认会填写这个配置的 Seafile 服务器的地址。在
dtable_web_settings.py
中增加配置
DEFAULT_SEAFILE_SERVER = 'https://cloud.seafile.com/'
此外,简化了和 Seafile 的对接,不再需要在 Seafile 中开启跨域支持。
3
)
简化了增加 Web API 速率控制的配置项,在
dtable_web_settings.py
中
API_THROTTLE_RATES = {
'ping': '3000/minute',
'anon': '60/minute',
'user': '3000/minute',
'sync_common_dataset': '60/minute',
'password_reset': '10/minute',
'org-admin': '1000/day',
'app': '1000/minute',
'import': '20/minute', # 限制导入excel或csv文件到表格的速率
'export': '20/minute', # 限制导出base为dtable文件以及导出视图或表格为excel文件的速率
}
4
)
企业版 LDAP 支持 SASL 认证,dtable_web_settings.py 中增加了三个配置项
ENABLE_SASL = True
SASL_MECHANISM = 'DIGEST-MD5'
SASL_AUTHC_ID_ATTR = 'cn'
3.5
1
)
禁止用户创建个人表格,在 dtable_web_settings.py 中增加配置, 默认为 False
DISABLE_ADDING_PERSONAL_BASES = False
2
)
自定义颜色定制, 在 dtable_web_settings.py 中增加配置, 适用于表格中的着色规则,如下:
CUSTOM_COLORS = [
{'color': '#F5C043', 'text_color': '#212529'}, # color 背景颜色, text_color 文本颜色
{'color': '#3064BC', 'text_color': '#FFFFFF'},
]
3
)
API list rows 返回行数限制, 在 dtable_server_config.json 中设置, 默认为 1000
{
"rows_api_max_limit": 1000,
}
3.2
数据迁移
[
建议执行], 把 base 数据从 seaf-server中迁移至
dtable-storage-server
中, 需要配置
dtable-storage-sever
组件, 参考 3.0 版本的升级步骤。
此步骤适用于使用过 3.0 之前版本的 seaTable 用户, 直接部署 3.0+ 版本的用户可忽略。
-
- -list : 列出需要迁移的base, 列出前 10 个
-
- -migrate: 制定需要迁移的Base数量
-
- -backup-folder: 制定备份文件夹, 不指定会给一个默认备份路径
#列出数据
docker exec -d seatable /templates/migrate_bases.sh --list
#迁移 10 个 base(备份文件夹有默认值)
docker exec -d seatable /templates/migrate_bases.sh --migrate 10
#迁移 10 个 base,并指定备份文件夹
docker exec -d seatable /templates/migrate_bases.sh --migrate 10 --backup-folder /shared/migrate-backup/
3.1
没有额外的升级步骤。
如果需要开启通用外部应用(目前只针对企业版),那么需要在 dtable_web_settings.py 中增加设置项。
ENABLE_UNIVERSAL_APP = True
3.0
3.0 版增加了一个额外的组件
dtable-storage-server
,提供了性能更好的表格数据的持久化保存。SeaTable 中一个表格保存为一个文件,每 5 分钟自动保存一次。在原来的版本中,这个文件存在 seaf-server 组件中,但是 seaf-server 会给每一次保存保留一个版本,这样会占用比较多的磁盘空间。新的版本中,每 24 小时生成历史镜像的时候才会真正保存一个历史版本,这样节省了空间。
dtable-storage-server
是对传统文件系统、对象存储的一个简单的抽象封装。
你需要做一些手工的修改:
1、生成
dtable-storage-server.conf
docker exec -d seatable /shared/seatable/scripts/seatable.sh init
生成的配置文件大致如下:
[general]
log_dir = /opt/seatable/logs
temp_file_dir = /tmp/tmp-storage-data
[storage backend]
type = filesystem
path = /opt/seatable/storage-data
[snapshot]
interval = 86400
keep_days = 180
2、在
dtable_web_settings.py
中增加配置,以便让新创建的表格保存到新的存储中,旧的表格依旧从
seaf-server
中读写
NEW_DTABLE_IN_STORAGE_SERVER = True
3、企业版需要在
dtable-db.conf
中增加配置项,以便把归档后的保存在大数据存储中的数据自动备份起来
[backup]
dtable_storage_server_url = http://127.0.0.1:6666
backup_interval = 1440
keep_backup_num = 3
开启工作流功能
在 3.0 版本中工作流功能默认是关闭的,如果需要开启,在
dtable_web_settings.py
中增加以下配置
ENABLE_WORKFLOW = True