Skip to content

Deployment Overview of SeaTable on Server

Prerequisites and Basic Requirements

  • Operating System: Debian-based Linux distribution.

  • Privileges: Root or sudo access 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 official get.docker.com script.

    • 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.

  1. Package Update: The system updates its APT package cache.

  2. Docker Installation: Docker is installed by executing the official installation script via curl.

  3. Directory Creation: The working directory /opt/seatable-compose is created.

  4. Archive Download: The latest SeaTable release archive is downloaded from https://github.com/seatable/seatable/releases/latest/download/seatable-compose.tar.gz to the working directory.

  5. Extraction: The archive is extracted into the working directory.

  6. Configuration Initialization:

    • The default environment file is created by copying .env-release to .env if it does not already exist.

    • The timezone is automatically detected from the host (/etc/timezone) and set in the .env file.

    • Security credentials (Admin email/password, Database password, Redis password, JWT key) and the server hostname are written to the .env file.

    • 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 -d command from the /opt/seatable-compose directory.

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:

    cd /opt/seatable-compose
    docker compose up -d
    

  • Stop:

    cd /opt/seatable-compose
    docker compose down
    

  • Update: To update to the latest version of the developer build:

    1. Stop the current containers: docker compose down

    2. Pull the new images: docker compose pull

    3. 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_PASSWORD environment variable.
  • Cache: Redis

    • Connection credentials are stored in the REDIS_PASSWORD environment variable.
  • Storage: Data is persisted in Docker volumes managed automatically by the docker compose configuration.

Access Rights and Security

  • File Permissions: The installation directory /opt/seatable-compose is created with standard system permissions. The .env file 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_KEY is generated and set for session management.

    • The default administrative account is created with the email [email protected].

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×