From 7d45f027cb202f036c4af109b3111fbdb9d3ed46 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 31 Aug 2026 14:18:51 +0200 Subject: [PATCH 1/6] Stop exposing dtable-db/dtable-server /ping endpoints by default --- compose/config/seatable-nginx.conf | 9 --------- 1 file changed, 9 deletions(-) diff --git a/compose/config/seatable-nginx.conf b/compose/config/seatable-nginx.conf index d132e3e..cb7fe73 100644 --- a/compose/config/seatable-nginx.conf +++ b/compose/config/seatable-nginx.conf @@ -110,13 +110,4 @@ server { location /dtable-db { return 404 'This endpoint is deprecated. Please migrate to the API Gateway: https://forum.seatable.com/t/important-changes-to-the-seatable-cloud-api-in-version-5-3/6677'; } - - # ping endpoints - location = /dtable-server/ping/ { - proxy_pass http://127.0.0.1:5000/ping/; - } - - location = /dtable-db/ping/ { - proxy_pass http://127.0.0.1:7777/ping/; - } } From f2da1c641436cfec517ec79247db9f428378882a Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Wed, 2 Sep 2026 11:57:07 +0200 Subject: [PATCH 2/6] Increase max-allowed-packet to 32M This mitigates issues related to very long operations (e.g. importing tables from an XLSX file). --- compose/seatable-server.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/seatable-server.yml b/compose/seatable-server.yml index 5b3d391..dc3ebfd 100644 --- a/compose/seatable-server.yml +++ b/compose/seatable-server.yml @@ -126,7 +126,7 @@ services: image: ${SEATABLE_DB_IMAGE:-mariadb:11.8.5-noble} restart: unless-stopped container_name: mariadb - command: ["mariadbd", "--innodb_snapshot_isolation=OFF"] + command: ["mariadbd", "--innodb_snapshot_isolation=OFF", "--max-allowed-packet=32M"] environment: - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-${MARIADB_PASSWORD}} - MYSQL_LOG_CONSOLE=true From da154f20bc8f09f944f661c19f6998037bbf6f13 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 7 Sep 2026 10:50:52 +0200 Subject: [PATCH 3/6] Add YML file for automation-worker --- compose/automation-worker.yml | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 compose/automation-worker.yml diff --git a/compose/automation-worker.yml b/compose/automation-worker.yml new file mode 100644 index 0000000..d69803d --- /dev/null +++ b/compose/automation-worker.yml @@ -0,0 +1,41 @@ +services: + automation-worker: + image: ${AUTOMATION_WORKER_IMAGE:-} + restart: unless-stopped + container_name: automation-worker + volumes: + - /opt/seatable-server:/shared + environment: + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=dtable_db + - SEATABLE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db + - SEATABLE_MYSQL_DB_CCNET_DB_NAME=ccnet_db + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:?Variable is not set or empty} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - SECRET_KEY=${SECRET_KEY:?Variable is not set or empty} + - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} + - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https} + - TZ=${TIME_ZONE:?Variable is not set or empty} + - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:-http://seatable-server:80} + - INNER_DTABLE_SERVER_URL=${INNER_DTABLE_SERVER_URL:-http://dtable-server:5000} + - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} + - ENABLE_PYTHON_SCRIPT=${ENABLE_PYTHON_SCRIPT:-false} + - PYTHON_SCHEDULER_URL=${PYTHON_SCHEDULER_URL:-http://python-scheduler} + - PYTHON_SCHEDULER_AUTH_TOKEN=${PYTHON_SCHEDULER_AUTH_TOKEN:-} + - ENABLE_SEATABLE_AI=${ENABLE_SEATABLE_AI:-false} + - INNER_SEATABLE_AI_SERVER_URL=${INNER_SEATABLE_AI_SERVER_URL:-http://seatable-ai:8888} + - SEATABLE_LOG_TO_STDOUT=true + - LOG_LEVEL=${LOG_LEVEL:-INFO} + - STORAGE_TYPE=disk + depends_on: + mariadb: + condition: service_healthy + redis: + condition: service_healthy + networks: + - backend-seatable-net From 28be8642d3daad2beb44ea2d6ce53277c9cfa732 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 7 Sep 2026 11:22:43 +0200 Subject: [PATCH 4/6] Add YML file for dtable-server --- compose/dtable-server.yml | 42 +++++++++++++++++++++++++++++++++++++ compose/seatable-server.yml | 1 + 2 files changed, 43 insertions(+) create mode 100644 compose/dtable-server.yml diff --git a/compose/dtable-server.yml b/compose/dtable-server.yml new file mode 100644 index 0000000..704537c --- /dev/null +++ b/compose/dtable-server.yml @@ -0,0 +1,42 @@ +services: + dtable-server: + image: ${DTABLE_SERVER_IMAGE:-} + restart: unless-stopped + container_name: dtable-server + volumes: + - /opt/seatable-server:/shared + - type: bind + source: ./seatable-license.txt + target: /shared/seatable/seatable-license.txt + read_only: ${SEATABLE_LICENSE_FORCE_READ_ONLY:-false} + bind: + create_host_path: false + environment: + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=dtable_db + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:?Variable is not set or empty} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - TZ=${TIME_ZONE:?Variable is not set or empty} + - INNER_DTABLE_WEB_SERVICE_URL=${INNER_DTABLE_WEB_SERVICE_URL:-http://seatable-server:80} + - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} + - LOG_LEVEL=${LOG_LEVEL:-INFO} + depends_on: + mariadb: + condition: service_healthy + redis: + condition: service_healthy + seatable-server: + condition: service_healthy + networks: + - backend-seatable-net + healthcheck: + test: ["CMD-SHELL", "curl --fail http://localhost:5000/ping || exit 1"] + interval: 20s + retries: 3 + start_period: 30s + timeout: 10s diff --git a/compose/seatable-server.yml b/compose/seatable-server.yml index dc3ebfd..57bd8e0 100644 --- a/compose/seatable-server.yml +++ b/compose/seatable-server.yml @@ -52,6 +52,7 @@ services: - LOG_LEVEL=${LOG_LEVEL:-INFO} - ENABLE_SEATABLE_AI=${ENABLE_SEATABLE_AI:-false} - INNER_SEATABLE_AI_SERVER_URL=${INNER_SEATABLE_AI_SERVER_URL:-http://seatable-ai:8888} + - INNER_DTABLE_SERVER_URL=http://dtable-server:5000 labels: caddy_0: ${SEATABLE_SERVER_PROTOCOL:-https}://${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} caddy_0.reverse_proxy: "{{upstreams 80}}" From ab04b84363e88d08ce5c9220eda427bbcf0f0312 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 7 Sep 2026 12:31:05 +0200 Subject: [PATCH 5/6] Update default YML files --- compose/.env-release | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/.env-release b/compose/.env-release index 637cf58..381acdb 100644 --- a/compose/.env-release +++ b/compose/.env-release @@ -1,5 +1,5 @@ # components to be used; IMPORTANT: there should be no space between the files names ! -COMPOSE_FILE='caddy.yml,seatable-server.yml' +COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml' COMPOSE_PATH_SEPARATOR=',' # system settings From 1daf5ed6aba89c33e362ce1a346ab3ddbe2ae874 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 7 Sep 2026 14:05:52 +0200 Subject: [PATCH 6/6] Automatically set ENABLE_PYTHON_SCRIPT --- compose/python-pipeline.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compose/python-pipeline.yml b/compose/python-pipeline.yml index 77b8660..32dcc24 100644 --- a/compose/python-pipeline.yml +++ b/compose/python-pipeline.yml @@ -91,11 +91,15 @@ services: # Docker-Compose does not seem to create networks that are not used by any containers in the compose file(s) - runner-net - # Override ENABLE_PYTHON_SCRIPT for seatable-server + # Override ENABLE_PYTHON_SCRIPT for seatable-server and automation-worker seatable-server: environment: - ENABLE_PYTHON_SCRIPT=true + automation-worker: + environment: + - ENABLE_PYTHON_SCRIPT=true + networks: frontend-net: name: frontend-net