Deployment Overview of SeaTable on Server¶
Prerequisites and Basic Requirements¶
-
Operating System: Debian-based Linux distribution.
-
Privileges: Root or
sudoaccess is required to install packages and manage Docker services. -
Dependencies:
-
curl: Required for downloading Docker installation scripts and the SeaTable release archive. -
Docker: Installed via the officialget.docker.comscript. -
Docker Compose: Managed as part of the Docker installation.
-
-
Network: The server must have outbound internet access to download the Docker installation script and the SeaTable release package.
FQDN Configuration¶
The application is configured to be accessible via a specific Fully Qualified Domain Name (FQDN) based on the hostkey.in zone.
-
Domain Zone:
hostkey.in -
Hostname Prefix:
seatable -
Format:
seatable<Server ID>.hostkey.in -
External Port:
443(HTTPS)
The final accessible URL will follow the pattern seatable<Server ID>.hostkey.in:443.
File and Directory Structure¶
The application files, configuration, and data are located within the following directory structure:
-
Base Installation Directory:
/opt/seatable-compose -
Environment Configuration:
/opt/seatable-compose/.env -
Docker Compose Files:
-
/opt/seatable-compose/caddy.yml -
/opt/seatable-compose/seatable-server.yml
-
-
Archive Location:
/opt/seatable-compose/seatable-compose.tar.gz(source archive, may persist after extraction) -
License File:
/opt/seatable-compose/seatable-license.txt
Application Installation Process¶
The deployment utilizes a Docker Compose setup sourced from the latest SeaTable release.
-
Package Update: The system updates its APT package cache.
-
Docker Installation: Docker is installed by executing the official installation script via
curl. -
Directory Creation: The working directory
/opt/seatable-composeis created. -
Archive Download: The latest SeaTable release archive is downloaded from
https://github.com/seatable/seatable/releases/latest/download/seatable-compose.tar.gzto the working directory. -
Extraction: The archive is extracted into the working directory.
-
Configuration Initialization:
-
The default environment file is created by copying
.env-releaseto.envif it does not already exist. -
The timezone is automatically detected from the host (
/etc/timezone) and set in the.envfile. -
Security credentials (Admin email/password, Database password, Redis password, JWT key) and the server hostname are written to the
.envfile. -
The Docker image is explicitly set to
seatable/seatable-developer:latest.
-
Docker Containers and Their Deployment¶
The application runs within Docker containers orchestrated by Docker Compose.
-
Image Version:
seatable/seatable-developer:latest -
Compose Files: The deployment utilizes two specific files defined in the environment:
-
caddy.yml: Handles the reverse proxy and SSL termination. -
seatable-server.yml: Defines the SeaTable application services, database, and cache.
-
-
Execution: The containers are started and managed using the
docker compose up -dcommand from the/opt/seatable-composedirectory.
Proxy Servers¶
The deployment includes an integrated reverse proxy to handle SSL termination and routing.
-
Proxy Software: Caddy
-
Configuration: Defined in
/opt/seatable-compose/caddy.yml -
SSL/TLS: Managed automatically by Caddy as part of the container stack.
-
External Port: Traffic is received on port
443.
Available Ports for Connection¶
The following port is configured for external access:
| Protocol | Port | Purpose |
|---|---|---|
| HTTPS | 443 | Secure web access to the SeaTable panel |
Starting, Stopping, and Updating¶
Service management is performed via Docker Compose within the installation directory.
-
Start/Restart:
-
Stop:
-
Update: To update to the latest version of the developer build:
-
Stop the current containers:
docker compose down -
Pull the new images:
docker compose pull -
Restart the containers:
docker compose up -d
-
Environment Configuration Details¶
The core configuration parameters are stored in the /opt/seatable-compose/.env file. The following table summarizes the critical settings applied during deployment:
| Parameter | Description | Source/Value |
|---|---|---|
COMPOSE_FILE | List of Compose files to load | caddy.yml,seatable-server.yml |
COMPOSE_PATH_SEPARATOR | Separator for the file list | , |
TIME_ZONE | Server timezone | Auto-detected from /etc/timezone |
SEATABLE_SERVER_HOSTNAME | The FQDN for the application | seatable<Server ID>.hostkey.in |
SEATABLE_ADMIN_EMAIL | Default admin account email | [email protected] |
SEATABLE_ADMIN_PASSWORD | Default admin account password | Defined in deployment variables |
MARIADB_PASSWORD | MariaDB database password | Defined in deployment variables |
REDIS_PASSWORD | Redis cache password | Defined in deployment variables |
JWT_PRIVATE_KEY | Private key for JWT signing | Defined in deployment variables |
SEATABLE_IMAGE | Docker image tag | seatable/seatable-developer:latest |
Databases¶
The application relies on the following data persistence components, managed as Docker containers:
-
Primary Database: MariaDB
- Connection credentials are stored in the
MARIADB_PASSWORDenvironment variable.
- Connection credentials are stored in the
-
Cache: Redis
- Connection credentials are stored in the
REDIS_PASSWORDenvironment variable.
- Connection credentials are stored in the
-
Storage: Data is persisted in Docker volumes managed automatically by the
docker composeconfiguration.
Access Rights and Security¶
-
File Permissions: The installation directory
/opt/seatable-composeis created with standard system permissions. The.envfile and Docker configuration files retain the permissions set during the extraction and modification process. -
Authentication:
-
The system enforces password protection for the MariaDB database and Redis cache.
-
A unique
JWT_PRIVATE_KEYis generated and set for session management. -
The default administrative account is created with the email
[email protected].
-