Skip to content

Extra upgrade notice


Version 4.0 modifies the data format of the backup of big data storage. Compared with previous upgrades, an additional format migration script needs to be run inside the docker:


If you don't use the enterprise edition or the big data feature, this step can be ignored.

There are some other configuration option changes as below.

System recycle bin automatic clean days. The default is 30 days


The Enterprise Edition enables the Universal app by default. The option ENABLE_UNIVERSAL_APP is removed.

API_THROTTLE_RATES is used to replace the old REST_FRAMEWORK option. API_THROTTLE_RATES is empty by default. You can add your custom THROTTLE_RATE to the option

   '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',   # Limit the rate of API calls for importing via excel/csv
   'export': '20/minute',   # Limit the rate of export base, table and view


3.0 adds another component, dtable-storage-server, which provides better performance for persistent storage of bases. A base in SeaTable is saved as a file, which is automatically saved every 5 minutes. In 2.x, this file saved in seaf-server, but seaf-server will keep a version for each save, which will take up a lot of disk space. In 3.0, only one version is actually saved when a snapshot is generated every 24 hours, which saves space. dtable-storage-server is a simple abstract layer of traditional file system and object storage.

1) For new installation, dtable-storage-server.conf will be generated automatically. For upgrade from 2.x, you need to generate the config file manually

docker exec -d seatable /shared/seatable/scripts/ init

dtable-storage-server.conf is as follows

log_dir = /opt/seatable/logs
temp_file_dir = /tmp/tmp-storage-data

[storage backend]
type = filesystem
path = /opt/seatable/storage-data

interval = 86400
keep_days = 180

2) Add configuration in so that the newly created bases are saved to the dtable-storage-server, and the old bases are still read and written from seaf-server.



3) Enterprise edition needs to add configuration items in dtable-db.conf to automatically back up the archived data in the dtable-db.

In dtable-db.conf

dtable_storage_server_url =
backup_interval = 1440
keep_backup_num = 3


The configuration of the embedded base to other webpages (iframe mode) needs to be modified as follows





In 2.3 version, we made a small change to dtable-db configuration. If you're upgrading from older versions, you have to manually add below option to conf/dtable-db.conf:

log_dir = /shared/seatable/logs


It's also suggested to change the total_cache_size option to a larger value (e.g. 500MB, depending on how much memory you have):

[dtable cache]
total_cache_size = 500


You also need to add access information to dtable-server MySQL database. (You have to change below options based on your conf/dtable-server.json)

host =
user = root
password = mypass
db_name = dtable


DTABLE_DB_URL = 'https://<your-domain>/dtable-db/'

Add dtable-db configuration to nginx.conf

    location /dtable-db/ {
        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;

        access_log      /opt/nginx-logs/dtable-db.access.log seatableformat;
        error_log       /opt/nginx-logs/dtable-db.error.log;


2.1 add another component dtable-db, which is used to provide SQL query API (more features will be provided based on this component). For newly installation, the config file will be generated automatically. For upgrade from 2.0, you need to add the config file manually.

Add a new file conf/dtable-db.conf with the following contents and modify private_key according to your instance:

host =
port = 7777

data_dir = /opt/seatable/db-data

[dtable cache]
private_key = "my private key"
dtable_server_url = ""
expire_time = 600
total_cache_size = 1
clean_cache_interval = 300

The value of private_key should be the same as the value in dtable_server_config.json.

dtable_server_url should be You don't need to modify the value.

Last update: September 11, 2023