From 7530e01203a84d530d50f6fab1dcaf970155034a Mon Sep 17 00:00:00 2001 From: Christoph Dyllick-Brenzinger Date: Thu, 23 Apr 2026 16:30:44 +0200 Subject: [PATCH 01/26] =?UTF-8?q?notizen=20f=C3=BCr=20special=20upgrade=20?= =?UTF-8?q?notices?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/upgrade/extra-upgrade-notice.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/upgrade/extra-upgrade-notice.md b/docs/upgrade/extra-upgrade-notice.md index da978cb9..f8cea0cb 100644 --- a/docs/upgrade/extra-upgrade-notice.md +++ b/docs/upgrade/extra-upgrade-notice.md @@ -4,6 +4,13 @@ description: Version-specific upgrade notices and required configuration changes # Extra upgrade notice +## 6.2 + +- SECRET_KEY aus dtable_web_settings.py in .env +- wenn rollen verwendet, dann: `sed -i "s/'scripts_running_limit'/'scripts_running_limit_per_user'/" /opt/dtable-web/seatable/conf/dtable_web_settings.py` +- env anstelle von configurationsdateien - diese sollten bis auf dtable_web_settings.py sogar weg! +für uns: dokumentation von "kopiere die yml vollständig" in patch-yamls. + ## 6.1 Several Docker image tags have been updated to newer versions. These changes are applied automatically when you pull the latest images. Remember to also update your [plugins](../configuration/plugins.md). From 2525ac6f1ccbdb21ceb17b8d59eb0611351128c8 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 15 May 2026 14:18:07 +0200 Subject: [PATCH 02/26] Update configuration reference --- .../components/dtable-api-gateway.md | 82 ++++++++++++-- docs/configuration/components/dtable-db.md | 102 +++++++++++++++-- .../configuration/components/dtable-events.md | 103 +++++++++++++++++- .../configuration/components/dtable-server.md | 35 +++++- .../components/dtable-storage-server.md | 68 +++++++++--- 5 files changed, 342 insertions(+), 48 deletions(-) diff --git a/docs/configuration/components/dtable-api-gateway.md b/docs/configuration/components/dtable-api-gateway.md index 4e776c95..b0fe30bf 100644 --- a/docs/configuration/components/dtable-api-gateway.md +++ b/docs/configuration/components/dtable-api-gateway.md @@ -1,19 +1,85 @@ --- -description: Complete reference for all api-gateway configuration options in dtable-api-gateway.conf including rate limits and cluster settings. +description: Complete reference for all api-gateway configuration options including rate limits and cluster settings. --- # Configuration of api-gateway -This is a cheat sheet for the [api-gateway](/introduction/architecture.md#api-gateway) configuration file `dtable-api-gateway.conf`. It contains all possible settings that can be configured as well as their default values. +This is a cheat sheet for the possible configuration options of the [api-gateway](../../introduction/architecture.md#api-gateway). +It contains all possible settings that can be configured as well as their default values. -The default values provided here are best-effort (not built automatically). They will be used, if no value is defined at all. - -In the default values below, a value in the form `$XYZ` refers to an environment variable. +The default values provided here are best-effort (not built automatically). They will be used if no value is defined at all. ??? tip "Configuration changes require a restart" New configuration options will only apply after a restart of SeaTable. +## Environment Variables + + + +This section lists the environment variables read by the [api-gateway](../../introduction/architecture.md#api-gateway). + +Please note that these variables are not included in `seatable-server.yml` by default. +We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. +Instead, add an additional `custom-seatable-server.yml` file that includes the additional environment variables: + +```yaml +services: + seatable-server: + environment: + - API_GATEWAY_BASE_API_LIMIT_PER_MINUTE=1000 +``` + +This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. +This ensures that SeaTable upgrades stay seamless. + +### General + +| Environment Variable | Description | Default | +| --------------------------------------- | --------------------------------------------------- | ------- | +| `API_GATEWAY_HOST` | The address the api-gateway listens on. | 0.0.0.0 | +| `API_GATEWAY_PORT` | The port the api-gateway listens on. | 7780 | +| `API_GATEWAY_MAX_BASE_CACHE_SIZE` | Maximum base cache size in MB. | 1024 | +| `API_GATEWAY_BASE_API_LIMIT_PER_MINUTE` | Limits the number of API calls per base per minute. | 500 | + +### dtable-db + +| Environment Variable | Description | Default | +| --------------------- | ------------------------------ | --------------------- | +| `INNER_DTABLE_DB_URL` | URL of the dtable-db instance. | http://127.0.0.1:7777 | + +### dtable-server + +| Environment Variable | Description | Default | +| ------------------------- | ---------------------------------- | --------------------- | +| `INNER_DTABLE_SERVER_URL` | URL of the dtable-server instance. | http://127.0.0.1:5000 | + +### Metrics + +| Environment Variable | Description | Default | +| --------------------------------------- | -------------------------------------------------------------------- | ------- | +| `API_GATEWAY_METRICS_ENABLE_BASIC_AUTH` | Whether basic authentication is enabled for the `/metrics` endpoint. | false | +| `API_GATEWAY_METRICS_USERNAME` | Username for basic authentication for the `/metrics` endpoint. | | +| `API_GATEWAY_METRICS_PASSWORD` | Password for basic authentication for the `/metrics` endpoint. | | + +### Access Logs + +| Environment Variable | Description | Default | +| --------------------------------------------- | ---------------------------------------------------------------------------------------- | ------- | +| `API_GATEWAY_ENABLE_ACCESS_LOG` | Whether the api-gateway logs information about incoming HTTP requests to a Redis stream. | false | +| `API_GATEWAY_ACCESS_LOG_REDIS_STREAM_KEY` | Key of the Redis stream that will contain access log entries. | | +| `API_GATEWAY_ACCESS_LOG_REDIS_STREAM_MAX_LEN` | Maximum length of the Redis stream. | 100000 | + +## Configuration File (Legacy) + +!!! warning "Configuration file is not read anymore from v6.2 onwards" + + `dtable-api-gateway.conf` will not be read anymore after upgrading from v6.1 to v6.2. + + Please migrate any custom settings to the respective [environment variables](#environment-variables). + +The following section describes the structure and possible configuration values of the configuration file `dtable-api-gateway.conf`. + ??? abstract "Notes about the configuration file format" The configuration file uses the **INI format**, which is a simple text-based format for storing configuration data. It consists of sections (denoted by square brackets, e.g., [general]) and key-value pairs. @@ -22,14 +88,10 @@ In the default values below, a value in the form `$XYZ` refers to an environment When dealing with special characters like single quotes `'`, double quotes `"` or the hash symbol `#`, it's generally best to enclose the value in double quotes. -The following options are grouped by their sections. - -## Example configuration +**Example Configuration** SeaTable does not create the `dtable-api-gateway.conf` file by default. The `api-gateway` will use the default configuration values if the file does not exist. -## Available configuration options - ### `[general]` This section contains general settings about api-gateway service. diff --git a/docs/configuration/components/dtable-db.md b/docs/configuration/components/dtable-db.md index a59b7629..df66bba9 100644 --- a/docs/configuration/components/dtable-db.md +++ b/docs/configuration/components/dtable-db.md @@ -1,19 +1,107 @@ --- -description: Complete reference for dtable-db configuration in dtable-db.conf including storage, caching, SQL limits, and big data backup options. +description: Complete reference for dtable-db configuration including storage, caching, SQL limits, and big data backup options. --- # Configuration of dtable-db -This is a cheat sheet for the [dtable-db](/introduction/architecture.md#dtable-db) configuration file `dtable-db.conf`. It contains all possible settings that can be configured as well as their default values. +This is a cheat sheet for the possible configuration options of [dtable-db](../../introduction/architecture.md#dtable-db). +It contains all possible settings that can be configured as well as their default values. -The default values provided here are best-effort (not built automatically). They will be used, if no value is defined at all. It is not necessary the value, that is written in the configuration file on first startup. - -In the default values below, a value in the form `$XYZ` refers to an environment variable. +The default values provided here are best-effort (not built automatically). They will be used if no value is defined at all. ??? tip "Configuration changes require a restart" New configuration options will only apply after a restart of SeaTable. +## Environment Variables + + + +This section lists the environment variables read by [dtable-db](../../introduction/architecture.md#dtable-db). + +Please note that these variables are not included in `seatable-server.yml` by default. +We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. +Instead, add an additional `custom-seatable-server.yml` file that includes the additional environment variables: + +```yaml +services: + seatable-server: + environment: + - DTABLE_DB_BACKUP_KEEP_NUM=100 +``` + +This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. +This ensures that SeaTable upgrades stay seamless. + +### General + +| Environment Variable | Description | Default | +| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `DTABLE_DB_HOST` | The address dtable-db listens on. | 0.0.0.0 | +| `DTABLE_DB_PORT` | The port dtable-db listens on. | 7777 | +| `DTABLE_DB_SLOW_QUERY_THRESHOLD` | If the processing time exceeds this threshold, a slow log will be recorded in addition to the normal log. Unit is in milliseconds. | 1000 | +| `DTABLE_DB_ROW_UPDATE_LIMIT` | Sets the rate or row updates, deletes, and inserts per second and per base. | 5000 | +| `DTABLE_DB_GLOBAL_ROW_UPDATE_LIMIT` | Sets the global rate of row updates, deletes, and inserts per minute, affecting SQL and API operations. | 30000 | +| `DTABLE_DB_QUERY_PER_MINUTE_LIMIT` | Sets the total max. of API calls per minute for the entire system. The default is suitable for most cases. | 50000 | + +### Storage + +These settings define where the database files for bases with activated big data backend are stored and when old data is cleaned: + +| Environment Variable | Description | Default | +| ------------------------------ | ------------------------------------------------------------- | --------------------- | +| `DTABLE_DB_DATA_DIR` | Location of the data directory inside the container. | /opt/seatable/db-data | +| `DTABLE_DB_STORAGE_CLEANUP_AT` | The execution time of clean up deleted data. Format is hh:mm. | 00:00 | + +### DTable Cache + +| Environment Variable | Description | Default | +| ---------------------------- | ---------------------------------- | --------------------- | +| `INNER_DTABLE_SERVER_URL` | URL of the dtable-server instance. | http://127.0.0.1:5000 | +| `DTABLE_DB_TOTAL_CACHE_SIZE` | The base cache size in MB. | 2000 | + +### SQL + +General configuration options of the output of the SQL endpoint: + +| Environment Variable | Description | Default | +| -------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------- | +| `DTABLE_DB_SQL_DEFAULT_RESULT_ROWS` | Maximal number of rows returned by a query if there's no `LIMIT` specified. | 100 | +| `DTABLE_DB_SQL_RESULT_ROWS_HARD_LIMIT` | Maximal number of rows returned in one query (system wide). Overrides any larger `LIMIT` value in a query. | 10000 | +| `DTABLE_DB_SQL_EXEC_COST_HARD_LIMIT` | Maximal execution cost of a query. If the estimated cost of a query exceeds this limit, the query is rejected. | 5000000 | + +### Backup + +These settings allow configuring how data stored inside the big data backend is backed up: + +| Environment Variable | Description | Default | +| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `DTABLE_DB_BACKUP_AT` | The execution time of backup. Format is `hh:mm`. | 02:00 | +| `DTABLE_DB_BACKUP_KEEP_NUM` | The number of backups that will be kept, oldest backups will be removed. | 3 | +| `DTABLE_DB_BACKUP_KEEP_DAYS` | Specifies the retention period for backups in days. Older backups are deleted. Overrides `DTABLE_DB_BACKUP_KEEP_NUM` if set; otherwise, `DTABLE_DB_BACKUP_KEEP_NUM` is used. | 0 | +| `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS` | Specifies daily backup period. After this, only one backup per month is kept. Requires `DTABLE_DB_BACKUP_KEEP_DAYS` to be set and > `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS`. | 0 | + +**FIXME: dtable-storage-server URL is no longer configurable!?** + +!!! warning "Two different backup methods: which should I choose?" + + SeaTable offers two backup approaches: + + - The first uses `DTABLE_DB_BACKUP_KEEP_NUM`, creating daily backups whenever changes were made and retaining a fixed number of the most recent ones, deleting the oldest when the limit is reached. Note that no new backup will be created if no changes were made to a base. This is the default option. + + - The second approach, using `DTABLE_DB_BACKUP_KEEP_DAYS` and `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS`, offers a tiered retention strategy. + It creates daily backups for the recent period specified by `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS`, then switches to monthly backups for the older period. + This method provides detailed recent backups and efficient long-term storage, balancing data granularity with space conservation. + For example, setting `DTABLE_DB_BACKUP_KEEP_DAYS=180` and `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS=7` would keep daily backups for the past week, then monthly backups for the past six months (except for the past week). + +## Configuration File (Legacy) + +!!! warning "Configuration file is not read anymore from v6.2 onwards" + + `dtable-db.conf` will not be read anymore after upgrading from v6.1 to v6.2. + + Please migrate any custom settings to the respective [environment variables](#environment-variables). + ??? abstract "Notes about the configuration file format" The configuration file uses the **INI format**, which is a simple text-based format for storing configuration data. It consists of sections (denoted by square brackets, e.g., [general]) and key-value pairs. @@ -24,7 +112,7 @@ In the default values below, a value in the form `$XYZ` refers to an environment The following options are grouped by their sections. -## Example configuration +**Example Configuration** This is a typical configuration file, created automatically on the first startup by SeaTable. @@ -45,8 +133,6 @@ dtable_storage_server_url = "http://127.0.0.1:6666" keep_backup_num = 3 ``` -## Available configuration options - ### `[general]` This section contains general settings about `dtable-db` service. diff --git a/docs/configuration/components/dtable-events.md b/docs/configuration/components/dtable-events.md index 548afc7e..0cc69fd8 100644 --- a/docs/configuration/components/dtable-events.md +++ b/docs/configuration/components/dtable-events.md @@ -4,11 +4,10 @@ description: Configure dtable-events for automations, email notifications, LDAP # Configuration of dtable-events -This is a cheat sheet for the possible configuration options of [dtable-events](/introduction/architecture.md#dtable-events). It contains all possible settings that can be configured as well as their default values. +This is a cheat sheet for the possible configuration options of [dtable-events](../../introduction/architecture.md#dtable-events). +It contains all possible settings that can be configured as well as their default values. -The default values provided here are best-effort (not built automatically). They will be used, if no value is defined at all. It is not necessary the value, that is written in the configuration file on first startup. - -In the default values below, a value in the form `$XYZ` refers to an environment variable. +The default values provided here are best-effort (not built automatically). They will be used if no value is defined at all. ??? tip "Configuration changes require a restart" @@ -16,7 +15,9 @@ In the default values below, a value in the form `$XYZ` refers to an environment ## Environment Variables -This section lists the environment variables read by [dtable-events](/introduction/architecture.md#dtable-events). + + +This section lists the environment variables read by [dtable-events](../../introduction/architecture.md#dtable-events). Please note that these variables are not included in `seatable-server.yml` by default. We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. @@ -42,6 +43,67 @@ This ensures that SeaTable upgrades stay seamless. By default, these settings will limit a single team to 25% of the available automation running time (calculated by `AUTOMATION_WORKERS * AUTOMATION_RATE_LIMIT_WINDOW_SECS`) within 5 minutes. +### Common Dataset Syncer + +SeaTable runs every hour this event to check for pending dataset syncs. The job processes datasets that need syncing based on their interval (per_day, per_hour) and validity. + +| Environment Variable | Description | Default | +| ------------------------------- | --------------------------------------------- | ------- | +| `COMMON_DATASET_SYNCER_ENABLED` | Enables or disables the common dataset syncer | true | + +### Database Cleanup + +**Enabled** by default since v6.2. + +This setting controls whether SeaTable runs automated database cleanup tasks at 00:30 every day. +Enabling this task ensures that your database stays lean and performs well. It also prevents the server from running out of disk space, since operation logs can take up quite a lot of space. + +In addition, the retention periods for the different database tables can be customized. +Setting any value to `0` or `-1` causes the cleanup task to be skipped for the corresponding database table. + +| Environment Variable | Description | Default | +| --------------------------------------------------- | -------------------------------------------------------------------------- | ------- | +| `CLEAN_DB_ENABLED` | Enables the automated database cleanup tasks | true | +| `CLEAN_DB_KEEP_DTABLE_SNAPSHOT_DAYS` | Retention period for snapshot entries in the database (in days) | 365 | +| `CLEAN_DB_KEEP_ACTIVITIES_DAYS` | Retention period for activities (in days) | 30 | +| `CLEAN_DB_KEEP_OPERATION_LOG_DAYS` | Retention period for operation log entries (in days) | 14 | +| `CLEAN_DB_KEEP_DELETE_OPERATION_LOG_DAYS` | Retention period for delete operations in the operation log (in days) | 30 | +| `CLEAN_DB_KEEP_DTABLE_DB_OP_LOG_DAYS` | Retention period for operation log entries inserted by dtable-db (in days) | 30 | +| `CLEAN_DB_KEEP_NOTIFICATIONS_USERNOTIFICATION_DAYS` | Retention period for user notifications (in days) | 30 | +| `CLEAN_DB_KEEP_DTABLE_NOTIFICATIONS_DAYS` | Retention period for base notifications (in days) | 30 | +| `CLEAN_DB_KEEP_SESSION_LOG_DAYS` | Retention period for session log entries (in days) | 30 | +| `CLEAN_DB_KEEP_AUTO_RULES_TASK_LOG_DAYS` | Retention period for automation rule logs (in days) | 30 | +| `CLEAN_DB_KEEP_USER_ACTIVITY_STATISTICS_DAYS` | Retention period for user activity statistics (in days) | 0 | +| `CLEAN_DB_KEEP_DTABLE_APP_PAGES_OPERATION_LOG_DAYS` | Retention period for app pages operation log entries (in days) | 14 | +| `CLEAN_DB_KEEP_EMAIL_SENDING_LOG_DAYS` | Retention period for log entries regarding sent emails (in days) | 30 | +| `CLEAN_DB_KEEP_SYSADMIN_EXTRA_USERLOGINLOG_DAYS` | Retention period for login logs (in days) | 30 | + +### Email Notices + +SeaTable runs this task every hour to send base email notifications for base updates to the users. It also generates the log file `dtable_updates_sender.log`. + +| Environment Variable | Description | Default | +| ---------------------- | ------------------------------------------------------------ | ------- | +| `EMAIL_SENDER_ENABLED` | Enables or disables the email notifications for base updates | true | + +### Email Syncer + +SeaTable runs this event at the 30th minute of every hour. The job processes email sync tasks defined in a base by the user. + +| Environment Variable | Description | Default | +| -------------------------- | ---------------------------------------------------------------- | ------- | +| `EMAIL_SYNCER_ENABLED` | Enables or disables the email syncer | true | +| `EMAIL_SYNCER_MAX_WORKERS` | Maximum number of worker threads for processing email sync tasks | 5 | + +### LDAP Sync + +SeaTable is able to sync LDAP accounts. This requires additional settings in `dtable_web_settings.py`. Please refer to [LDAP Authentication](../authentication/ldap.md). + +| Environment Variable | Description | Default | +| -------------------- | ---------------------------------------------------------------------------------------- | ------- | +| `LDAP_SYNC_ENABLED` | Enables or disables the LDAP sync | false | +| `LDAP_SYNC_INTERVAL` | Specifies the interval at which the LDAP synchronization process should run (in seconds) | 3600 | + ### PDF Generation | Environment Variable | Description | Default | @@ -49,7 +111,36 @@ By default, these settings will limit a single team to 25% of the available auto | `CONVERT_PDF_BROWSERS` | Number of browser processes started to generate PDF files | 2 | | `CONVERT_PDF_SESSIONS_PER_BROWSER` | Number of sessions per browser instance | 3 | -## Configuration File +### Virus Scan + +**Disabled** by default. + +This section configures how files are scanned for viruses: + +- Whether scanning is enabled +- The command used to scan files +- Return codes indicating infected or clean files +- Limits on file size and extensions to skip +- Concurrency settings + +| Parameter | Description | Default | +| ---------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------- | +| `VIRUS_SCAN_ENABLED` | Enables or disables virus scanning | false | +| `VIRUS_SCAN_SCAN_COMMAND` | Command used for virus scanning (e.g. `clamscan`) | | +| `VIRUS_SCAN_VIRUS_CODE` | Return codes indicating a file is infected (e.g. 0) | | +| `VIRUS_SCAN_NONVIRUS_CODE` | Return codes indicating a file is clean (e.g. 1) | | +| `VIRUS_SCAN_SCAN_INTERVAL` | The interval at which the virus scan runs (in minutes) | 60 | +| `VIRUS_SCAN_SCAN_SIZE_LIMIT` | Maximum file size to scan (in MB); larger files are skipped | 20 | +| `VIRUS_SCAN_SCAN_SKIP_EXT` | Comma-separated list of file extensions to exclude from scanning | `.bmp,.gif,.ico,.png,.jpg,.mp3,.mp4,.wav,.avi,.rmvb,.mkv` | +| `VIRUS_SCAN_THREADS` | Number of threads for parallel scanning | 4 | + +## Configuration File (Legacy) + +!!! warning "Configuration file is not read anymore from v6.2 onwards" + + `dtable-events.conf` will not be read anymore after upgrading from v6.1 to v6.2. + + Please migrate any custom settings to the respective [environment variables](#environment-variables). The following section describes the structure and possible configuration values of the configuration file `dtable-events.conf`. diff --git a/docs/configuration/components/dtable-server.md b/docs/configuration/components/dtable-server.md index 870f7e34..aab8c5e6 100644 --- a/docs/configuration/components/dtable-server.md +++ b/docs/configuration/components/dtable-server.md @@ -4,11 +4,10 @@ description: Complete reference for dtable-server configuration including row li # Configuration of dtable-server -This is a cheat sheet for the possible configuration options of [dtable-server](/introduction/architecture.md#dtable-server). It contains all possible settings that can be configured as well as their default values. +This is a cheat sheet for the possible configuration options of [dtable-server](../../introduction/architecture.md#dtable-server). +It contains all possible settings that can be configured as well as their default values. -The default values provided here are best-effort (not built automatically). They will be used, if no value is defined at all. It is not necessary the value, that is written in the configuration file on first startup. - -In the default values below, a value in the form `$XYZ` refers to an environment variable. +The default values provided here are best-effort (not built automatically). They will be used if no value is defined at all. ??? tip "Configuration changes require a restart" @@ -16,7 +15,9 @@ In the default values below, a value in the form `$XYZ` refers to an environment ## Environment Variables -This section lists the environment variables read by [dtable-server](/introduction/architecture.md#dtable-server). + + +This section lists the environment variables read by [dtable-server](../../introduction/architecture.md#dtable-server). Please note that these variables are not included in `seatable-server.yml` by default. We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. @@ -38,7 +39,29 @@ This ensures that SeaTable upgrades stay seamless. | --------------------------------------- | -------------------------------------------------------------------------- | ------- | | `AUTOMATION_RATE_LIMIT_PER_BASE_MINUTE` | Limits the number of automations that can be triggered per base per minute | 1000 | -## Configuration File +### Persistence + +**FIXME: SAVE_INTERVAL cannot be configured through ENV** + +### Service URLs + +**FIXME: Service URLs cannot be configured through ENV** + +### Row Limits + +**FIXME: Row limits cannot be configured through ENV** + +### Base Size Limit + +**FIXME: Base size limit cannot be configured through ENV** + +## Configuration File (Legacy) + +!!! warning "Configuration file is not read anymore from v6.2 onwards" + + `dtable_server_config.json` will not be read anymore after upgrading from v6.1 to v6.2. + + Please migrate any custom settings to the respective [environment variables](#environment-variables). The following section describes the structure and possible configuration values of the configuration file `dtable_server_config.json`. diff --git a/docs/configuration/components/dtable-storage-server.md b/docs/configuration/components/dtable-storage-server.md index 98a5e63d..08756bfb 100644 --- a/docs/configuration/components/dtable-storage-server.md +++ b/docs/configuration/components/dtable-storage-server.md @@ -4,11 +4,10 @@ description: Configure dtable-storage-server for filesystem or S3 storage backen # Configuration of dtable-storage-server -This is a cheat sheet for the possible configuration options of [dtable-storage-server](/introduction/architecture.md#dtable-storage-server). It contains all possible settings that can be configured as well as their default values. +This is a cheat sheet for the possible configuration options of [dtable-storage-server](../../introduction/architecture.md#dtable-storage-server). +It contains all possible settings that can be configured as well as their default values. -The default values provided here are best-effort (not built automatically). They will be used, if no value is defined at all. It is not necessary the value, that is written in the configuration file on first startup. - -In the default values below, a value in the form `$XYZ` refers to an environment variable. +The default values provided here are best-effort (not built automatically). They will be used if no value is defined at all. ??? tip "Configuration changes require a restart" @@ -16,7 +15,9 @@ In the default values below, a value in the form `$XYZ` refers to an environment ## Environment Variables -This section lists the environment variables read by [dtable-storage-server](/introduction/architecture.md#dtable-storage-server). + + +This section lists the environment variables read by [dtable-storage-server](../../introduction/architecture.md#dtable-storage-server). Please note that these variables are not included in `seatable-server.yml` by default. We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. @@ -32,6 +33,31 @@ services: This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. This ensures that SeaTable upgrades stay seamless. +### General + +| Environment Variable | Description | Default | +| --------------------- | --------------------------------------------- | ------- | +| `STORAGE_SERVER_HOST` | The address dtable-storage-server listens on. | 0.0.0.0 | +| `STORAGE_SERVER_PORT` | The port dtable-storage-server listens on. | 6666 | + +### Storage Backend + +| Environment Variable | Description | Default | +| ----------------------------- | --------------------------------------------------------------- | ---------- | +| `STORAGE_SERVER_BACKEND_TYPE` | The type of storage backend. Options are `filesystem` and `s3`. | filesystem | + +Depending on the chosen storage backend, there are additional settings: + +#### Filesystem Backend + +| Environment Variable | Description | Default | +| ------------------------ | -------------------------------- | -------------------------- | +| `STORAGE_SERVER_FS_PATH` | The filepath of storage backend. | /opt/seatable/storage-data | + +#### S3 Backend + +Please refer to the [S3 docs](../../installation/advanced/s3.md). + ### Snapshots | Environment Variable | Description | Default | @@ -41,7 +67,13 @@ This ensures that SeaTable upgrades stay seamless. | `STORAGE_SERVER_SNAPSHOT_KEEP_DAYS` | Specifies the snapshot retention period in days. Older snapshots are deleted. | 180 | | `STORAGE_SERVER_SNAPSHOT_KEEP_FREQUENCY_DAYS` | Specifies daily snapshot period for changed bases. After this, only one snapshot per month is kept. Default is 0 (always daily). Requires `STORAGE_SERVER_SNAPSHOT_KEEP_DAYS` to be set and > `STORAGE_SERVER_SNAPSHOT_KEEP_FREQUENCY_DAYS`. | 0 | -## Configuration File +## Configuration File (Legacy) + +!!! warning "Configuration file is not read anymore from v6.2 onwards" + + `dtable-storage-server.conf` will not be read anymore after upgrading from v6.1 to v6.2. + + Please migrate any custom settings to the respective [environment variables](#environment-variables). ??? abstract "Notes about the configuration file format" @@ -86,8 +118,8 @@ This section contains general settings about the `dtable-storage-server` service This section is used to configure the storage backend. -| Parameter | Description | Default | -| --------- | --------------------------------------------------------------- | ----------- | +| Parameter | Description | Default | +| --------- | --------------------------------------------------------------- | ------------ | | `type` | The type of storage backend. Options are `filesystem` and `s3`. | `filesystem` | Depending on the chosen storage backend, there are additional settings: @@ -100,16 +132,16 @@ Depending on the chosen storage backend, there are additional settings: #### S3 Storage Backend -| Parameter | Description | Default | -| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| `bucket` | The bucket name for the S3 backend. | | -| `key_id` | The access key id for the bucket. | | -| `key` | The secret access key for the bucket. | | -| `use_v4_signature` | Whether to use v4 signature. For a S3-compatible storage, it should be `false`. | | -| `aws_region` | The AWS region (only when v4 signature is used). | | -| `host` | The host address of S3 backend. Required for S3-compatible storage. Optional for AWS S3, but can be set to the endpoint you use. | | -| `path_style_request` | Whether to use path style requests. For a S3-compatible storage, it should be `true`. | | -| `use_https` | Whether to use https. | | +| Parameter | Description | Default | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `bucket` | The bucket name for the S3 backend. | | +| `key_id` | The access key id for the bucket. | | +| `key` | The secret access key for the bucket. | | +| `use_v4_signature` | Whether to use v4 signature. For a S3-compatible storage, it should be `false`. | | +| `aws_region` | The AWS region (only when v4 signature is used). | | +| `host` | The host address of S3 backend. Required for S3-compatible storage. Optional for AWS S3, but can be set to the endpoint you use. | | +| `path_style_request` | Whether to use path style requests. For a S3-compatible storage, it should be `true`. | | +| `use_https` | Whether to use https. | | | `sse_c_key` | Use [server-side encryption with customer-provided keys](../../installation/advanced/s3-encryption.md) (SSE-C). This setting is optional. | | ### `[snapshot]` From c38f1381dd68b603e8d67de7b469f0b50588f936 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 15 May 2026 15:51:55 +0200 Subject: [PATCH 03/26] Document environment variables for dtable-db metrics --- docs/configuration/components/dtable-db.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/configuration/components/dtable-db.md b/docs/configuration/components/dtable-db.md index df66bba9..0f827ced 100644 --- a/docs/configuration/components/dtable-db.md +++ b/docs/configuration/components/dtable-db.md @@ -94,6 +94,14 @@ These settings allow configuring how data stored inside the big data backend is This method provides detailed recent backups and efficient long-term storage, balancing data granularity with space conservation. For example, setting `DTABLE_DB_BACKUP_KEEP_DAYS=180` and `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS=7` would keep daily backups for the past week, then monthly backups for the past six months (except for the past week). +### Metrics + +| Environment Variable | Description | Default | +| ------------------------------------- | -------------------------------------------------------------------- | ------- | +| `DTABLE_DB_METRICS_ENABLE_BASIC_AUTH` | Whether basic authentication is enabled for the `/metrics` endpoint. | false | +| `DTABLE_DB_METRICS_USERNAME` | Username for basic authentication for the `/metrics` endpoint. | | +| `DTABLE_DB_METRICS_PASSWORD` | Password for basic authentication for the `/metrics` endpoint. | | + ## Configuration File (Legacy) !!! warning "Configuration file is not read anymore from v6.2 onwards" From 9fc5f613fea6c13024024704ebff1c6aae196e59 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 18 May 2026 16:32:21 +0200 Subject: [PATCH 04/26] Add customizations guide --- .../components/dtable-api-gateway.md | 15 +-- docs/configuration/components/dtable-db.md | 15 +-- .../configuration/components/dtable-events.md | 15 +-- .../configuration/components/dtable-server.md | 15 +-- .../components/dtable-storage-server.md | 15 +-- docs/configuration/components/nginx.md | 35 ++++-- docs/configuration/customizations.md | 111 ++++++++++++++++++ .../advanced/custom-certificates.md | 23 ++-- .../advanced/database-standalone.md | 23 ++-- .../advanced/python-pipeline-configuration.md | 1 + docs/installation/basic-setup.md | 11 +- docs/installation/components/collabora.md | 12 +- docs/installation/components/gatus.md | 5 +- docs/installation/deployment-approach.md | 5 +- docs/maintenance/logs.md | 23 ++-- docs/maintenance/mariadb-tuning.md | 27 ++--- mkdocs.yml | 1 + 17 files changed, 208 insertions(+), 144 deletions(-) create mode 100644 docs/configuration/customizations.md diff --git a/docs/configuration/components/dtable-api-gateway.md b/docs/configuration/components/dtable-api-gateway.md index b0fe30bf..96804fd5 100644 --- a/docs/configuration/components/dtable-api-gateway.md +++ b/docs/configuration/components/dtable-api-gateway.md @@ -18,20 +18,7 @@ The default values provided here are best-effort (not built automatically). They This section lists the environment variables read by the [api-gateway](../../introduction/architecture.md#api-gateway). - -Please note that these variables are not included in `seatable-server.yml` by default. -We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. -Instead, add an additional `custom-seatable-server.yml` file that includes the additional environment variables: - -```yaml -services: - seatable-server: - environment: - - API_GATEWAY_BASE_API_LIMIT_PER_MINUTE=1000 -``` - -This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. -This ensures that SeaTable upgrades stay seamless. +Please read our guide that explains how you can [customize the configuration](../customizations.md) of your SeaTable instance before you proceed. ### General diff --git a/docs/configuration/components/dtable-db.md b/docs/configuration/components/dtable-db.md index 0f827ced..b91a4259 100644 --- a/docs/configuration/components/dtable-db.md +++ b/docs/configuration/components/dtable-db.md @@ -18,20 +18,7 @@ The default values provided here are best-effort (not built automatically). They This section lists the environment variables read by [dtable-db](../../introduction/architecture.md#dtable-db). - -Please note that these variables are not included in `seatable-server.yml` by default. -We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. -Instead, add an additional `custom-seatable-server.yml` file that includes the additional environment variables: - -```yaml -services: - seatable-server: - environment: - - DTABLE_DB_BACKUP_KEEP_NUM=100 -``` - -This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. -This ensures that SeaTable upgrades stay seamless. +Please read our guide that explains how you can [customize the configuration](../customizations.md) of your SeaTable instance before you proceed. ### General diff --git a/docs/configuration/components/dtable-events.md b/docs/configuration/components/dtable-events.md index 0cc69fd8..9556506a 100644 --- a/docs/configuration/components/dtable-events.md +++ b/docs/configuration/components/dtable-events.md @@ -18,20 +18,7 @@ The default values provided here are best-effort (not built automatically). They This section lists the environment variables read by [dtable-events](../../introduction/architecture.md#dtable-events). - -Please note that these variables are not included in `seatable-server.yml` by default. -We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. -Instead, add an additional `custom-seatable-server.yml` file that includes the additional environment variables: - -```yaml -services: - seatable-server: - environment: - - AUTOMATION_WORKERS=10 -``` - -This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. -This ensures that SeaTable upgrades stay seamless. +Please read our guide that explains how you can [customize the configuration](../customizations.md) of your SeaTable instance before you proceed. ### Automations diff --git a/docs/configuration/components/dtable-server.md b/docs/configuration/components/dtable-server.md index aab8c5e6..74382213 100644 --- a/docs/configuration/components/dtable-server.md +++ b/docs/configuration/components/dtable-server.md @@ -18,20 +18,7 @@ The default values provided here are best-effort (not built automatically). They This section lists the environment variables read by [dtable-server](../../introduction/architecture.md#dtable-server). - -Please note that these variables are not included in `seatable-server.yml` by default. -We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. -Instead, add an additional `custom-seatable-server.yml` file that includes the additional environment variables: - -```yaml -services: - seatable-server: - environment: - - AUTOMATION_RATE_LIMIT_PER_BASE_MINUTE=100 -``` - -This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. -This ensures that SeaTable upgrades stay seamless. +Please read our guide that explains how you can [customize the configuration](../customizations.md) of your SeaTable instance before you proceed. ### Automations diff --git a/docs/configuration/components/dtable-storage-server.md b/docs/configuration/components/dtable-storage-server.md index 08756bfb..d5b5f128 100644 --- a/docs/configuration/components/dtable-storage-server.md +++ b/docs/configuration/components/dtable-storage-server.md @@ -18,20 +18,7 @@ The default values provided here are best-effort (not built automatically). They This section lists the environment variables read by [dtable-storage-server](../../introduction/architecture.md#dtable-storage-server). - -Please note that these variables are not included in `seatable-server.yml` by default. -We recommend that you do not modify the included `*.yml` files since any changes will be removed when upgrading SeaTable. -Instead, add an additional `custom-seatable-server.yml` file that includes the additional environment variables: - -```yaml -services: - seatable-server: - environment: - - STORAGE_SERVER_SNAPSHOT_KEEP_DAYS=720 -``` - -This file then needs to be added to the `COMPOSE_FILE` variable inside your `.env` file. -This ensures that SeaTable upgrades stay seamless. +Please read our guide that explains how you can [customize the configuration](../customizations.md) of your SeaTable instance before you proceed. ### General diff --git a/docs/configuration/components/nginx.md b/docs/configuration/components/nginx.md index b8ccca01..1f8abcb3 100644 --- a/docs/configuration/components/nginx.md +++ b/docs/configuration/components/nginx.md @@ -1,5 +1,4 @@ --- -status: new description: Customize the Nginx configuration for SeaTable Server using custom config files that persist across updates. --- @@ -13,18 +12,32 @@ The reason for this change is that SeaTable updates often require modifications ## Customizing Nginx Configuration -When you update SeaTable, all default files in `/opt/seatable-compose` will be overwritten. This includes all changes that you may do in `nginx.conf` and `seatable-server.yml`. To preserve your custom configurations, follow these steps: +When you update SeaTable, all default files in `/opt/seatable-compose` will be overwritten. +This includes all changes that you may do in `nginx.conf` and `seatable-server.yml`. +You should read our guide that explains how to [customize the configuration](../customizations.md) of your instance before proceeding. -1. **Create Custom Copies:** - Make a copy of the `nginx.conf` and `seatable-server.yml` files, for example as `custom-nginx.conf` and `custom-seatable-server.yml` in your compose folder (`/opt/seatable-compose`). +To preserve your custom configuration settings, follow these steps: -2. **Edit the Custom Files:** - Make any necessary changes to your custom configuration files. - **Note:** All future modifications should be made to these custom files, not the original files. +1. **Create a Copy:** + Make a copy of the `seatable-nginx.conf` file (e.g. `custom-seatable-nginx.conf`) in your compose folder (`/opt/seatable-compose`). -3. **Update the .env File:** - In your `.env` file, update the `COMPOSE_FILES` variable to include your `custom-seatable-server.yml` file. +2. **Edit the Custom File:** + Make any necessary changes to your custom NGINX configuration file. + **Note:** All future modifications should be made to this custom file to ensure that your modifications are preserved across version upgrades. -After making changes, [restart the SeaTable container](../../maintenance/restart-seatable.md) for your changes to take effect. +3. **Mount the Custom Config File:** + Create a `custom-seatable-server.yml` file that contains a volume mount for your custom NGINX file: + ```yaml + services: + seatable-server: + volumes: + - ./custom-seatable-nginx.conf:/etc/nginx/sites-enabled/default + ``` -This ensures that your custom configuration is used instead of the original files. +4. **Update the .env File:** + In your `.env` file, update the `COMPOSE_FILE` variable to include your `custom-seatable-server.yml` file (if this is not already the case). + +5. **Apply the Changes:** + Run `docker compose up -d` inside the directory `/opt/seatable-compose` in a terminal for your changes to take effect. + +This ensures that your custom configuration is used instead of the original file. diff --git a/docs/configuration/customizations.md b/docs/configuration/customizations.md new file mode 100644 index 00000000..8435a513 --- /dev/null +++ b/docs/configuration/customizations.md @@ -0,0 +1,111 @@ +--- +description: Customize the configuration of your SeaTable installation while ensuring that version upgrades stay seamless +--- + +# Customizations + +This page describes how administrators can customize the configuration of a given SeaTable installation while ensuring that future upgrades stay seamless. + +## Context + +The `.yml` files included in the artifact that is downloaded during the installation process already contain `environment:` blocks for the most important configuration settings. +These are listed [here](./overview.md#list-of-available-environment-variables). + +If you need to modify any of these settings, it is sufficient to set/modify these variables directly inside your `.env` file. +There's no need to modify the `.yml` files in order to adjust these settings. + +The `.yml` files included in the release artifact should **never** be modified since any changes made will be overwritten when following the [upgrade guide](../upgrade/upgrade-manual.md). +This is caused by the fact that the `.yml` files in your `/opt/seatable-compose` directory are essentially replaced by the `.yml` files from the release artifact of the SeaTable version that you're upgrading to. + +## Mechanism + +In order to configure additional settings that are not listed on the [overview page](./overview.md#list-of-available-environment-variables), you can (and should) create an additional `custom-seatable-server.yml` file that only contains the customizations that are relevant to your installation. +This has numerous benefits: + +- This file is not overwritten during the upgrade process +- You do not introduce redundancy (i.e. that would be caused by copying the existing `seatable-server.yml` with all of its configuration settings) +- All of the customizations made are easily visible inside a single file + +Simply follow the steps below: + +### Step 1 + +Create `custom-seatable-server.yml` inside `/opt/seatable-compose` on the host. + +The most minimal version of this file looks like this: + +```yaml +services: + seatable-server: +``` + +### Step 2 + +Add `custom-seatable-server.yml` to the `COMPOSE_FILE` variable inside your `.env` file. + +**Example:** + +A minimal SeaTable installation contains the following line inside the `.env` file (located at `/opt/seatable-compose/.env`): + +```ini +COMPOSE_FILE='caddy.yml,seatable-server.yml' +``` + +Now simpli add `custom-seatable-server.yml` to the list of filenames that should be merged by Docker Compose. +Additional filenames should be separated by a comma. + +```ini +COMPOSE_FILE='caddy.yml,seatable-server.yml,custom-seatable-server.yml' +``` + +### Step 3 + +Apply the changes by running the following command inside a terminal: + +```bash +cd /opt/seatable-compose +docker compose up -d +``` + +Docker Compose will merge all of the files specified inside the `COMPOSE_FILE` variable and restart all services whose configuration has changed. +This has an additional advantage: If a service's definition has not changed, it won't be unnecessarily restarted. + +## Examples + +### Adding an Environment Variable + +If you need to configure an additional environment variable that is not included in `seatable-server.yml` by default, you can achieve this by adding the following block inside `custom-seatable-server.yml`: + +```yaml +services: + seatable-server: + environment: + - API_GATEWAY_BASE_API_LIMIT_PER_MINUTE=1000 +``` + +### Adding a Volume Mount + +If you need to mount an additional file/directory (e.g. a custom NGINX config file) into the `seatable-server` container, you can achieve this by adding the following block inside `custom-seatable-server.yml`: + +```yaml +services: + seatable-server: + volumes: + - ./custom-seatable-nginx.conf:/etc/nginx/sites-enabled/default +``` + +## Troubleshooting + +If the merging does not work as expected, you can use `docker compose config` to print the result of the internal merging to the console. +Since this can cause quite a lot of output depending on the number of installed components, you can dump this into a file instead and open this inside a text editor: + +```bash +docker compose config > /tmp/seatable-compose-config.yml +``` + +**Note:** `/tmp/seatable-compose-config.yml` will contain secret values since the `docker compose config` command prints the result of the configuration merging algorithm **after** all variables have been interpolated. + +## Additional Resources + +You can read more about the way multiple configuration files are merged together in the [Compose file reference](https://docs.docker.com/reference/compose-file/merge/). + diff --git a/docs/installation/advanced/custom-certificates.md b/docs/installation/advanced/custom-certificates.md index 5e7eda99..c6e2f1ae 100644 --- a/docs/installation/advanced/custom-certificates.md +++ b/docs/installation/advanced/custom-certificates.md @@ -40,23 +40,25 @@ In the article, we assume that your certificates were saved as `cert.pem` and `k The caddy docker proxy container from [lucaslorentz](https://github.com/lucaslorentz/caddy-docker-proxy) supports dynamic configuration with labels. -It is not recommended to make changes to the provides `seatable-server.yml`. Create a custom yml file and reference it in your .env file instead. -Add the following line to your `custom-seatable-server.yml` to tell caddy to use your custom certificates. The label `caddy.tls` will tell caddy to use your custom certificates. +The provided `seatable-server.yml` file **should not be modified** to ensure that version upgrades stay seamless. +Instead, any customizations should be placed inside a dedicated `custom-seatable-server.yml` file. +Please read our guide that explains how to [customize the configuration](../../configuration/customizations.md) of your SeaTable instance before proceeding. -```bash +This `custom-seatable-server.yml` file needs to contain overrides that advise Caddy to use your custom certificates. +This is achieved through the `caddy.tls` label: + +```yaml # configuration of custom-seatable-server.yml services: seatable-server: - ... labels: caddy: ${SEATABLE_SERVER_HOSTNAME} caddy.tls: "/data/caddy/certs/cert.pem /data/caddy/certs/key.pem" - ... ``` !!! warning "DNS resolution must work inside the container" - If you're using a non-public url like "my-custom-setup.local", you have to make sure, that the docker container can resolve this DNS query. If you don't run your own DNS servers, you have to add `extras_hosts` to your `.yml` file. + If you're using a non-public url like "my-custom-setup.local", you have to make sure, that the docker container can resolve this DNS query. If you don't run your own DNS servers, you have to add `extra_hosts` to your `.yml` file. ## Add certificates to your truststore @@ -69,12 +71,10 @@ This is relevant in two scenarios: To add a certificate, mount the `.crt` file into the container via your `custom-seatable-server.yml`. This works for seatable-server, python-scheduler, and python-starter. -```bash +```yaml services: seatable-server: - ... volumes: - ... - "/opt/caddy/certs/cert.pem:/usr/local/share/ca-certificates/cert.crt" ``` @@ -124,13 +124,12 @@ Restart the `python-starter` with `docker compose up -d` afterwards. To verify, ## Self-signed certificates generated by Caddy Even if it is not recommended, it is possible to ask Caddy to use auto generated self-signed certificates. -This can be achieved by adding these lines to your `custom-seatable-server.yml`. +This can be achieved by adding the following lines to your `custom-seatable-server.yml`: -```bash +```yaml # configuration of custom-seatable-server.yml services: seatable-server: - ... labels: caddy: ${SEATABLE_SERVER_HOSTNAME} caddy.tls: "internal" diff --git a/docs/installation/advanced/database-standalone.md b/docs/installation/advanced/database-standalone.md index d093d40b..6df1682a 100644 --- a/docs/installation/advanced/database-standalone.md +++ b/docs/installation/advanced/database-standalone.md @@ -30,20 +30,25 @@ docker stop mariadb ## Don't start mariadb container -Create a copy of `seatable-server.yml` and rename it to `custom-seatable-server.yml`. -You should remove the `mariadb` service definition and update the `depends_on` declaration for the `seatable-server` service to ensure that it can start up. +To disable the `mariadb` service and patch the `depends_on` declaration for the `seatable-server` service, you should create a `custom-seatable-server.yml` file: -```bash +```yaml services: seatable-server: - depends_on: - mariadb: # < remove - condition: service_healthy # < remove - - mariadb: # remove complete service - ... # with all lines + # Patch depends_on to ensure that seatable-server can start up + # Note: The "!override" syntax requires at least Docker Compose v2.24.4 + depends_on: !override + redis: + condition: service_healthy + + mariadb: + profiles: + - never ``` +Make sure to include this `custom-seatable-server.yml` in the `COMPOSE_FILE` variable in your `.env` file. +You can read our [guide] for more information on how this merging process of multiple configuration files works and the rationale behind it. + ## Update environment variables You should update/set the following environment variables in your `.env` file: diff --git a/docs/installation/advanced/python-pipeline-configuration.md b/docs/installation/advanced/python-pipeline-configuration.md index b39db672..26c0ff67 100644 --- a/docs/installation/advanced/python-pipeline-configuration.md +++ b/docs/installation/advanced/python-pipeline-configuration.md @@ -69,6 +69,7 @@ If your `python-runner` containers require access to an additional host director However, this variable is not part of the `python-pipeline.yml` file by default. You should therefore create an additional `custom-python-pipeline.yml` file with the following contents to extend the default definition of the `python-starter` service. Docker Compose will automatically merge these two definitions together. +You can read [our guide](../../configuration/customizations.md) for more information regarding this topic. ```yaml services: diff --git a/docs/installation/basic-setup.md b/docs/installation/basic-setup.md index 96d930a1..5ad192f7 100644 --- a/docs/installation/basic-setup.md +++ b/docs/installation/basic-setup.md @@ -81,14 +81,11 @@ The expected output should appear as follows. └── zabbix.yml ``` -!!! warning "Don't change the default YML-files" +!!! warning "Don't modify the default YML-files" - Generally, there's no need to make changes to the YML-files. Modifications should only be made by experienced Docker administrators. If you do, it is recommended to duplicate the file(s) first and rename the file(s) because the default yml files are overwritten with the next update. - - ```bash - # create a custom copy - cp n8n.yml custom-n8n.yml - ``` + Generally, there's no need to make changes to the YML-files. Customizations should only be made by experienced Docker administrators. + Please read our guide that describes how the [configuration can be customized](../configuration/customizations.md). + This ensures that version upgrades stay seamless since the default `.yml` files are **overwritten with each upgrade**. #### 2. Add secrets diff --git a/docs/installation/components/collabora.md b/docs/installation/components/collabora.md index 56ddc2ea..70e0d2f4 100644 --- a/docs/installation/components/collabora.md +++ b/docs/installation/components/collabora.md @@ -88,7 +88,17 @@ mkdir /opt/collabora chmod 777 /opt/collabora ``` -Now make a copy of the collabora.yml and uncomment the _volumes_ definition in your `custom-collabora.yml`. +Now create a `custom-collabora.yml` file with the following volume definition: + +```yaml +services: + collabora: + volumes: + - "${COLLABORA_PATH:-/opt/collabora}/logs:/opt/cool/logs/" +``` + +Specifying this override in a separate file and adding `custom-collabora.yml` to the `COMPOSE_FILE` variable inside your `.env` file ensures that your modifications are preserved across version upgrades of SeaTable. +You can read our [guide](../../configuration/customizations.md) for more information regarding this mechanism. ## Advanced: Collabora on a separate host and URL diff --git a/docs/installation/components/gatus.md b/docs/installation/components/gatus.md index 5d8e3cae..181ca905 100644 --- a/docs/installation/components/gatus.md +++ b/docs/installation/components/gatus.md @@ -61,7 +61,8 @@ Each variable is self-explanatory. Gatus uses two configuration files: `/opt/seatable-compose/gatus.yml` and `/opt/seatable-compose/config/gatus-config.yml`. -To ensure your changes persist after updates, create copies of these files (e.g., custom-....yml) and update the references accordingly. +To ensure that your changes persist after updates, you should not modify the original versions of these files. +Instead, we recommend that you create an additional `custom-gatus.yml` file that contains a volume mount which mounts your own version of `gatus-config.yml` into the Gatus container. +Please read our [guide](../../configuration/customizations.md) on how this works before proceeding. For all available configuration options, see the [Gatus GitHub repository](https://github.com/TwiN/gatus). - diff --git a/docs/installation/deployment-approach.md b/docs/installation/deployment-approach.md index 2f47e398..77f975b2 100644 --- a/docs/installation/deployment-approach.md +++ b/docs/installation/deployment-approach.md @@ -24,9 +24,10 @@ Instead of handling one extensive `docker-compose.yml` file, we present a more s Think of the `.env` file as a recipe for your setup and the yml files are like ingredients. -!!! danger "Create copy for custom changes of the yml files" +!!! danger "Do not modify the default `.yml` files" - Generally, there's no need to modify the YAML files. We provide updated YAML files with each new SeaTable version. However, if you wish to make alterations, create a copy and name it something like `custom-.yml`. + The default `.yml` files **should not be modified** since they will be overwritten during the [upgrade process](../upgrade/upgrade-manual.md). + However, if you wish to make alterations, read our guide on how to [customize your installation](../configuration/customizations.md) to ensure that version upgrades stay seamless. You can configure components in the `.env` file, determining which ones to install. Start with essential components like SeaTable Server and Caddy web proxy. diff --git a/docs/maintenance/logs.md b/docs/maintenance/logs.md index 05f2292e..7afdf875 100644 --- a/docs/maintenance/logs.md +++ b/docs/maintenance/logs.md @@ -99,26 +99,17 @@ All relevant configuration files are located in `/templates/logrotate-conf` with ### Customizing Logrotate Configuration -To modify the log rotation settings, you can mount a custom configuration file using Docker Compose. Add the following snippet to your yml-file: +To modify the log rotation settings, you can mount a custom configuration file using Docker Compose. +In order to ensure that this modification is preserved across version upgrades, you should **not** modify the default `.yml` files that we distribute as part of the installation process. +Please read our guide on how to [customize the configuration](../configuration/customizations.md) of your SeaTable instance before proceeding. + +In order to customize the configuration file used by `logrotate`, you can specify a volume mount definition inside a `custom-seatable-server.yml` file: ```yaml services: seatable-server: - image: ... - ... volumes: - - "./logrotate-seatable-custom.conf:/templates/logrotate-conf/seatable:ro" - ... - + - ./logrotate-seatable-custom.conf:/templates/logrotate-conf/seatable:ro ``` -!!! warning "Don't change the default YML-files" - - Avoid making changes directly to `seatable-server.yml`, as this file will be overwritten during updates. Instead, use a separate custom configuration file mounted via Docker Compose. - - ```bash - # create a custom copy - cp seatable-server.yml custom-seatable-server.yml - - # Don't forget to update the filename in your .env - ``` +Do not forget to add this file to the `COMPOSE_FILE` variable inside your `.env` file. diff --git a/docs/maintenance/mariadb-tuning.md b/docs/maintenance/mariadb-tuning.md index 3666d0dc..0fda4e4b 100644 --- a/docs/maintenance/mariadb-tuning.md +++ b/docs/maintenance/mariadb-tuning.md @@ -14,11 +14,11 @@ SeaTable's default MariaDB configuration works well for small installations. For The most impactful setting is `innodb_buffer_pool_size` — the memory area where InnoDB caches table data and indexes. As a rule of thumb, set it to **50–70% of your server's available RAM** after accounting for SeaTable and other services. -| Setting | Default | Recommendation | Purpose | -|---|---|---|---| -| `innodb_buffer_pool_size` | 128M | 50–70% of available RAM | Cache for table data and indexes | -| `innodb_log_file_size` | 48M | 256M | Redo log size, improves write performance | -| `max_connections` | 151 | 200–300 | Max concurrent database connections | +| Setting | Default | Recommendation | Purpose | +| ------------------------- | ------- | ----------------------- | ----------------------------------------- | +| `innodb_buffer_pool_size` | 128M | 50–70% of available RAM | Cache for table data and indexes | +| `innodb_log_file_size` | 48M | 256M | Redo log size, improves write performance | +| `max_connections` | 151 | 200–300 | Max concurrent database connections | ## Apply custom settings @@ -35,17 +35,16 @@ max_connections = 200 ### 2. Mount the configuration file -Create a `custom-mariadb.yml` in `/opt/seatable-compose/`: +Since the default definition of the `mariadb` service inside `seatable-server.yml` [should not be modified](../configuration/customizations.md), you should instead create a file named `custom-mariadb.yml` in `/opt/seatable-compose/` that only contains the configuration override: ```yaml ---- services: mariadb: volumes: - - "./99-mariadb-custom.cnf:/etc/mysql/conf.d/99-mariadb-custom.cnf" + - ./99-mariadb-custom.cnf:/etc/mysql/conf.d/99-mariadb-custom.cnf ``` -Add `custom-mariadb.yml` to the `COMPOSE_FILE` variable in your `.env` file. +Add `custom-mariadb.yml` to the `COMPOSE_FILE` variable in your `.env` file. This ensures that `seatable-server.yml` and `custom-mariadb.yml` are [merged together](../configuration/customizations.md). ### 3. Restart MariaDB @@ -64,8 +63,8 @@ docker exec -it mariadb mariadb -uroot -p${MARIADB_PASSWORD} -e "SHOW VARIABLES ## Sizing examples -| Server RAM | Other services | Recommended `innodb_buffer_pool_size` | -|---|---|---| -| 8 GB | SeaTable only | 2–4G | -| 16 GB | SeaTable + Python Pipeline | 6–8G | -| 32 GB | SeaTable + multiple components | 12–16G | +| Server RAM | Other services | Recommended `innodb_buffer_pool_size` | +| ---------- | ------------------------------ | ------------------------------------- | +| 8 GB | SeaTable only | 2–4G | +| 16 GB | SeaTable + Python Pipeline | 6–8G | +| 32 GB | SeaTable + multiple components | 12–16G | diff --git a/mkdocs.yml b/mkdocs.yml index c2e32106..cc0f39dd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -247,6 +247,7 @@ nav: - Switch authentication: configuration/authentication/auth-switch.md - Configuration: - Overview: configuration/overview.md + - Customizations: configuration/customizations.md - Components: - dtable-api-gateway: configuration/components/dtable-api-gateway.md - dtable-db: configuration/components/dtable-db.md From e6babe80d49f4a00840fd569dad80c2237fc662b Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 18 May 2026 17:36:50 +0200 Subject: [PATCH 05/26] Update Collabora + OnlyOffice configuration --- docs/installation/components/collabora.md | 15 ++++++-- docs/installation/components/onlyoffice.md | 42 ++++++++++++---------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/docs/installation/components/collabora.md b/docs/installation/components/collabora.md index 70e0d2f4..43e3de2e 100644 --- a/docs/installation/components/collabora.md +++ b/docs/installation/components/collabora.md @@ -114,10 +114,21 @@ SEATABLE_SERVER_HOSTNAME= COLLABORA_PORT=443 ``` -Have a look at collabora.yml and uncomment and update the value of `aliasgroup1`. +You'll also have to add an additional `custom-collabora.yml` file that contains the following override: + +```yaml +services: + collabora: + environment: + # Comma-separated list of domains that can access Collabora, e.g. https://cloud.seatable.io + - aliasgroup1="" +``` + +Remember to add this `custom-collabora.yml` file to the `COMPOSE_FILE` variable. ### Configuration of SeaTable server Now update the `dtable_web_settings.py` on your SeaTable Server. -In addition you have to extend the caddy security headers. Add the URL of your Collabora host to the variables `form-action` and `frame-src` in your `custom-seatable-server.yml`. Don't forget to restart all containers. +You'll also have to configure the `COLLABORA_HOSTNAME` variable inside your `.env` file. +This will cause the `Content-Security-Policy` header returned by Caddy to contain the correct values for the Collabora hostname. diff --git a/docs/installation/components/onlyoffice.md b/docs/installation/components/onlyoffice.md index b104798f..6f0b1ab4 100644 --- a/docs/installation/components/onlyoffice.md +++ b/docs/installation/components/onlyoffice.md @@ -81,16 +81,15 @@ If this does not happen, execute `docker compose logs onlyoffice -f` to get more ## Advanced: Custom settings -The following configuration options are only for OnlyOffice experts. You can create and mount a custom configuration file called `local-production-linux.json` to [force some settings](https://helpcenter.onlyoffice.com/docs/installation/docs-developer-configuring.aspx). +The following configuration options are only for OnlyOffice experts. You can create and mount a custom configuration file to [force some settings](https://helpcenter.onlyoffice.com/docs/installation/docs-developer-configuring.aspx). -Create a configuration file in the newly created directory: +Create a configuration file in `/opt/seatable-compose`: ```bash -cd /opt/onlyoffice -nano local-production-linux.json +nano onlyoffice-config.json ``` -Copy the following code block in this file: +Copy the following code block into this file: ```json { @@ -110,17 +109,19 @@ Copy the following code block in this file: } ``` -Mount this config file into your onlyoffice block in your `docker-compose.yml`. +Create `custom-onlyoffice.yml` to mount the config file into the container: ```yaml - volumes: - - /opt/onlyoffice/logs:/var/log/onlyoffice - - /opt/onlyoffice/data:/var/www/onlyoffice/Data - - /opt/onlyoffice/lib:/var/lib/onlyoffice - - /opt/oods/DocumentServer/local-production-linux.json:/etc/onlyoffice/documentserver/local-production-linux.json +services: + onlyoffice: + volumes: + - ./onlyoffice-config.json:/etc/onlyoffice/documentserver/local-production-linux.json ``` -Restart OnlyOffice to load the new configuration. +**Note:** Using a dedicated `.yml` file instead of modifying the default `onlyoffice.yml` file ensures that any modifications are preserved across version upgrades of SeaTable. +You can read our [guide](../../configuration/customizations.md) for detailed information on how this works. + +Add `custom-onlyoffice.yml` to the `COMPOSE_FILE` variable and restart OnlyOffice to load the new configuration: ```bash docker compose up -d @@ -128,7 +129,7 @@ docker compose up -d ## Advanced: OnlyOffice on a separate host and URL -It is not that difficult to install OnlyOffice on a separate host to free the resources of the main server. This manual assumes that onlyoffice will be accessible by a separate public available URL. +It is not that difficult to install OnlyOffice on a separate host to free the resources of the main server. This manual assumes that OnlyOffice will be accessible via a separate public URL. ### Install OnlyOffice @@ -152,20 +153,25 @@ Now execute `docker-compose up -d` and on this server only caddy and OnlyOffice ### Configure SeaTable to use this new OnlyOffice host. -The next step is to tell SeaTable where it can access OnlyOffice. Update the settings in `dtable_web_settings.py` accordingly. Make sure to use the exact same shared secret and use the public available URL of the OnlyOffice server. +The next step is to tell SeaTable where it can access OnlyOffice. Update the settings in `dtable_web_settings.py` accordingly. Make sure to use the exact same shared secret and use the public URL of the OnlyOffice server. + +You'll also have to configure the `ONLYOFFICE_HOSTNAME` variable inside your `.env` file. +This will cause the `Content-Security-Policy` header returned by Caddy to contain the correct values for the OnlyOffice hostname. -In addition you have to extend the caddy security headers. Add the URL of your Onlyoffice host to the variables `script-src-elem` and `frame-src` in your `custom-seatable-server.yml`. Don't forget to restart all containers. +Remember to run `docker compose up -d` in order to apply the changes. ### Use Certificate store If you are working with self signed or low trust certificates, there is an easy way to put your certificates to the onlyoffice container truststore. You can just mount your certificate to the onlyoffice container. -```bash +Create an additional `custom-onlyoffice.yml` file and add this file to the `COMPOSE_FILE` variable. + +The file should contain the following contents: + +```yaml services: onlyoffice: - ... volumes: - ... # mount certificates to onlyoffice container - ./ca-certificates.crt:/var/www/onlyoffice/Data/certs/tls.crt:ro ``` From 26f69129b549f94cd752b575b2524c97e44b61af Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 18 May 2026 18:05:32 +0200 Subject: [PATCH 06/26] Update docs --- docs/configuration/authentication/ldap.md | 38 +++++++++++++------- docs/installation/advanced/metrics.md | 32 ++--------------- docs/installation/components/clamav.md | 44 ++++++++++++++--------- 3 files changed, 54 insertions(+), 60 deletions(-) diff --git a/docs/configuration/authentication/ldap.md b/docs/configuration/authentication/ldap.md index c604de07..0d1431cd 100644 --- a/docs/configuration/authentication/ldap.md +++ b/docs/configuration/authentication/ldap.md @@ -49,8 +49,8 @@ Some tips on how to select LDAP_BASE_DN and LDAP_ADMIN_DN: - To determine your LDAP_BASE_DN attribute, you first need to open the graphical interface of the domain manager and browse your organizational structure. - If you want all users in the system to be able to access SeaTable, you can use 'cn=users,dc=yourdomain,dc=com' as the BASE option (need to replace your domain name). -- If you only want people in a certain department to be able to access, you can limit the scope to a certain OU. You can use the `dsquery` command-line tool to find the DN of the corresponding OU. For example, if the name of the OU is `staffs`, you can run `dsquery ou -name staff`. More information can be found [here](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc770509(v=ws.11)). -- Although AD supports the use of usernames in email address format as `LDAP_ADMIN_DN` such as administrator@example.com, it sometimes does not correctly recognize this format. At this point, you can use `dsquery` to find the DN of the user. For example, if the username is `seatableuser`, run `dsquery user -name seatableuser` to find the user. More information can be found [here](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc725702(v=ws.11)). +- If you only want people in a certain department to be able to access, you can limit the scope to a certain OU. You can use the `dsquery` command-line tool to find the DN of the corresponding OU. For example, if the name of the OU is `staffs`, you can run `dsquery ou -name staff`. More information can be found [here](). +- Although AD supports the use of usernames in email address format as `LDAP_ADMIN_DN` such as administrator@example.com, it sometimes does not correctly recognize this format. At this point, you can use `dsquery` to find the DN of the user. For example, if the username is `seatableuser`, run `dsquery user -name seatableuser` to find the user. More information can be found [here](). The following parameters are also available, but optional: @@ -61,8 +61,8 @@ The following parameters are also available, but optional: | LDAP_USER_ROLE_ATTR | Name of user role in the LDAP server | Attribute name, e.g. `title` | | LDAP_USER_FIRST_NAME_ATTR | First part of the user's SeaTable nickname when nickname is spliced; default value is '' | Attribute name, e.g. `givenName` | | LDAP_USER_LAST_NAME_ATTR | Second part of the user's SeaTable nickname when nickname is spliced; default value is '' | Attribute name, e.g. `sn` | -| LDAP_USER_NAME_REVERSE | Option to reverse order of first name and last name f spliced nickname; default value is `False` | `True` or `False` | -| LDAP_SAML_USE_SAME_UID | Option to allow users to log in via LDAP and SAML using the same username | `True` or `False` | +| LDAP_USER_NAME_REVERSE | Option to reverse order of first name and last name f spliced nickname; default value is `False` | `True` or `False` | +| LDAP_SAML_USE_SAME_UID | Option to allow users to log in via LDAP and SAML using the same username | `True` or `False` | | LDAP_CONTACT_EMAIL_ATTR | Alternative attribute as a mail address when LDAP_LOGIN_ATTR is not `mail`; the attribute overrides the email address imported through LOGIN_ATTR; default value is '' | | | LDAP_EMPLOYEE_ID_ATTR | ID of the employee | Attribute name, e.g. `33` | @@ -80,22 +80,34 @@ To enable LDAP synchronisation (LDAP Sync), LDAP Auth must be configured and the | Parameter | Description | Values | | -------------------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| LDAP_SYNC_GROUP | On/off switch for group sync | `True` or `False` | +| LDAP_SYNC_GROUP | On/off switch for group sync | `True` or `False` | | LDAP_GROUP_MEMBER_ATTR | Attribute used when syncing group members | For most directory servers, the attributes is "member", which is the default value. For "posixGroup", it should be set to "memberUid". | | LDAP_GROUP_MEMBER_UID_ATTR | User attribute set in 'memberUid' option, which is used in "posixGroup"; default value is `uid` | | | LDAP_USER_OBJECT_CLASS | Name of the class used to search for user objects; default value is `person` | | | LDAP_GROUP_OBJECT_CLASS | Name of the class used to search for group objects; default value is `group` | For LDAP: `groupOfNames`, `groupOfUniqueNames`, `posixGroup`
For AD: `group` | | LDAP_GROUP_UUID_ATTR | ...; default value is `ObjectGUID` | For LDAP: refer to https://ldapwiki.com/wiki/Universally%20Unique%20Identifier
For AD: `ObjectGUID` | -| SYNC_GROUP_AS_DEPARTMENT | Option to sync LDAP groups as departments rather than SeaTable groups | `True` or `False` | +| SYNC_GROUP_AS_DEPARTMENT | Option to sync LDAP groups as departments rather than SeaTable groups | `True` or `False` | | LDAP_DEPARTMENT_NAME_ATTR | Name of the department when SYNC_GROUP_AS_DEPARTMENT = True, the default department name is the OU name | Object name, e.g. `description` | -Additionally, the following parameters must be added to `dtable-events.conf`: - -```ini -[LDAP SYNC] -enabled = true -sync_interval = 60 # The unit is seconds -``` +Depending on your SeaTable version, additional settings must be configured: + +=== "SeaTable <= v6.1" + The following parameters must be added to `dtable-events.conf`: + + ```ini + [LDAP SYNC] + enabled = true + sync_interval = 60 # The unit is seconds + ``` +=== "SeaTable v6.2+" + Two environment variables must be configured. + Please read our [guide](../../configuration/customizations.md) that explains how to configure these additional environment variables before proceeding. + + ```ini + LDAP_SYNC_ENABLED=true + # Specified in seconds + LDAP_SYNC_INTERVAL=3600 + ``` ## LDAP and SAML diff --git a/docs/installation/advanced/metrics.md b/docs/installation/advanced/metrics.md index a9eef513..a4c2709d 100644 --- a/docs/installation/advanced/metrics.md +++ b/docs/installation/advanced/metrics.md @@ -21,22 +21,7 @@ In addition, **Gunicorn** and **NGINX** can be configured to expose metrics in a ### api-gateway -You can enable the `/metrics` endpoint and configure the basic auth credentials by adding the following configuration block inside `/opt/seatable-server/seatable/conf/dtable-api-gateway.conf`: - -```ini -[metrics] -enable_basic_auth = true -username = "" -password = "" -``` - -**Note:** SeaTable does not create the `dtable-api-gateway.conf` configuration file by default. If it does not exist yet, simply create it. - -Remember to restart SeaTable by running the following command: - -```bash -docker restart seatable-server -``` +Please refer to the [api-gateway docs](../../configuration/components/dtable-api-gateway.md#metrics) for instructions on how to enable metrics. You can test the metrics endpoint by running the following command on the host: @@ -73,20 +58,7 @@ curl -sS https://$SEATABLE_SERVER_HOSTNAME/api-gateway/metrics --user " Date: Tue, 19 May 2026 13:28:08 +0200 Subject: [PATCH 07/26] Update docs --- .../advanced/additional-subdomains.md | 39 ++++++++----------- docs/installation/advanced/s3-encryption.md | 17 +++++++- docs/installation/advanced/s3.md | 11 +++++- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/docs/installation/advanced/additional-subdomains.md b/docs/installation/advanced/additional-subdomains.md index af731c5e..07bcf397 100644 --- a/docs/installation/advanced/additional-subdomains.md +++ b/docs/installation/advanced/additional-subdomains.md @@ -10,7 +10,7 @@ By default SeaTable and all additional components use one single public availabl Look at `n8n.yml` to get an understanding of how caddy is configured to make n8n accessable via port 6231. -```bash +```yaml services: caddy: ports: @@ -29,28 +29,21 @@ In the n8n.yml we add an additional port to the caddy container by adding an add The following example assumes that you want to access n8n not anymore via the port 6231 but with the URL `n8n.example.com`. -1. Make a copy of the n8n.yml and name it e.g. custom-n8n.yml. -2. Replace n8n.yml with custom-n8n.yml in your .env in COMPOSE_FILE. -3. Replace the caddy part of the custom-n8n.yml in this way. - -```bash -services: - caddy: - labels: - caddy: n8n.example.com - caddy.reverse_proxy: "{{upstream 6231}}" -``` - -This configures caddy to proxy all requests to n8n.example.com to the port 6231, in this case n8n. - -Restart all docker containers with the following command to enforce this new setting. +1. Create `custom-n8n.yml` to extend the default definition of the `n8n` service. +2. Insert the following block into `custom-n8n.yml`: + ```yaml + services: + n8n: + labels: + caddy: n8n.example.com + caddy.reverse_proxy: "{{upstreams 5678}}" + ``` +3. Add `custom-n8n.yml` to the `COMPOSE_FILE` variable inside your `.env` file. -!!! danger "All containers have to be restarted" +This configures Caddy to proxy all requests for `n8n.example.com` to port 5678 of the `n8n` service. - It is not sufficient to restart only the container that should use a separate domain. The caddy container has to be restarted to. `docker compose` will not detect any change of the caddy.yml, therefore we recommend to stop and restart all containers with these commands. +Apply the changes by running the following command inside `/opt/seatable-compose`: - ```bash - cd /opt/seatable-compose && \ - docker compose down && \ - docker compose up -d - ``` +```bash +docker compose up -d +``` diff --git a/docs/installation/advanced/s3-encryption.md b/docs/installation/advanced/s3-encryption.md index f0f74d99..57c35b57 100644 --- a/docs/installation/advanced/s3-encryption.md +++ b/docs/installation/advanced/s3-encryption.md @@ -48,7 +48,8 @@ openssl rand -base64 24 From version 6.1 onwards, SeaTable supports reading S3 configuration from environment variables. -While the previous approach [via configuration files](#configuration-files) is still supported, we recommend using environment variables since this has numerous advantages: +The previous approach [via configuration files](#configuration-files-legacy) is only supported until (and including) version 6.1. +Using environment variables has numerous advantages: - All relevant credentials are configured inside your `.env` file instead of being distributed between different configuration files - Configuration based on environment variables allows for a declarative deployment using S3, which was not previously possible @@ -70,7 +71,13 @@ You must restart SeaTable after applying this configuration change: docker compose up -d ``` -### Configuration Files +### Configuration Files (Legacy) + +!!! warning "`dtable-storage-server.conf` is not read anymore from v6.2 onwards" + + `dtable-storage-server.conf` will not be read anymore after upgrading from v6.1 to v6.2. + + Please use [environment variables](#environment-variables) instead to configure S3 encryption. Instead of using environment variables, you can also use the previous approach of configuring the encryption key inside the configuration files. To encrypt both base snapshots and assets, you must configure a valid encryption key in **two locations**: @@ -157,3 +164,9 @@ Afterwards, you must update the bucket names inside `dtable-storage-server.conf` ```bash docker restart seatable-server ``` + +In case you're using environment variables in order to configure S3, you'll have to update the bucket names and apply the configuration changes by running the following command inside `/opt/seatable-compose`: + +```bash +docker compose up -d +``` diff --git a/docs/installation/advanced/s3.md b/docs/installation/advanced/s3.md index dff13830..2bedf215 100644 --- a/docs/installation/advanced/s3.md +++ b/docs/installation/advanced/s3.md @@ -38,7 +38,8 @@ Bases and avatars require one bucket, to store the content of picture and files ## Configuration Approach From version 6.1 onwards, SeaTable supports reading S3 configuration [from environment variables](#environment-variables). -While the previous approach [via configuration files](#configuration-files) is still supported, we recommend using environment variables since this has numerous advantages: +The previous approach [via configuration files](#configuration-files-legacy) is only supported until (and including) version 6.1. +Using environment variables has numerous advantages: - All relevant credentials are configured inside your `.env` file instead of being distributed between different configuration files - Configuration based on environment variables allows for a declarative deployment using S3, which was not previously possible @@ -160,10 +161,16 @@ Afterwards, you must configure a few environment variables inside your `.env` fi Don't forget to restart SeaTable by running `docker compose up -d` inside your terminal. -## Configuration Files +## Configuration Files (Legacy) +!!! warning "`dtable-storage-server.conf` is not read anymore from v6.2 onwards" + + `dtable-storage-server.conf` will not be read anymore after upgrading from v6.1 to v6.2. + + Please use [environment variables](#environment-variables) instead to configure S3 encryption. + This section describes the configuration of S3 settings inside the configuration files `dtable-storage-server.conf` and `seafile.conf`. ### S3 for base snapshots From 882836c8c2bef137b6a84d91a9ef4b3e37d8295d Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Thu, 21 May 2026 11:10:39 +0200 Subject: [PATCH 08/26] Document major PG upgrade for n8n deployment --- docs/upgrade/extra-upgrade-notice.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/upgrade/extra-upgrade-notice.md b/docs/upgrade/extra-upgrade-notice.md index f8cea0cb..db1a77ab 100644 --- a/docs/upgrade/extra-upgrade-notice.md +++ b/docs/upgrade/extra-upgrade-notice.md @@ -11,6 +11,13 @@ description: Version-specific upgrade notices and required configuration changes - env anstelle von configurationsdateien - diese sollten bis auf dtable_web_settings.py sogar weg! für uns: dokumentation von "kopiere die yml vollständig" in patch-yamls. +??? warning "Included n8n deployment: PostgreSQL 11 -> 16" + + The following section is only relevant if you have deployed n8n alongside SeaTable using the included `n8n.yml` file. + We've upgraded the PostgreSQL version of the documented n8n deployment from version 11 to version 16. + This requires dumping and restoring your PostgreSQL database **before** running the upgrade. + Please follow the steps outlined in the [PostgreSQL docs](https://www.postgresql.org/docs/current/upgrading.html). + ## 6.1 Several Docker image tags have been updated to newer versions. These changes are applied automatically when you pull the latest images. Remember to also update your [plugins](../configuration/plugins.md). From bfc9e57288cb3f1bff56dc2ed3eb4091740b7b6c Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Thu, 21 May 2026 11:20:46 +0200 Subject: [PATCH 09/26] Add note re: external task runners --- docs/installation/components/n8n.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/installation/components/n8n.md b/docs/installation/components/n8n.md index 808cc885..c81df0fd 100644 --- a/docs/installation/components/n8n.md +++ b/docs/installation/components/n8n.md @@ -24,6 +24,12 @@ Give [n8n](https://n8n.io) a try, and we guarantee you'll fall in love with it j This article shows you how to install **n8n** (Community Edition) on your SeaTable server. +!!! warning "Deployment does not include external task runners" + + This deployment does not include any [external task runners](https://docs.n8n.io/hosting/configuration/task-runners/). + These allow executing user-provided JavaScript and Python code within n8n workflows. + Please refer to the [n8n docs](https://docs.n8n.io/hosting/configuration/task-runners/) for instructions on how to deploy external task runners. + #### Change the .env file Like with all additional components you first have to add the `n8n.yml` to the `COMPOSE_FILE` variable in your `.env` file. From 38d02ad3ed03563d7b8148f03ded5ded50d1cf91 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 22 May 2026 11:14:00 +0200 Subject: [PATCH 10/26] Deprecate email configuration inside dtable_web_settings.py In short: precedence issues. See https://github.com/seatable/seatable-release/pull/83 for details. --- docs/configuration/sending-email.md | 18 +++++++++++++----- docs/upgrade/extra-upgrade-notice.md | 8 ++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/docs/configuration/sending-email.md b/docs/configuration/sending-email.md index fe084abb..c9acbf09 100644 --- a/docs/configuration/sending-email.md +++ b/docs/configuration/sending-email.md @@ -20,7 +20,9 @@ There are two ways to configure this SMTP account for system wide emails. - The SeaTable Server image supports auto configuration via environment variables. Add these variables to your .env file to configure the SMTP account. + The SeaTable Server image supports auto configuration via environment variables. + This is the **preferred approach**. + Add these variables to your .env file to configure the SMTP account: | Environment variable | Description | Example values | | ------------------------------ | -------------------------------------------------------------- | ------------------------------ | @@ -35,7 +37,13 @@ There are two ways to configure this SMTP account for system wide emails. See the examples at the end of this article for easy copy-and-paste use. -=== "Configuration file" +=== "Configuration file (deprecated)" + + !!! warning "Configuration via `dtable_web_settings.py` is deprecated" + + The configuration of email settings via `dtable_web_settings.py` is deprecated since v6.2. + + Please migrate to the environment variable-based configuration approach when **upgrading to v6.2**. Add the following lines to `dtable_web_settings.py` to enable email sending. @@ -93,7 +101,7 @@ If you are using Gmail as email server, you can use the following settings. SEATABLE_SERVER_EMAIL = 'username@gmail.com' ``` -=== "Configuration file" +=== "Configuration file (deprecated)" ```python EMAIL_USE_TLS = True @@ -128,7 +136,7 @@ SeaTable Cloud uses the SMTP relay of Brevo. SEATABLE_SERVER_EMAIL = 'noreply@domain.com' ``` -=== "Configuration file" +=== "Configuration file (deprecated)" ```ini EMAIL_USE_TLS = True @@ -162,7 +170,7 @@ If you are using Infomaniak as email server, you can use the following settings. SEATABLE_SERVER_EMAIL='noreply@domain.com' ``` -=== "Configuration file" +=== "Configuration file (deprecated)" ```python EMAIL_USE_TLS = False diff --git a/docs/upgrade/extra-upgrade-notice.md b/docs/upgrade/extra-upgrade-notice.md index db1a77ab..253a14a6 100644 --- a/docs/upgrade/extra-upgrade-notice.md +++ b/docs/upgrade/extra-upgrade-notice.md @@ -11,6 +11,14 @@ description: Version-specific upgrade notices and required configuration changes - env anstelle von configurationsdateien - diese sollten bis auf dtable_web_settings.py sogar weg! für uns: dokumentation von "kopiere die yml vollständig" in patch-yamls. +??? warning "Configuration of email settings inside the configuration file is deprecated" + + The configuration of email settings inside the `dtable_web_settings.py` config file has been deprecated. + Please switch to **environment variable**-based configuration instead. + You can find more detailed information in this [article](../configuration/sending-email.md). + +http://localhost:8000/configuration/sending-email/ + ??? warning "Included n8n deployment: PostgreSQL 11 -> 16" The following section is only relevant if you have deployed n8n alongside SeaTable using the included `n8n.yml` file. From 373d68d3c8490337b9951e3fb810d113cc205d72 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 9 Jun 2026 15:10:07 +0200 Subject: [PATCH 11/26] Update base-rows-limit.md with updated dtable-server configuration --- docs/configuration/base-rows-limit.md | 31 ++++++++++++++++++--------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/docs/configuration/base-rows-limit.md b/docs/configuration/base-rows-limit.md index c46cbb67..d8cb7f70 100644 --- a/docs/configuration/base-rows-limit.md +++ b/docs/configuration/base-rows-limit.md @@ -13,20 +13,31 @@ Base rows are limited for the following technical reasons: Starting from version 3.4, for private deployment users, if your application scenario needs to support more than 100,000 rows in a base, but the storage space occupied by the base itself is not large (for example, it contains a large number of blank cells), you can modify the server's configuration, to support more than 100,000 rows. -#### dtable-server +## dtable-server -`dtable_server_config.json` +The configuration depends on your SeaTable version:: -```json -{ - "base_writable_limit": 100000, - "base_max_rows_limit": 150000 -} -``` +=== "SeaTable <= v6.1" + The following parameters must be added to `dtable_server_config.json`: + + ```json + { + "base_writable_limit": 100000, + "base_max_rows_limit": 150000 + } + ``` +=== "SeaTable v6.2+" + Two environment variables must be configured. + Please read our [guide](./customizations.md) that explains how to configure these additional environment variables before proceeding. + + ```ini + BASE_WRITABLE_LIMIT=100000 + BASE_MAX_ROWS_LIMIT=150000 + ``` -Among them, base_writable_limit is used to limit the rows written into the base. base_max_rows_limit is used to control when the rows in the base is greater than the number, the server refuses to load the base into memory. base_max_rows_limit needs to be greater than base_writable_limit. +Among them, `base_writable_limit` is used to limit the rows written into the base. `base_max_rows_limit` is used to control when the rows in the base is greater than the number, the server refuses to load the base into memory. `base_max_rows_limit` needs to be greater than `base_writable_limit`. -#### dtable-web +## dtable-web `dtable_web_settings.py` From 73280f07d6dceac19279c67ee1f5ec0b6ed8567c Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 9 Jun 2026 15:13:52 +0200 Subject: [PATCH 12/26] Update system limitations table --- docs/introduction/system-limitations.md | 52 ++++++++++++------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/introduction/system-limitations.md b/docs/introduction/system-limitations.md index eaa418bb..065920f4 100644 --- a/docs/introduction/system-limitations.md +++ b/docs/introduction/system-limitations.md @@ -8,29 +8,29 @@ The following limitations apply to SeaTable Server as well as SeaTable Cloud and For API-related limits, please see the SeaTable [API reference](https://api.seatable.com/reference/limits). -| Category | Limitation Type | Limit | Additional Notes | -| :----------------------- | :-------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Bases | Rows | 100 000 | The base becomes read-only when exceeding this limit. The limit can be modified in dtable_server_config.json. | -| | Rows 2 | 150 000 | The base will fail to load when exceeding this limit. The limit can be modified in dtable_server_config.json. | -| | Archived rows | no limit | | -| | Tables | 200 | | -| | External links for bases | 100 | | -| | External links for views | 100 | | -| | Apps | 100 | | -| | Forms | 100 | | -| Tables | Columns | 500 | | -| External links | External link viewing rate | 300/min | | -| Import / export | Size of a base being exported as a DTABLE file | 100MB | All files stored in a base can be viewed and deleted via File Management. The limit can be modified in dtable_web_settings.py (`DTABLE_EXPORT_MAX_SIZE`). | -| | Import of a XLSX/CSV file | 50 000 records or 10MB | | -| | Export of a table | 10 000 records or 1,000,000 cells | | -| | Export of a view in table | 1 000 000 cells | | -| Import / export big data | Import from XLSX to big data storage | 500 000 records or 40MB | The row limit can be modified in dtable_web_settings.py (`BIG_DATA_ROW_IMPORT_LIMIT`). The file size limit cannot be configured. | -| | Update from XLSX to big data storage | 500 000 records or 40MB | The row limit can be modified in dtable_web_settings.py (`BIG_DATA_ROW_UPDATE_LIMIT`). The file size limit cannot be configured. | -| | Export big data view to Excel | 250 000 records | The limit can be modified in dtable_web_settings.py (`ARCHIVE_VIEW_EXPORT_ROW_LIMIT`). | -| Groups | Group members | 500 | The limit can be modified in dtable_web_settings.py (`GROUP_MEMBER_LIMIT`). | -| | Group bases | 500 | | -| Common datasets (CDS) | Syncs of CDS | Sync up to the first 50 000 records | | -| | Sync frequency | 5 minutes | The limit can be modified in dtable_web_settings.py (`SYNC_COMMON_DATASET_INTERVAL`). | -| Automation rules | Records meet specific conditions after modification | For batch modification, check the first 50 records. A rule can be triggered up to 10 times per minute. | | -| | Add record | For batch addition, check the first 50 records. A rule can be triggered up to 10 times per minute. | | -| | Run periodically on records meet conditions | Lock a maximum of 200 rows and send a maximum of 50 emails in one trigger | | +| Category | Limitation Type | Limit | Additional Notes | +| :----------------------- | :-------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Bases | Rows | 100 000 | The base becomes read-only when exceeding this limit. The limit can be modified in `dtable_server_config.json`/through the `BASE_WRITABLE_LIMIT` environment variable. | +| | Rows 2 | 150 000 | The base will fail to load when exceeding this limit. The limit can be modified in `dtable_server_config.json`/through the `BASE_MAX_ROWS_LIMIT` environment variable. | +| | Archived rows | no limit | | +| | Tables | 200 | | +| | External links for bases | 100 | | +| | External links for views | 100 | | +| | Apps | 100 | | +| | Forms | 100 | | +| Tables | Columns | 500 | | +| External links | External link viewing rate | 300/min | | +| Import / export | Size of a base being exported as a DTABLE file | 100MB | All files stored in a base can be viewed and deleted via File Management. The limit can be modified in dtable_web_settings.py (`DTABLE_EXPORT_MAX_SIZE`). | +| | Import of a XLSX/CSV file | 50 000 records or 10MB | | +| | Export of a table | 10 000 records or 1,000,000 cells | | +| | Export of a view in table | 1 000 000 cells | | +| Import / export big data | Import from XLSX to big data storage | 500 000 records or 40MB | The row limit can be modified in dtable_web_settings.py (`BIG_DATA_ROW_IMPORT_LIMIT`). The file size limit cannot be configured. | +| | Update from XLSX to big data storage | 500 000 records or 40MB | The row limit can be modified in dtable_web_settings.py (`BIG_DATA_ROW_UPDATE_LIMIT`). The file size limit cannot be configured. | +| | Export big data view to Excel | 250 000 records | The limit can be modified in dtable_web_settings.py (`ARCHIVE_VIEW_EXPORT_ROW_LIMIT`). | +| Groups | Group members | 500 | The limit can be modified in dtable_web_settings.py (`GROUP_MEMBER_LIMIT`). | +| | Group bases | 500 | | +| Common datasets (CDS) | Syncs of CDS | Sync up to the first 50 000 records | | +| | Sync frequency | 5 minutes | The limit can be modified in dtable_web_settings.py (`SYNC_COMMON_DATASET_INTERVAL`). | +| Automation rules | Records meet specific conditions after modification | For batch modification, check the first 50 records. A rule can be triggered up to 10 times per minute. | | +| | Add record | For batch addition, check the first 50 records. A rule can be triggered up to 10 times per minute. | | +| | Run periodically on records meet conditions | Lock a maximum of 200 rows and send a maximum of 50 emails in one trigger | | From 46cd378f460483fc76fe0bbcfa8f2d85c73dfb0e Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 9 Jun 2026 15:23:50 +0200 Subject: [PATCH 13/26] Update dtable-server config (ENV) --- .../configuration/components/dtable-server.md | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/configuration/components/dtable-server.md b/docs/configuration/components/dtable-server.md index 74382213..0de579b0 100644 --- a/docs/configuration/components/dtable-server.md +++ b/docs/configuration/components/dtable-server.md @@ -28,19 +28,30 @@ Please read our guide that explains how you can [customize the configuration](.. ### Persistence -**FIXME: SAVE_INTERVAL cannot be configured through ENV** +| Environment Variable | Description | Default | +| -------------------- | ----------------------------------------------------------------------- | ------- | +| `SAVE_INTERVAL` | Auto-save interval for modified bases, in milliseconds. (300000 = 5min) | 300000 | ### Service URLs -**FIXME: Service URLs cannot be configured through ENV** +| Environment Variable | Description | Default | +| --------------------------------- | ---------------------- | ---------------------- | +| `INNER_DTABLE_WEB_SERVICE_URL` | dtable-web service URL | http://127.0.0.1:8000/ | +| `INNER_DTABLE_DB_URL` | dtable-db service URL | http://127.0.0.1:7777/ | +| `INNER_DTABLE_STORAGE_SERVER_URL` | dtable-db service URL | http://127.0.0.1:6666/ | ### Row Limits -**FIXME: Row limits cannot be configured through ENV** +| Environment Variable | Description | Default | +| --------------------- | ---------------------------------------------------------------------------------- | ------- | +| `BASE_WRITABLE_LIMIT` | Soft limit for rows in a base. Exceeding this shows an error in the web interface. | 100000 | +| `BASE_MAX_ROWS_LIMIT` | Hard limit for rows in a base. Server prevents any writes beyond this number. | 150000 | ### Base Size Limit -**FIXME: Base size limit cannot be configured through ENV** +| Environment Variable | Description | Default | +| -------------------- | ------------------------------------------------------------------------ | ------- | +| `BASE_MAX_SIZE` | Maximum size of a base's JSON file (excluding assets and big data) in MB | 200 | ## Configuration File (Legacy) @@ -117,7 +128,7 @@ It is not recommended to change these values | --------------------------- | -------------------------------------------------------------------------------------- | ------- | | `worker_threads_num` | Number of worker threads serving list rows API (for custom shares or view shares only) | 2 | | `worker_threads_rows_limit` | Maximum rows, returned in custom shares or view shares | 50000 | -| `rows_api_max_limit` | Maximum number of rows returned by calling list rows API in dtable-server | 1000 | +| `rows_api_max_limit` | Maximum number of rows returned by calling list rows API in dtable-server | 1000 | | `redirect_list_rows_api` | Redirect API requests to the API-Gateway. | false | ### Cluster Setup From eec7d87aba0cb71686bbbd4a7e77e640d72a908a Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 9 Jun 2026 15:28:41 +0200 Subject: [PATCH 14/26] Add note re: dtable_storage_server_url --- docs/configuration/components/dtable-db.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/configuration/components/dtable-db.md b/docs/configuration/components/dtable-db.md index b91a4259..9fc0a63b 100644 --- a/docs/configuration/components/dtable-db.md +++ b/docs/configuration/components/dtable-db.md @@ -68,8 +68,6 @@ These settings allow configuring how data stored inside the big data backend is | `DTABLE_DB_BACKUP_KEEP_DAYS` | Specifies the retention period for backups in days. Older backups are deleted. Overrides `DTABLE_DB_BACKUP_KEEP_NUM` if set; otherwise, `DTABLE_DB_BACKUP_KEEP_NUM` is used. | 0 | | `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS` | Specifies daily backup period. After this, only one backup per month is kept. Requires `DTABLE_DB_BACKUP_KEEP_DAYS` to be set and > `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS`. | 0 | -**FIXME: dtable-storage-server URL is no longer configurable!?** - !!! warning "Two different backup methods: which should I choose?" SeaTable offers two backup approaches: @@ -81,6 +79,11 @@ These settings allow configuring how data stored inside the big data backend is This method provides detailed recent backups and efficient long-term storage, balancing data granularity with space conservation. For example, setting `DTABLE_DB_BACKUP_KEEP_DAYS=180` and `DTABLE_DB_BACKUP_KEEP_FREQUENCY_DAYS=7` would keep daily backups for the past week, then monthly backups for the past six months (except for the past week). +!!! warning "dtable-storage-server URL is no longer configurable as of v6.2" + + The URL for `dtable-storage-server` is no longer configurable. As a consequence, `dtable-storage-server` must always run inside the same container as `dtable-db`. + This only matters in case SeaTable is deployed inside a cluster/as a distributed system. + ### Metrics | Environment Variable | Description | Default | From 81b9e32580ee0ec8c91d33ee2fbfbcf62aadbe00 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Thu, 11 Jun 2026 15:37:54 +0200 Subject: [PATCH 15/26] Update AI model configuration docs --- docs/installation/advanced/ollama.md | 9 +- .../advanced/seatable-ai-standalone.md | 6 -- .../advanced/seatable-ai-token-pricing.md | 38 ++++++- docs/installation/advanced/vllm.md | 27 ++--- docs/installation/components/seatable-ai.md | 99 ++++++++++++++++++- 5 files changed, 143 insertions(+), 36 deletions(-) diff --git a/docs/installation/advanced/ollama.md b/docs/installation/advanced/ollama.md index 0279ad43..5e56116d 100644 --- a/docs/installation/advanced/ollama.md +++ b/docs/installation/advanced/ollama.md @@ -42,14 +42,9 @@ sed -i "s/COMPOSE_FILE='\(.*\)'/COMPOSE_FILE='\1,ollama.yml'/" /opt/seatable-com ### Configuration -In order to use Ollama to execute AI-based automation steps inside SeaTable, you must add the following configuration settings to your `.env` file: +Please refer to the [LLM provider configuration](../components/seatable-ai.md#llm-provider-configuration) docs. -```ini -SEATABLE_AI_LLM_TYPE='ollama_chat' -SEATABLE_AI_LLM_URL='http://ollama:11434' -# Choose a model: https://ollama.com/library -SEATABLE_AI_LLM_MODEL='gemma3:12b' -``` +The URL must be set to `http://ollama:11434` in case you're deploying Ollama on the same host/VM as SeaTable. ### Start Ollama diff --git a/docs/installation/advanced/seatable-ai-standalone.md b/docs/installation/advanced/seatable-ai-standalone.md index 944f653d..d05d6593 100644 --- a/docs/installation/advanced/seatable-ai-standalone.md +++ b/docs/installation/advanced/seatable-ai-standalone.md @@ -45,12 +45,6 @@ INNER_DTABLE_SERVER_URL=http://dtable-server:5000 # Cluster-internal URL of dtable-db INNER_DTABLE_DB_URL=http://dtable-db:7777 - -# LLM -SEATABLE_AI_LLM_TYPE= -SEATABLE_AI_LLM_URL= -SEATABLE_AI_LLM_KEY= -SEATABLE_AI_LLM_MODEL= ``` !!! warning "Ports are not exposed by default" diff --git a/docs/installation/advanced/seatable-ai-token-pricing.md b/docs/installation/advanced/seatable-ai-token-pricing.md index 033dce11..626c4d8a 100644 --- a/docs/installation/advanced/seatable-ai-token-pricing.md +++ b/docs/installation/advanced/seatable-ai-token-pricing.md @@ -19,7 +19,12 @@ Please refer to the documentation on [user quotas](../../configuration/roles-and ## Pricing Configuration -In order to accurately track the number of AI credits used by users and organizations, you must configure token pricing inside `/opt/seatable-server/seatable/conf/dtable_web_settings.py`. +In order to accurately track the number of AI credits used by users and organizations, you must configure token pricing. +The configuration approach depends on your SeaTable version: + +### SeaTable v6.0 + v6.1 + +Token pricing is configured inside `/opt/seatable-server/seatable/conf/dtable_web_settings.py`. This can be achieved by configuring the `AI_PRICES` variable, which is a dictionary that maps model identifiers (e.g `gpt-4o-mini`) to token pricing **per thousand tokens**: ```py @@ -34,3 +39,34 @@ AI_PRICES = { !!! warning "Model Identifiers" The dictionary key must match **the exact value** of the chosen AI Model, which is configured through the `SEATABLE_AI_LLM_MODEL` variable inside your `.env` file. In case of a mismatch, AI usage will not count towards any configured credit limits! + +### SeaTable v6.2+ + +Token pricing is configured inside `/opt/seatable-server/seatable/conf/seatable_config.yaml`. +If the file does not exist yet, simply create it. + +!!! warning "Token pricing is now configured per 1 million tokens" + + Since version 6.2, token pricing is configured **per 1 million tokens** (previously: per 1000 tokens). + This change aligns SeaTable's behavior with the behavior of most other AI-enhanced applications. + +```yaml +global: + LLM_MODELS: + - type: ... + key: ... + model: ... + price: + # Price per 1M tokens + input_tokens: 1 + output_tokens: 5 +``` + +Remember to restart the `seatable-server` container (since token pricing is handled by `dtable-events`, which runs inside the `seatable-server` container) by running the following command: + +```bash +cd /opt/seatable-compose +docker compose up -d --force-recreate seatable-server +``` + +**Note:** The `--force-recreate` flag ensures that the container is restarted even if its `.yml` file or environment variables haven't changed. diff --git a/docs/installation/advanced/vllm.md b/docs/installation/advanced/vllm.md index 605845df..29a4eb3c 100644 --- a/docs/installation/advanced/vllm.md +++ b/docs/installation/advanced/vllm.md @@ -134,20 +134,9 @@ Perfect! Your local vLLM deployment is ready to use. ## SeaTable AI Configuration -To use vLLM for AI-based automation inside SeaTable, add the following settings to the `.env` file on the host where SeaTable AI is deployed: +Please refer to the [LLM provider configuration](../components/seatable-ai.md#llm-provider-configuration) docs. -```ini -SEATABLE_AI_LLM_TYPE='hosted_vllm' - -SEATABLE_AI_LLM_URL='https:///v1' - -# API key for requests to vLLM (use the same key as above) -SEATABLE_AI_LLM_KEY='' - -# Model identifier from HuggingFace -# (e.g. RedHatAI/gemma-3-12b-it-quantized.w4a16) -SEATABLE_AI_LLM_MODEL='' -``` +**Note:** The type must be set to `hosted_vllm` and the URL must be set to `https:///v1` when using vLLM for AI-based automations within SeaTable. Remember to restart SeaTable AI after making any changes. @@ -155,16 +144,18 @@ Remember to restart SeaTable AI after making any changes. ### Send a request -You can send your first request to vLLM with the following example from the command line of the **SeaTable AI container**. -This makes sure that all your environment variables are correctly set and that the ip address of SeaTable AI is part of the list of allowed IP addresses configured with `VLLM_ALLOWED_IPS`. +You can send your first request to vLLM with the following example from the command line of the host/VM that runs the **SeaTable AI container**. +This makes sure that the IP address of SeaTable AI is part of the list of allowed IP addresses configured with `VLLM_ALLOWED_IPS`. + +Make sure to replace `YOUR_VLLM_HOSTNAME`, `YOUR_VLLM_KEY` and `YOUR_VLLM_MODEL` with the appropriate values: ```bash docker exec -i seatable-ai bash -s < +The configuration approach depends on your SeaTable version: + +#### SeaTable v6.0 + v6.1 + +For SeaTable v6.0 and v6.1, the LLM provider is configured inside the `.env` file: + === "OpenAI" ```ini SEATABLE_AI_LLM_TYPE=openai @@ -115,7 +119,94 @@ These must be configured inside your `.env` file: SEATABLE_AI_LLM_MODEL=... ``` -#### LLM Timeout Configuration (Optional) +#### SeaTable v6.2+ + +SeaTable v6.2 and later versions require you to configure the LLM provider inside the `/opt/seatable-server/seatable/conf/seatable_config.yaml` file **on the host**. The LLM provider configuration is now placed inside a `.yaml` file to allow configuring different providers/models for different AI functions. +If the file does not exist yet, simply create it. + +=== "OpenAI" + ```yaml + global: + LLM_MODELS: + - type: openai + key: + model: gpt-4o-mini # recommended + ``` +=== "Deepseek" + ```yaml + global: + LLM_MODELS: + - type: deepseek + key: + model: deepseek-chat # recommended + ``` +=== "Azure OpenAI" + ```yaml + global: + LLM_MODELS: + - type: azure + url: # your deployment url, leave blank to use default endpoint + key: + model: + ``` +=== "Gemini / Google AI Studio" + ```yaml + global: + LLM_MODELS: + - type: gemini + key: + model: + ``` +=== "Ollama" + ```yaml + global: + LLM_MODELS: + - type: ollama + url: + key: + model: + ``` +=== "HuggingFace" + ```yaml + global: + LLM_MODELS: + - type: huggingface + url: + key: + model: / + ``` +=== "Self-Hosted Proxy Server" + ```yaml + global: + LLM_MODELS: + - type: proxy + url: + key: # optional + model: + ``` +=== "Other" + If you are using an LLM service with ***OpenAI-compatible endpoints***, you should set `type` to `other` or `openai`, and set other LLM configuration settings as necessary: + + ```yaml + global: + LLM_MODELS: + - type: ... + url: ... + key: ... + model: ... + ``` + +!!! warning "Configuration changes require a container restart" + + The `seatable-ai` container will **not** be automatically restarted when running `docker compose up -d` if you've only made changes to the `seatable_config.yaml` config file. + Docker Compose does not watch files inside volume mounts, therefore a manual recreation of the container (via `--force-recreate`) is necessary whenever you're making configuration changes: + + ```bash + cd /opt/seatable-compose + docker compose up -d --force-recreate seatable-ai + ``` + +### LLM Timeout Configuration (Optional) From eafab565a1d63f2c30da2238348d0d01bc59ad77 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Thu, 11 Jun 2026 17:56:34 +0200 Subject: [PATCH 16/26] SEATABLE_AI_SERVER_URL -> INNER_SEATABLE_AI_SERVER_URL --- docs/configuration/overview.md | 2 +- docs/installation/advanced/seatable-ai-standalone.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration/overview.md b/docs/configuration/overview.md index bfb187ab..a6ae28eb 100644 --- a/docs/configuration/overview.md +++ b/docs/configuration/overview.md @@ -58,7 +58,7 @@ PYTHON_SCHEDULER_AUTH_TOKEN='topsecret' # SeaTable AI ENABLE_SEATABLE_AI='false' # (14)! -SEATABLE_AI_SERVER_URL='http://seatable-ai:8888' +INNER_SEATABLE_AI_SERVER_URL='http://seatable-ai:8888' # E-Mail SEATABLE_EMAIL_USE_TLS= # (12)! diff --git a/docs/installation/advanced/seatable-ai-standalone.md b/docs/installation/advanced/seatable-ai-standalone.md index d05d6593..fb57e0f7 100644 --- a/docs/installation/advanced/seatable-ai-standalone.md +++ b/docs/installation/advanced/seatable-ai-standalone.md @@ -71,7 +71,7 @@ Since `seatable-ai` is now running on a separate host or virtual machine, the fo ```ini ENABLE_SEATABLE_AI=true -SEATABLE_AI_SERVER_URL='http://seatable-ai.example.com:8888' +INNER_SEATABLE_AI_SERVER_URL='http://seatable-ai.example.com:8888' ``` Restart the `seatable-server` service and test your SeaTable AI: From fc9a540891a9a461bda51bd7a713e36aa8fae14b Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 12 Jun 2026 13:03:09 +0200 Subject: [PATCH 17/26] Fix message --- docs/installation/advanced/s3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation/advanced/s3.md b/docs/installation/advanced/s3.md index 2bedf215..d148261e 100644 --- a/docs/installation/advanced/s3.md +++ b/docs/installation/advanced/s3.md @@ -169,7 +169,7 @@ Don't forget to restart SeaTable by running `docker compose up -d` inside your t `dtable-storage-server.conf` will not be read anymore after upgrading from v6.1 to v6.2. - Please use [environment variables](#environment-variables) instead to configure S3 encryption. + Please use [environment variables](#environment-variables) instead to configure S3. This section describes the configuration of S3 settings inside the configuration files `dtable-storage-server.conf` and `seafile.conf`. From 90bd9865e1ef8ebebd5a0cbc8a44bb2b52178e8c Mon Sep 17 00:00:00 2001 From: Junxiang Huang Date: Wed, 15 Apr 2026 13:40:34 +0800 Subject: [PATCH 18/26] update doc for s3 configurations --- docs/installation/advanced/s3.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/installation/advanced/s3.md b/docs/installation/advanced/s3.md index d148261e..ed296dfa 100644 --- a/docs/installation/advanced/s3.md +++ b/docs/installation/advanced/s3.md @@ -94,7 +94,7 @@ Using environment variables has numerous advantages: -To enable S3 storage for base snapshots, files and pictures, add `seatable-s3.yml` to the `COMPOSE_FILE` variable inside your `.env` file. +To enable S3 storage for base snapshots, files, pictures and avatars, add `seatable-s3.yml` to the `COMPOSE_FILE` variable inside your `.env` file. This instructs Docker-Compose to extend the definition of the `seatable-server` service defined inside `seatable-server.yml`. @@ -109,6 +109,7 @@ Afterwards, you must configure a few environment variables inside your `.env` fi S3_COMMIT_BUCKET='' S3_FS_BUCKET='' S3_BLOCK_BUCKET='' + S3_AVATAR_BUCKET='' S3_KEY_ID='' S3_SECRET_KEY='' ``` @@ -122,6 +123,7 @@ Afterwards, you must configure a few environment variables inside your `.env` fi S3_COMMIT_BUCKET='' S3_FS_BUCKET='' S3_BLOCK_BUCKET='' + S3_AVATAR_BUCKET='' S3_HOST='sos-de-fra-1.exo.io' S3_KEY_ID='' S3_SECRET_KEY='' @@ -137,6 +139,7 @@ Afterwards, you must configure a few environment variables inside your `.env` fi S3_COMMIT_BUCKET='' S3_FS_BUCKET='' S3_BLOCK_BUCKET='' + S3_AVATAR_BUCKET='' S3_HOST='fsn1.your-objectstorage.com' S3_KEY_ID='' S3_SECRET_KEY='' @@ -152,6 +155,7 @@ Afterwards, you must configure a few environment variables inside your `.env` fi S3_COMMIT_BUCKET='' S3_FS_BUCKET='' S3_BLOCK_BUCKET='' + S3_AVATAR_BUCKET='' S3_HOST='' S3_KEY_ID='' S3_SECRET_KEY='' @@ -401,7 +405,7 @@ S3 Object storage for file and picture columns is configured in `/opt/seatable-s memcached_options = --SERVER=memcached --POOL-MIN=10 --POOL-MAX=100 ``` -## S3 for avatars +### S3 for avatars From a26e3bc09c63bfa9e204f2e10965075e7e47e010 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 12 Jun 2026 13:43:43 +0200 Subject: [PATCH 19/26] Update S3 docs --- docs/installation/advanced/s3.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/installation/advanced/s3.md b/docs/installation/advanced/s3.md index ed296dfa..76406dbf 100644 --- a/docs/installation/advanced/s3.md +++ b/docs/installation/advanced/s3.md @@ -35,6 +35,12 @@ Bases and avatars require one bucket, to store the content of picture and files - seatable blocks - seatable$$$ +!!! danger "Avatar bucket must be publicly accessible" + + While other S3 buckets used by SeaTable can remain private, the S3 bucket for avatars must be publicly readable. + Once avatars are saved to S3, they are accessed directly from the S3 storage. + Therefore, it is necessary to grant read access to everyone (anonymous access) while restricting write access to authenticated users with bucket credentials. + ## Configuration Approach From version 6.1 onwards, SeaTable supports reading S3 configuration [from environment variables](#environment-variables). @@ -45,10 +51,10 @@ Using environment variables has numerous advantages: - Configuration based on environment variables allows for a declarative deployment using S3, which was not previously possible - Docker-Compose automatically detects changes to the values of environment variables when running `docker compose up -d` and restarts any dependent services -!!! tip "Approach based on environment variables always enables S3 for base snapshots, files and pictures" +!!! tip "Approach based on environment variables always enables S3 for base snapshots, files, pictures and avatars" - Please note that the approach based on environment variables **does not allow** enabling S3 only for base snapshots **or** files and pictures. - As soon as you include `seatable-s3.yml` into the `COMPOSE_FILE` variable, S3 will be enabled for base snapshots, files **and** pictures. + Please note that the approach based on environment variables **does not allow** enabling S3 only for base snapshots **or** files and pictures **or** avatars. + As soon as you include `seatable-s3.yml` into the `COMPOSE_FILE` variable, S3 will be enabled for base snapshots, files, pictures **and** avatars. !!! tip "Approach based on environment variables requires a single set of S3 credentials" @@ -175,7 +181,7 @@ Don't forget to restart SeaTable by running `docker compose up -d` inside your t Please use [environment variables](#environment-variables) instead to configure S3. -This section describes the configuration of S3 settings inside the configuration files `dtable-storage-server.conf` and `seafile.conf`. +This section describes the configuration of S3 settings inside the configuration files `dtable-storage-server.conf`, `seafile.conf` and `dtable_web_settings.py`. ### S3 for base snapshots @@ -411,10 +417,6 @@ S3 Object storage for file and picture columns is configured in `/opt/seatable-s It is possible to store the avatar pictures in S3 instead of the local filesystem. SeaTable uses the [Django File Storage API for AWS S3](https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html). -!!! warning "Cannot be configured via environment variables" - - It is currently not possible to configure the credentials for the avatar bucket via environment variables. This must always be done inside `dtable_web_settings.py`. - !!! danger "Avatar bucket must be publicly accessible" While other S3 buckets used by SeaTable can remain private, the S3 bucket for avatars must be publicly readable. Once avatars are saved to S3, they are accessed directly from the S3 storage. Therefore, it is necessary to grant read access to everyone (anonymous access) while restricting write access to authenticated users with bucket credentials. From 3cbac88daa3df204c69ac49bbc5c4e09d1083eed Mon Sep 17 00:00:00 2001 From: SkywalkerSpace Date: Tue, 21 Apr 2026 10:32:04 +0800 Subject: [PATCH 20/26] 6.2 SECRET_KEY --- docs/configuration/overview.md | 3 +++ docs/installation/advanced/seatable-ai-standalone.md | 2 ++ docs/installation/basic-setup.md | 3 +++ .../installation/cluster/basic-setup-with-external-services.md | 2 ++ 4 files changed, 10 insertions(+) diff --git a/docs/configuration/overview.md b/docs/configuration/overview.md index a6ae28eb..c2d398c2 100644 --- a/docs/configuration/overview.md +++ b/docs/configuration/overview.md @@ -48,6 +48,8 @@ REDIS_PASSWORD='topsecret' JWT_PRIVATE_KEY='topsecret' # (8)! +SECRET_KEY='anothertopsecret' # (15)! + # SeaDoc ENABLE_SEADOC='false' SEADOC_PORT='' @@ -104,6 +106,7 @@ SEATABLE_HELP_LINK=https://seatable.com/help/ # (11)! 12. Please refer to [Email Sending](./sending-email.md) for more information. 13. Please refer to [Python Pipeline](../installation/components/python-pipeline.md) for more information. 14. Please refer to [SeaTable AI](../installation/components/seatable-ai.md) for more information. +15. This secret key is used by the Django framework, which [`dtable-web`](../configuration/components/dtable-web.md) is based on. + +This script allows you to check the status of `dtable-web`. +This is helpful in case `dtable-web` does not start up since any fatal configuration errors are currently not logged to `dtable_web.log` or the container's stdout stream. + +=== "Input" + + ```bash + ./tools/check-dtable-web.sh + ``` + +=== "Output" + + ```text + System check identified no issues (0 silenced). + ``` From ca1178e80abf7284d8d5783708d4f212777be531 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 12 Jun 2026 15:31:17 +0200 Subject: [PATCH 24/26] Remove outdated settings HELP_LINK is already documented in a different section on the same page --- docs/configuration/components/dtable-web.md | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/docs/configuration/components/dtable-web.md b/docs/configuration/components/dtable-web.md index 28f82aad..1767c7fb 100644 --- a/docs/configuration/components/dtable-web.md +++ b/docs/configuration/components/dtable-web.md @@ -11,26 +11,14 @@ You can also modify some of the config items as system administrator via web int ## Basic settings ```python -# for dtable-server -## The private key is used to authenticate between DTable Web and DTable Server -## DTABLE_SERVER_URL is for telling DTable Web the DTable Server's URL -## DTABLE_SOCKET_URL is for telling DTable Web the web socket URL of DTable Server -DTABLE_PRIVATE_KEY = 'xxxxx' -DTABLE_SERVER_URL = 'https://seatable.yourdomain.com/dtable-server/' -DTABLE_SOCKET_URL = 'https://seatable.yourdomain.com/' - # The URL of dtable-web that for users to visit your SeaTable server DTABLE_WEB_SERVICE_URL = 'https://seatable.yourdomain.com/' -# The help link URL -HELP_LINK = 'https://seatable.com/help/' - # The file server URL FILE_SERVER_ROOT = 'https://seatable.yourdomain.com/seafhttp/' # Redirect URL when logout,if not set, it will redirect to the SeaTable default page of logout LOGOUT_REDIRECT_URL = 'https://example.com/' - ``` If you changed your domain, the URLs in above settings must be changed accordingly. @@ -163,7 +151,6 @@ SITE_NAME = 'SeaTable' # Browser tab's title SITE_TITLE = 'Private SeaTable' - # Configure user help pages HELP_LINK = 'https://seatable.com/help/' From 99cc67f2a91cdd94fffaeb17a3faf6744d2d1de0 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 12 Jun 2026 15:39:26 +0200 Subject: [PATCH 25/26] Deprecate template configuration inside dtable_web_settings.py This would not work anyway since the environment variables are always set (to empty strings) and environment variables have higher precedence than variables inside dtable_web_settings.py --- docs/customization/templates.md | 34 ++++++++-------------------- docs/upgrade/extra-upgrade-notice.md | 6 +++++ 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/docs/customization/templates.md b/docs/customization/templates.md index ba864089..ae338df8 100644 --- a/docs/customization/templates.md +++ b/docs/customization/templates.md @@ -87,31 +87,15 @@ Make sure to note down the API token as you'll need it for the next step. ## Activate templates in SeaTable -Equipped with API token and your template base, you can activate the templates in your SeaTable Server. There are two ways to do this: - -=== "Environment variables" - - - - The SeaTable Server image supports auto configuration via environment variables. Add these variables to your .env file. - - | Environment variable | Description | Example values | - | ------------------------------------------- | ----------------------------------------------- | ----------------------- | - | `SEATABLE_SHOW_TEMPLATES_LINK` | Activate to show the link on the home page | `true` or leave empty | - | `SEATABLE_TEMPLATE_BASE_API_TOKEN` | API token of the base containing your templates | `759...3a05f8` | - | `SEATABLE_TEMPLATE_TABLE_NAME` | Name of the table containing your templates | `Table1` or `Templates` | - | `SEATABLE_ENABLE_CREATE_BASE_FROM_TEMPLATE` | Allow the creation of new bases from templates | `true` or leave empty. | - -=== "Configuration file" - - Add the following lines to `dtable_web_settings.py`. - - ```bash - SHOW_TEMPLATES_LINK = True - TEMPLATE_BASE_API_TOKEN = 'replace-with-your-api-token' - TEMPLATE_TABLE_NAME = 'templates' - ENABLE_CREATE_BASE_FROM_TEMPLATE = True - ``` +Equipped with API token and your template base, you can activate the templates in your SeaTable Server. +The SeaTable Server image supports auto configuration via environment variables. Add these variables to your .env file. + +| Environment variable | Description | Example values | +| ------------------------------------------- | ----------------------------------------------- | ----------------------- | +| `SEATABLE_SHOW_TEMPLATES_LINK` | Activate to show the link on the home page | `true` or leave empty | +| `SEATABLE_TEMPLATE_BASE_API_TOKEN` | API token of the base containing your templates | `759...3a05f8` | +| `SEATABLE_TEMPLATE_TABLE_NAME` | Name of the table containing your templates | `Table1` or `Templates` | +| `SEATABLE_ENABLE_CREATE_BASE_FROM_TEMPLATE` | Allow the creation of new bases from templates | `true` or leave empty. | Restart SeaTable service to activate your templates. diff --git a/docs/upgrade/extra-upgrade-notice.md b/docs/upgrade/extra-upgrade-notice.md index 8dc7bf5d..d0db80a3 100644 --- a/docs/upgrade/extra-upgrade-notice.md +++ b/docs/upgrade/extra-upgrade-notice.md @@ -30,6 +30,12 @@ für uns: dokumentation von "kopiere die yml vollständig" in patch-yamls. Please note that this bucket must be publicly accessible via HTTP(S) since the user avatars are loaded directly from this bucket. You can find more detailed information in this [article](../installation/advanced/s3.md). +??? warning "Configuration of base with custom templates must be migrated to environment variables" + + The configuration of a custom base that can be used to define [base templates](../customization/templates.md) inside `dtable_web_settings.py` has been deprecated. + Please switch to **environment variable**-based configuration instead. + You can find more detailed information in this [article](../customization/templates.md). + ??? warning "Included n8n deployment: PostgreSQL 11 -> 16" The following section is only relevant if you have deployed n8n alongside SeaTable using the included `n8n.yml` file. From d4de6a776b738b9a887d2c15dd28d3ca5a45bd0c Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 15 Jun 2026 15:42:39 +0200 Subject: [PATCH 26/26] Document LLM provider config change --- docs/upgrade/extra-upgrade-notice.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/upgrade/extra-upgrade-notice.md b/docs/upgrade/extra-upgrade-notice.md index d0db80a3..22ed2fc6 100644 --- a/docs/upgrade/extra-upgrade-notice.md +++ b/docs/upgrade/extra-upgrade-notice.md @@ -30,6 +30,12 @@ für uns: dokumentation von "kopiere die yml vollständig" in patch-yamls. Please note that this bucket must be publicly accessible via HTTP(S) since the user avatars are loaded directly from this bucket. You can find more detailed information in this [article](../installation/advanced/s3.md). +??? warning "LLM provider configuration must be migrated to `seatable_config.yaml`" + + If you've deployed [SeaTable AI](../installation/components/seatable-ai.md) alongside SeaTable, you'll now have to migrate the LLM provider configuration + to the new `seatable_config.yaml` config file. This is required since SeaTable AI now supports multiple LLM providers. + You can find more detailed information in this [article](../installation/components/seatable-ai.md#llm-provider-configuration). + ??? warning "Configuration of base with custom templates must be migrated to environment variables" The configuration of a custom base that can be used to define [base templates](../customization/templates.md) inside `dtable_web_settings.py` has been deprecated.