SkylineGlobe Server can be deployed as a Linux container using Docker Compose on a supported Windows or Linux host. This method provides a repeatable deployment process using either the embedded SQLite database or an external PostgreSQL database.
For local testing, SGS can be exposed directly over HTTP. For secure deployments, NGINX can terminate the HTTPS connection and forward requests to SGS.
The following Docker Compose deployment options are available:
- Basic SQLite setup – Uses the embedded SQLite database and exposes SGS directly over HTTP on port 5000. This example does not include HTTPS configuration.
- SQLite with HTTPS via NGINX – Adds a reverse proxy using NGINX and secures access with a self-signed TLS certificate.
- PostgreSQL with HTTPS via NGINX – A production-ready setup using an external PostGIS-enabled PostgreSQL database and secure HTTPS routing through NGINX.
Each deployment option includes sample YAML files and detailed setup instructions. The examples assume that you organize all supporting files in a single project directory with the following structure:
project-root/
├── config/ # Contains SLSkylineGlobeServer.lic
├── data/ # SGS data
├── postgres_data/ # PostgreSQL data; PostgreSQL example only
└── nginx/ # NGINX examples only
├── nginx.conf # NGINX configuration
└── certs/ # TLS certificate and private key
├── tls.crt
└── tls.keyDeployment
- Download the docker-compose.yaml file for your deployment. This file defines how to deploy the SkylineGlobe Server container using Docker Compose including configuration for the image, ports, environment variables, and volumes. More about: SGS Deployment Settings
-
Create a new project folder for the Docker Compose project and copy the downloaded docker-compose.yaml into this folder and open it.
md C:\SGS_85_Docker copy "C:\Downloads\docker-compose.yaml" "C:\SGS_85_Docker\" cd C:\SGS_85_Docker
-
Create the following subfolders inside the project folder:
-
data: Stores SGS application data. -
config: Contains the SGS license file and other configuration files. If you don’t already have the file, download it from your Skyline Store account.md data
md config
-
-
Mount the data and config subfolders in the volumes: section of your docker-compose.yaml file:
volumes: - ./data:/app/data - ./config:/app/config
- If you want to apply TerraExplorer Fusion customizations, create the local folders or files that will be mounted inside the container for this purpose and then mount them:
- To mount multiple TerraExplorer Fusion customization files, create a
more-datasubfolder. Alternatively, prepare a single customization file, such asmy-config.json. -
Mount the created subfolder (keeps the original /app/tef/custom contents) or single file (adds/replaces one file; :ro = read-only). These custom paths are mounted to /app/tef/custom inside the container, in addition to the main mounts (/app/data and /app/config).
volumes: # Mount local folders for data persistence # Option 1: Mount a subfolder - ./more-data:/app/tef/custom/more-data # Option 2: Mount a single file - ./my-config.json:/app/tef/custom/my-config.json:ro
- To mount multiple TerraExplorer Fusion customization files, create a
- If you selected the SQLite with NGINX or PostgreSQL with NGINX deployment, configure HTTPS as described in Security Configuration Options for Deployment. The Basic SQLite example does not require this step.
-
Set the configuration parameters in the environment: section of your docker-compose.yaml file. More about: SGS Deployment Settings>
SGS__ServerConfig__<ParameterName>: <value>
- Common parameters include:
- CatalogDBType: The type of database to use. Options: SQLite (default) or PostgreSQL.
- LicenseServerURL: The URL of the floating license server. This parameter is required only when using a floating license. Set the LicenseServerURL parameter in the following format:
"LicenseServerURL": "https://cloud.skylineglobe.com/sws/[LICENSE_TOKEN]"
Replace [LICENSE_TOKEN] in the URL with the token from your subscription email or from your Skyline account page (https://cloud.skylineglobe.com/store/account).
-
Start the containers defined in the file docker-compose.yaml:
docker compose up -d
- Access SGS at the following:
- Basic SQLite - http://localhost:5000
- SQLite+NGINX (HTTPS) - https://sgs.localhost:8443
- PostgreSQL+NGINX (HTTPS) - https://sgs.localhost:8443
- If you used a self-signed certificate, the browser may display a security warning because the certificate was not issued by a trusted certificate authority. For development or internal testing, use the browser’s advanced options to continue:
- Chrome/Edge: Click Continue to sgs.localhost (unsafe).
- Firefox: Click Accept the Risk and Continue.
Basic Docker Operations:
# Start containers (detached) docker compose up -d # Stop and remove containers docker compose down # Pull latest images for all services docker compose pull # Load a new image from a local tar file docker load -i <path/to/image.tar> # Tag the loaded image as "latest" # (Make sure the repository/name matches the image reference in docker-compose.yaml) docker tag <source_image>:<version> <repository>/<image>:latest