DocuSeal Server Deployment Overview¶
Prerequisites¶
The following parameters and conditions are required for the application to function correctly:
-
Operating System: CentOS, Rocky Linux, or AlmaLinux (for automatic firewall configuration).
-
Access: Superuser (
root) privileges to manage Docker and system directories. -
Ports:
-
80/tcp— for HTTP traffic. -
443/tcp— for HTTPS traffic. -
443/udp— for the QUIC protocol (HTTP/3).
-
FQDN of the final panel on hostkey.in domain¶
If a custom domain is not specified, the following standard template is used:
| Parameter | Value |
|---|---|
| Prefix | docuseal |
| Domain | hostkey.in |
| Full Template | docuseal{Server_ID_from_Invapi}.hostkey.in |
Files and Directory Structure¶
All main configuration files and application data are concentrated in the /opt/docuseal directory:
-
/opt/docuseal/compose.yml— Docker Compose file defining the containers. -
/opt/docuseal/Caddyfile— Caddy web server configuration file. -
/var/lib/postgresql/data(insidepostgres_datavolume) — PostgreSQL database data. -
/data/docuseal(insidedocuseal_datavolume) — DocuSeal application user data.
Application Installation Process¶
Deployment is performed by creating the necessary directories, generating configuration files (Caddyfile, compose.yml), and running containers via Docker Compose in detached mode. The application uses the latest available image version: docuseal/docuseal:latest.
Permissions and Security¶
-
Firewall: On CentOS, Rocky, or AlmaLinux-based servers, ports
80and443(TCP) are opened automatically. -
Directories: The
/opt/docusealdirectory is created with0755permissions, owned byroot. -
Configuration: Configuration files in
/opt/docusealhave0644permissions.
Databases¶
PostgreSQL 15 is used as the database management system.
-
Connection Method: Via the Docker internal network at
postgres:5432. -
User:
postgres. -
Database:
docuseal. -
Storage: Data is stored in the named volume
postgres_data.
Docker Containers and Execution¶
The application is deployed using the following containers:
DocuSeal App¶
-
Image:
docuseal/docuseal:latest -
Ports (expose):
3000 -
Volumes:
docuseal_data:/data/docuseal -
Environment Variables:
-
FORCE_SSL: domain address. -
DATABASE_URL: PostgreSQL connection string.
-
-
Restart Policy:
always
PostgreSQL¶
-
Image:
postgres:15 -
Volumes:
postgres_data:/var/lib/postgresql/data -
Environment Variables:
-
POSTGRES_USER:postgres -
POSTGRES_PASSWORD: specified password. -
POSTGRES_DB:docuseal
-
-
Restart Policy:
always
Caddy (Reverse Proxy)¶
-
Image:
caddy:latest -
Ports:
80/tcp,443/tcp,443/udp -
Volumes:
-
caddy_data:/data -
caddy_config:/config -
/opt/docuseal/Caddyfile:/etc/caddy/Caddyfile:ro
-
-
Command:
caddy run --config /etc/caddy/Caddyfile -
Restart Policy:
unless-stopped
Application Update¶
Updates are performed by running the pull command followed by a container restart:
Permissions Settings¶
All system directories and configuration files belong to the root user and root group. Access to files is restricted to ensure system security.
Configuration Files and Data Location¶
| Type | Path / Volume Name |
|---|---|
| Docker Compose Configuration | /opt/docuseal/compose.yml |
| Caddy Configuration | /opt/docuseal/Caddyfile |
| Application Data (Volume) | docuseal_data |
| Database Data (Volume) | postgres_data |
| Caddy Data (Volume) | caddy_data, caddy_config |
Available Connection Ports¶
-
HTTPS:
443/tcp(via Caddy proxy). -
HTTP:
80/tcp(for redirection to HTTPS).
Starting and Stopping the Application¶
Service management is performed via Docker Compose from the /opt/docuseal directory:
-
Start all containers:
-
Stop all containers:
Proxy Servers¶
The Caddy web server is used as a reverse proxy. It automatically manages SSL certificates and redirects traffic from port 443 to the application's internal port 3000. The proxy configuration is defined in the Caddyfile.