Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions docs/installation/cluster/dtable-db-standalone.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ Apply the following required changes to this file:
- ENABLE_DTABLE_STORAGE_SERVER=true # required for big data backup
- ENABLE_SEAFILE_SERVER=false
- ENABLE_DTABLE_WEB=false
- ENABLE_DTABLE_SERVER=false
- ENABLE_DTABLE_EVENTS=false
- ENABLE_API_GATEWAY=false
- SEATABLE_START_MODE=cluster # Don't run any database update processes
Expand Down Expand Up @@ -96,7 +95,6 @@ services:
- ENABLE_DTABLE_STORAGE_SERVER=true
- ENABLE_SEAFILE_SERVER=false
- ENABLE_DTABLE_WEB=false
- ENABLE_DTABLE_SERVER=false
- ENABLE_DTABLE_EVENTS=false
- ENABLE_API_GATEWAY=false
- SEATABLE_START_MODE=cluster
Expand Down
2 changes: 0 additions & 2 deletions docs/installation/cluster/dtable-events-background-node.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ Apply the following required changes:
# should be disabled
- ENABLE_DTABLE_DB=false
- ENABLE_DTABLE_WEB=false
- ENABLE_DTABLE_SERVER=false
- ENABLE_API_GATEWAY=false
- SEATABLE_START_MODE=cluster
```
Expand Down Expand Up @@ -116,7 +115,6 @@ services:
- ENABLE_SEAFILE_SERVER=true
- ENABLE_DTABLE_DB=false
- ENABLE_DTABLE_WEB=false
- ENABLE_DTABLE_SERVER=false
- ENABLE_API_GATEWAY=false
- SEATABLE_START_MODE=cluster
extra_hosts:
Expand Down
115 changes: 39 additions & 76 deletions docs/installation/cluster/dtable-server-standalone.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,105 +11,69 @@ The next step in building your SeaTable cluster is to move the `dtable-server` t

## Setting up a standalone dtable-server

Prepare a new node with Docker installed, and copy the following files from one of your existing nodes to the new node:

- `/opt/seatable-compose/.env`
- `/opt/seatable-compose/seatable-license.txt`

Edit the `.env` file on the new node and ensure the `COMPOSE_FILE` variable references only a single YAML file:
Prepare a new node with Docker installed, and create a new directory for the configuration files:

```bash
COMPOSE_FILE='seatable-server-standalone.yml'
mkdir -p /opt/seatable-compose
cd /opt/seatable-compose
```

Copy `seatable-server.yml` to `seatable-server-standalone.yml` and make the following changes to configure it as a standalone `dtable-server`.

### Required changes to `seatable-server-standalone.yml`

Apply the following required changes to this file:
You will need to create two files on this new node: `.env` and `dtable-server.yml`.

??? success "Remove all services except seatable-server"
### Create `.env`

The standalone node only requires the `seatable-server` service. Remove all other services (such as redis, mariadb, or caddy).
Create a `.env` file and populate it with the following content. Make sure to replace the placeholder values with the actual values from your cluster environment:

??? success "Add additional environment variables"
```env
COMPOSE_FILE='dtable-server.yml'
COMPOSE_PATH_SEPARATOR=','

Add or update the following environment variables to ensure only the `dtable-server` is enabled:
DTABLE_SERVER_IMAGE=seatable/dtable-server-js:7.0.0-testing
TIME_ZONE='Europe/Berlin'

```yaml
environment:
#... all default environment variables in seatable-server.yml ...
# this node should only run dtable-server, all other services are disabled
- ENABLE_DTABLE_DB=false
- ENABLE_DTABLE_STORAGE_SERVER=true
- ENABLE_SEAFILE_SERVER=false
- ENABLE_DTABLE_WEB=false
- ENABLE_DTABLE_SERVER=true
- ENABLE_DTABLE_EVENTS=false
- ENABLE_API_GATEWAY=false
- SEATABLE_START_MODE=cluster
```

??? success "Expose port 5000"

The `dtable-server` node must be accessible to other nodes. Add the following to the `seatable-server` service:

```yaml
ports:
- 5000:5000
```
MARIADB_HOST=172.16.0.2
MARIADB_PORT=3306
MARIADB_USER=seatable
MARIADB_PASSWORD=seatable_password

??? success "Configure internal network communication"
REDIS_HOST=172.16.0.3
REDIS_PORT=6379
REDIS_PASSWORD=

Node-to-node communication uses the internal network. Ensure all nodes can reach each other by adding their names and private IP addresses:

```yaml
extra_hosts:
- "dtable-web:10.0.0.2"
- "dtable-db:10.0.0.3"
- "dtable-server:10.0.0.4"
```
JWT_PRIVATE_KEY=
```

### Example: `dtable-server-standalone.yml`
### Create `dtable-server.yml`

For reference, here is an example of what your `dtable-server-standalone.yml` might look like. Do not copy and paste directly — adapt to your environment as needed.
Next, create the `dtable-server.yml` file to configure the standalone `dtable-server` instance. Node-to-node communication uses the internal network, so ensure you update `extra_hosts` with the correct IPs of your other cluster nodes if you use hostnames to connect.

```yaml
---
services:
seatable-server:
image: ${SEATABLE_IMAGE:-seatable/seatable-enterprise:x.x.x}
dtable-server:
image: ${DTABLE_SERVER_IMAGE:-seatable/dtable-server-js:7.0.0-testing}
restart: unless-stopped
container_name: seatable-server
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}
environment:
...
...
# this node should only run dtable-server
- ENABLE_DTABLE_DB=false
- ENABLE_DTABLE_STORAGE_SERVER=true
- ENABLE_SEAFILE_SERVER=false
- ENABLE_DTABLE_WEB=false
- ENABLE_DTABLE_SERVER=true
- ENABLE_DTABLE_EVENTS=false
- ENABLE_API_GATEWAY=false
- SEATABLE_START_MODE=cluster
ports:
- 5000:5000
- "5000:5000"
environment:
- TIME_ZONE=${TIME_ZONE}
- 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:-}
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
- DTABLE_SERVER_CLUSTER_NODE_ID=${DTABLE_SERVER_CLUSTER_NODE_ID:-}
- DTABLE_SERVER_CLUSTER_LOCAL_NODE_URL=${DTABLE_SERVER_CLUSTER_LOCAL_NODE_URL:-}
extra_hosts:
- "dtable-web:10.0.0.2"
- "dtable-db:10.0.0.3"
- "dtable-server:10.0.0.4"
networks:
- frontend-net
networks:
frontend-net:
name: frontend-net
```

Now, start `dtable-server` for the first time and monitor the logs:
Expand Down Expand Up @@ -162,7 +126,6 @@ Now that `dtable-server` is running on a separate node, update `dtable-web` to u
- "8000:8000"
```


??? success "Update API-Gateway"

Open the configuration file `conf/dtable-api-gateway.conf` and add these lines to specify the location of `dtable-server`:
Expand Down
4 changes: 4 additions & 0 deletions docs/upgrade/extra-upgrade-notice.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ description: Version-specific upgrade notices and required configuration changes

# Extra upgrade notice

## 7.0

We use a separate `dtable-server` image, and the `seatable` image no longer launches the `dtable-server` service. You simply need to update `seatable-server.yml` and the images, then start the service.

## 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).
Expand Down
Loading