S5 - Dashboards + Analysis, Single Machine (Docker)

Install CAST Imaging with Dashboards and Analysis capability on a single machine using Docker

Overview

This guide covers installing CAST Imaging with Dashboards and Analysis capability on a single machine using Docker. Users can run analysis and view aggregated results through CAST Dashboards.

What is installed:

Component Description
imaging-services Front-end services: gateway, console, auth, SSO, control panel
dashboards CAST Dashboards: Management, Engineering and Security
analysis-node Analysis engine (includes CAST Imaging Core ≥ 8.4 as a Docker image)

When to use: Environments that require analysis and Dashboards access but do not need the CAST Imaging Viewer.


Requirements

The requirements below are tailored to this scenario (single machine, standalone mode). Before you install, read the full requirements pages, which cover all platforms and topologies in detail:

Components installed

ComponentRole
imaging-servicesFront-end services: gateway, console, auth, SSO, control panel
dashboardsCAST Health/Management Dashboards (read-only KPIs)
analysis-nodeAnalysis engine

Hardware

  • RAM: 32GB RAM absolute minimum
  • Installation disk: approx. 20GB for the installation
  • Analysis & result storage: 256GB minimum (1TB for multiple complex/large applications)

Full hardware requirements →

TCP ports

Only the ports for this scenario's components are listed (Linux via Docker/Podman):

imaging-services
  • 2285: PostgreSQL (embedded)
  • 2381: Control Panel
  • 8090: Gateway
  • 8091: Console
  • 8092: Authorization
  • 8096: Keycloak
  • 8098: Control Panel
dashboards
  • 8097: Dashboards
analysis-node
  • 8099: Analysis Node

Firewall: Open only port 8090 (TCP) inbound if you or your users need to access CAST Imaging from another machine on the network.

Database

CAST Imaging requires PostgreSQL. PostgreSQL 14.x-18.x (64-bit); 18.x recommended. Releases 16.x and above require specific com.castsoftware.imaging.core versions.

On Linux via Docker/Podman, a PostgreSQL instance is provided and managed automatically as a container and used by default (DB_MODE=embedded). To use your own database instead, set DB_MODE=external in configuration.conf and supply the connection details; you are also free to add further database instances after installation.

Schemas created automatically:

  • Per onboarded application: <application_name>_local, <application_name>_central, <application_name>_mngt
  • general_measure (consolidated Dashboard results)
  • control_panel (persistence)
  • keycloak (persistence)

Full database requirements →

Software

Operating system, Java, supported browsers and user/service permissions apply. See the full software requirements and the disk space requirements.


Before you start

  1. Air-gapped / offline environments: If your target machine does not have internet access, you must pre-download all required Docker images on an internet-connected machine and transfer them before running the installer. See the Air-gapped installation section below.

  2. Extend Local Server: If your environment does not permit access to CAST Extendexternal link over the internet, you will need to install the Extend Local Server separately before completing this guide.


Step 1 - Download the installation media

Download the installer using curl:

$ curl -# -O -J "https://extend.castsoftware.com/api/package/download/com.castsoftware.imaging.all.docker/<version>?platform=linux_x64" \
  -H "x-nuget-apikey: <api-key>" \
  -H "accept: application/octet-stream"

Where:

Example for latest release:

$ curl -# -O -J "https://extend.castsoftware.com/api/package/download/com.castsoftware.imaging.all.docker/latest?platform=linux_x64" \
  -H "x-nuget-apikey: a9999a9a-c999-999d-999b" \
  -H "accept: application/octet-stream"

Unzip the resulting ZIP file anywhere on your local disk:

$ unzip /path/to/<installer>.zip -d /path/to/folder

Where:

  • -d /path/to/folder: tells the unzip utility to unzip to a specific folder (omitting the option will unzip to the current folder)

The following files and folders will be created:

  • cast-imaging-dashboards/ (folder)
  • cast-imaging-node/ (folder)
  • cast-imaging-services/ (folder)
  • cast-imaging-viewer/ (folder)
  • tools/ (folder)
  • cast-imaging-install.sh
  • cast-imaging-install-podman.sh
  • cast-imaging-update.sh
  • configuration.conf

Air-gapped installation

If the target machine(s) has no internet access, pull and export all required images on an internet-connected machine, then transfer and load them on the target machine(s) before running the installer.

On an internet-connected machine - pull and export each image:

$ docker pull <image>:<version>
$ docker save <image>:<version> -o <filename>.tar

Transfer all .tar archives to the target machine (secure copy or removable media).

On the target machine - load each image:

$ docker load -i <filename>.tar

Verify all images are available:

$ docker image ls

Required images:

Component Image Pull & export Load
Gateway (imaging-services) castimaging/gateway docker pull castimaging/gateway:<ver> · docker save castimaging/gateway:<ver> -o gateway.tar docker load -i gateway.tar
Control Panel (imaging-services) castimaging/admin-center docker pull castimaging/admin-center:<ver> · docker save castimaging/admin-center:<ver> -o admin-center.tar docker load -i admin-center.tar
SSO Service (imaging-services) castimaging/sso-service docker pull castimaging/sso-service:<ver> · docker save castimaging/sso-service:<ver> -o sso-service.tar docker load -i sso-service.tar
Auth Service (imaging-services) castimaging/auth-service docker pull castimaging/auth-service:<ver> · docker save castimaging/auth-service:<ver> -o auth-service.tar docker load -i auth-service.tar
Console (imaging-services) castimaging/console docker pull castimaging/console:<ver> · docker save castimaging/console:<ver> -o console.tar docker load -i console.tar
Dashboards (dashboards) castimaging/dashboards-v3 docker pull castimaging/dashboards-v3:<ver> · docker save castimaging/dashboards-v3:<ver> -o dashboards-v3.tar docker load -i dashboards-v3.tar
Analysis node (analysis-node) castimaging/analysis-node docker pull castimaging/analysis-node:<ver> · docker save castimaging/analysis-node:<ver> -o analysis-node.tar docker load -i analysis-node.tar
ETL Service (imaging-viewer) castimaging/etl-service docker pull castimaging/etl-service:<ver> · docker save castimaging/etl-service:<ver> -o etl-service.tar docker load -i etl-service.tar
AI Service (imaging-viewer) castimaging/ai-service docker pull castimaging/ai-service:<ver> · docker save castimaging/ai-service:<ver> -o ai-service.tar docker load -i ai-service.tar
APIs Service (imaging-viewer) castimaging/imaging-apis docker pull castimaging/imaging-apis:<ver> · docker save castimaging/imaging-apis:<ver> -o imaging-apis.tar docker load -i imaging-apis.tar
Viewer Server (imaging-viewer) castimaging/viewer docker pull castimaging/viewer:<ver> · docker save castimaging/viewer:<ver> -o viewer.tar docker load -i viewer.tar
Neo4j (imaging-viewer) castimaging/neo4j docker pull castimaging/neo4j:<ver> · docker save castimaging/neo4j:<ver> -o neo4j.tar docker load -i neo4j.tar
PostgreSQL (required for 3.0.x-funcrel - 3.5.x-funcrel, for 3.6.0-funcrel or later, required only when DB_MODE=embedded) postgres:15 docker pull postgres:15 · docker save postgres:15 -o postgres15.tar docker load -i postgres15.tar
curl (≥ 3.6.0-funcrel: for 3.6.0-funcrel use curl 8.7.1; for 3.6.1-funcrel or later use 8.19.0.) curlimages/curl docker pull curlimages/curl:<ver> · docker save curlimages/curl:<ver> -o curl.tar docker load -i curl.tar
psql (required in ≥ 3.6.0-funcrel when using a custom/external PostgreSQL instance - DB_MODE=external) alpine/psql docker pull alpine/psql:latest

docker save alpine/psql:latest -o psql.tar
docker load -i psql.tar
CAST Extend Local Server castimaging/extend-proxy docker pull castimaging/extend-proxy

docker save castimaging/extend-proxy -o extend-proxy.tar
docker load -i extend-proxy.tar

After loading all images, open configuration.conf in a text editor and set:

OFFLINE_MODE=true

Step 2 - Configure the installation

Locate the configuration.conf file at the root of the unzipped files and open it in a text editor (nano or vi). See Installation variables for a full reference of all variables.

General rules:

  • Use forward slashes for all paths
  • Do not use localhost, 127.0.0.1, or simple hostnames for _HOSTNAME variables
  • CAST recommends leaving port numbers at default values where possible

Note in particular:

xxx_HOSTNAME variables

Locate the following variables in the configuration.conf file (they determine the hostname for each CAST Imaging component you are installing):

  • IMAGING_SERVICES_HOSTNAME
  • IMAGING_NODE_HOSTNAME
  • IMAGING_DASHBOARDS_HOSTNAME

For each variable, configure the current machine’s FQDN (fully qualified domain name) or static IP address (use hostname -f (FQDN) or hostname -I (IP address) to determine this).

DB_MODE

Available in ≥ 3.6.0-funcrel

Use DB_MODE (on the machine running imaging-services for multi-machine mode) to control whether the embedded PostgreSQL Docker container is used or an external PostgreSQL instance:

  • DB_MODE=embedded (default) - deploys a postgres container as part of the installation
  • DB_MODE=external - uses an existing external PostgreSQL instance (configure the relevant DB_* variables)

See Installation variables and Database requirements for details.

Firewall

For single-machine deployments, open only port 8090 (TCP) inbound if you or your users need to access CAST Imaging from another machine on the network.


Step 3 - Make the install script executable

Ensure the installation script is set to executable:

$ chmod +x cast-imaging-install.sh

Step 4 - Run the installation

Run the following commands (one after the other) from the root of the unzipped files:

$ ./cast-imaging-install.sh imaging-services
$ ./cast-imaging-install.sh dashboards
$ ./cast-imaging-install.sh analysis-node

Step 5 - Verify the installation

Check that all containers are running:

$ docker ps

You should see 8 containers (or 7 if using an external PostgreSQL instance):

Command Expected containers
imaging-services 6
dashboards 1
analysis-node 1

Full list:

Container Port(s) Base OS
postgres 2285 Debian GNU/Linux 12
gateway 8090 Alpine Linux
console 8091 Alpine Linux
auth-service 8092 Alpine Linux
sso-service 8096 Red Hat Enterprise Linux 9
control-panel 2381, 8098 Alpine Linux
analysis-node 8089 Rocky Linux 8
dashboards 8097 Ubuntu 24.04

Set permissions on the analysis-node data volume

Run the following command to ensure the root user has access to the persistent volumes shared with the analysis-node container:

$ chown -R 0:0 /opt/cast/shared

Replace /opt/cast/shared with the shared sub-folder of your INSTALL_DIR value if you changed the default.

Data storage

All analysis data is stored under the INSTALL_DIR path (/opt/cast by default).

Database data for the embedded PostgreSQL instance (DB_MODE=embedded) is stored in the Docker volume cast-imaging-db-data (view with docker volume ls). By default the data is stored under $INSTALL_DIR/cast-imaging-db-data/data (for example /opt/cast/cast-imaging-db-data/data). From 3.6.4-funcrel you can store it on a different host path by setting CAST_IMAGING_DB_DATA_VOLUME_PATH in configuration.conf (see Installation variables). If you reinstall imaging-services and this volume already exists, it will be reused and existing applications will remain visible.


Step 6 - Initial startup configuration

Browse to:

http://<IMAGING_SERVICES_HOSTNAME>:8090

Log in using the default credentials: admin / admin

Configure the Licensing strategy. Choose one of:

  • Named Application - each onboarded application requires its own dedicated license key
  • Contributing Developers - a global license key based on the number of contributing developers

License key

Configure CAST Extend settings and Proxy settings:

CAST Extend settings

Verify that all components are available:

http://<IMAGING_SERVICES_HOSTNAME>:8090/admin/services

Services


Step 7 - Configure authentication

Out-of-the-box, CAST Imaging uses Local Authentication (admin/admin) managed by Keycloak.

CAST recommends switching to your enterprise authentication system (LDAP or SAML) before onboarding applications. Access the Keycloak UI using the kcadmin account (or the value of KEYCLOAK_LOGIN_ADMIN_USER if customized during installation). See Authentication for full instructions.


Connect AI tools to your results


Next steps


Uninstall