Deployment Overview

July 17, 2026 ยท View on GitHub

Deploy LogisticsX to a production VPS using a hand-maintained Docker Compose stack under deploy/, fronted by host nginx. Deployment is automated via GitHub Actions (push to prod); manual steps are documented for first setup.

Architecture

Internet -> Nginx (80/443 with SSL, on the host)
               |-- api.domain.com      -> API (:7000)
               |-- id.domain.com       -> Identity Server (:7001)
               |-- admin.domain.com    -> Admin Portal (:7002)
               |-- tms.domain.com      -> TMS Portal (:7003)
               |-- customer.domain.com -> Customer Portal (:7004)
               |-- domain.com          -> Website (:7005)
               +-- portainer.domain.com-> Portainer (:9000, separate stack)
                         |
                         v
                External PostgreSQL

All app container ports bind to 127.0.0.1; nginx is the only public entry point.

System Requirements

ResourceMinimumRecommended
CPU2 vCPU4 vCPU
RAM4 GB8 GB
Storage40 GB SSD80 GB SSD
OSUbuntu 22.04 LTSUbuntu 24.04 LTS

Deployment Steps

  1. VPS Setup - install Docker + nginx, configure the server and Portainer
  2. Docker Compose Deployment - configure and run the stack (automated or manual)

DNS Configuration

Create DNS A records pointing to your VPS IP:

api.yourdomain.com       -> YOUR_VPS_IP
id.yourdomain.com        -> YOUR_VPS_IP
admin.yourdomain.com     -> YOUR_VPS_IP
tms.yourdomain.com       -> YOUR_VPS_IP
customer.yourdomain.com  -> YOUR_VPS_IP
portainer.yourdomain.com -> YOUR_VPS_IP
yourdomain.com           -> YOUR_VPS_IP

Pre-deployment Checklist

  • VPS with SSH access
  • External PostgreSQL reachable from the VPS
  • Domain with DNS configured
  • Stripe API keys (for payments)
  • Resend API key (for emails)
  • Mapbox access token (for maps)

Guides

GuideDescription
VPS SetupInitial server configuration
Docker Compose DeploymentConfigure and run the stack
Environment VariablesConfiguration reference