Setting Up SCADA LTS

Deploy SCADA-LTS on ALPON X5 AI or ALPON X4 through ALPON Cloud: launch the HiveMQ and MySQL dependencies, build an ARM64 SCADA-LTS image from the official repository, push it to the Sixfab Container Registry, and open the dashboard on port 8080.

Deploy SCADA-LTS on ALPON

Run SCADA-LTS as a container on your ALPON X5 AI or ALPON X4 for real-time monitoring and control of industrial devices over Modbus. This guide deploys the HiveMQ and MySQL dependencies through ALPON Cloud, builds an arm64 SCADA-LTS image, pushes it to the Sixfab Container Registry, and opens the dashboard on port 8080.

ALPON X5 AI ALPON X4 SCADA-LTS Industrial automation
ALPON · Tutorial · Containers · Industrial automation
How do I deploy SCADA-LTS on ALPON?

Deploy the HiveMQ and MySQL containers from the Applications → Deploy panel on ALPON Cloud, build an arm64 SCADA-LTS image from the official Scada-LTS repository with the Dockerfile and entrypoint below, push it to your Sixfab Container Registry, then deploy it on your ALPON X5 AI or ALPON X4 with CATALINA_OPTS set and Host Network enabled. Open http://<DEVICE_IP>:8080 in a browser to reach the SCADA-LTS dashboard.

Overview

SCADA-LTS is an open-source platform for industrial automation, enabling real-time monitoring and control of devices. Running it as a container on an ALPON X5 AI or ALPON X4 keeps supervision local: the device sits on the same network as your equipment, works without a cloud round-trip, and stays manageable through ALPON Cloud. By following this guide, you will learn how to configure Modbus (Ethernet/WiFi), build a Docker container, and deploy SCADA-LTS in ALPON Cloud.

SCADA-LTS depends on a MySQL database and, for MQTT data sources, on a HiveMQ broker, so this guide deploys those two containers first. The steps below are identical on ALPON X4 and ALPON X5 AI. For further configuration, see the official SCADA-LTS repository.

Before you start

You need an ALPON X5 AI or ALPON X4 registered on ALPON Cloud, and Docker installed on your build machine to build and push the image. Git (optional, for cloning the repository) and a text editor such as Nano or Vim are also useful. Familiarity with Docker and with industrial automation concepts (Modbus, SCADA systems) is assumed. New to container deployment? Start with Containerize Apps for ALPON.

Ports and networking

Before deploying, make sure ports 8080 and 3306 are not in use on your ALPON device, as these ports are required for the SCADA-LTS and MySQL connections.

If you're using a remote MySQL server, don't forget to configure your authorization settings properly. After making all these changes, rebuild the container.

Additionally, for HiveMQ to be accessible, configure SCADA-LTS to use the LAN IP address for communication, ensuring that SCADA-LTS can reach HiveMQ as needed.

  1. 1

    Deploy HiveMQ

    Open your device in ALPON Cloud, go to the Applications section, and click + Deploy. In the Deploy Container window, use these settings:

    Container Name A name for the broker container, e.g. hivemq.
    Image Check “I would like to use my own container path” and fill the Image name field with hivemq-container.
    Ports Click + Add More and add the two port mappings in the table below.
    FromTo
    308818080
    318831883

    Click Deploy to launch HiveMQ on the device.

  2. 2

    Deploy MySQL

    SCADA-LTS needs the MySQL setting log-bin-trust-function-creators enabled, which is supplied through a custom my.cnf. Create the file on the device first: in ALPON Cloud, click Open Remote Terminal and create /tmp/my.cnf:

    remote terminal · create my.cnf
    nano /tmp/my.cnf

    Add the following content, then save and exit the editor:

    /tmp/my.cnf ini
    [mysqld]
    log-bin-trust-function-creators=1

    Back in the Applications section, click + Deploy again and use these settings in the Deploy Container window:

    Container Name A name for the database container, e.g. mysql.
    Image Check “I would like to use my own container path” and fill the Image name field with mysql-container.
    Environment Click + Add More and add the four variables in the first table below.
    Volumes Click + Add More and mount the my.cnf file you just created (second table below).
    Enable Host Network Turn this on.
    KeyValue
    MYSQL_ROOT_PASSWORDroot
    MYSQL_DATABASEscadalts
    MYSQL_USERroot
    MYSQL_PASSWORDroot
    Read/WriteLocal PathTarget Path
    Read/Write/tmp/my.cnf/tmp/my.cnf

    Click Deploy to launch the MySQL server on the device.

  3. 3

    Prepare the SCADA-LTS build

    To build SCADA-LTS you need its source code and a Dockerfile. On your build machine, clone the repository:

    bash · clone Scada-LTS
    git clone https://github.com/SCADA-LTS/Scada-LTS.git

    Download the Scada-LTS WAR file

    Go to the Scada-LTS release page, find the latest stable version, and download the Scada-LTS.war file. Move it into the Scada-LTS folder you just cloned.

    Edit the Dockerfile

    Below is a Dockerfile that installs SCADA-LTS, prepares a runtime environment, and provides Modbus communication. Replace the Dockerfile in the cloned repository with the following:

    Dockerfile dockerfile
    FROM tomcat:9.0.86-jre11
    COPY tomcat/lib/mysql-connector-java-5.1.49.jar /usr/local/tomcat/lib/mysql-connector-java-5.1.49.jar
    COPY tomcat/lib/activation.jar /usr/local/tomcat/lib/activation.jar
    COPY tomcat/lib/jaxb-api-2.4.0-b180830.0359.jar /usr/local/tomcat/lib/jaxb-api-2.4.0-b180830.0359.jar
    COPY tomcat/lib/jaxb-core-3.0.2.jar /usr/local/tomcat/lib/jaxb-core-3.0.2.jar
    COPY tomcat/lib/jaxb-runtime-2.4.0-b180830.0438.jar /usr/local/tomcat/lib/jaxb-runtime-2.4.0-b180830.0438.jar
    
    COPY Scada-LTS.war /usr/local/tomcat/webapps/
    RUN apt update;
    RUN apt install -y unzip;
    RUN apt install -y wait-for-it;
    RUN apt clean;
    RUN rm -rf /var/lib/apt/lists/*;
    RUN ls -l;
    RUN cd /usr/local/tomcat/webapps/ && ls -l && mkdir Scada-LTS && unzip Scada-LTS.war -d Scada-LTS;
    COPY docker/config/context.xml /usr/local/tomcat/webapps/Scada-LTS/META-INF/context.xml
    
    COPY entrypoint.sh /entrypoint.sh
    RUN chmod +x /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    CMD ["/usr/bin/wait-for-it", "--host=database", "--port=3306", "--timeout=30", "--strict", "--", "/usr/local/tomcat/bin/catalina.sh", "run"]
    Using a remote database

    If you use a remote database, update only the IP address for database in the entrypoint.sh script below.

    Create the entrypoint.sh script

    The following entrypoint.sh script is necessary to ensure that the MySQL database hostname (database) is recognized by the container. If using a remote database, replace 127.0.0.1 with the IP address of your MySQL server. Save the script in the same directory as the Dockerfile:

    entrypoint.sh bash
    #!/bin/bash
    if ! grep -q "127.0.0.1 database" /etc/hosts; then
        echo "127.0.0.1 database" >> /etc/hosts
    fi
    
    exec "$@"
  4. 4

    Build, test, and push the SCADA-LTS image

    Before deploying on ALPON Cloud, build and test the image on your personal computer:

    bash · build and test locally
    docker build -t scadalts-container .
    docker run --network host -it scadalts-container

    With --network host the container shares your machine’s network, so SCADA-LTS’s default port (8080) is reachable directly and you can test locally at http://localhost:8080.

    After testing locally, rebuild the image for the arm64 architecture so it runs on the ALPON:

    bash · build for arm64
    docker buildx build --platform linux/arm64 -t scadalts-container .

    Once the build completes, log in to Sixfab Registry, click + Add Container, and follow the prompts to push the image.

    Pushing images to the Sixfab Container Registry

    For the full walkthrough of tagging and pushing an image, see Update Containers from the Sixfab Container Registry.

  5. 5

    Deploy the container on ALPON

    Open your device in ALPON Cloud, go to the Applications section, and click + Deploy. In the Deploy Container window, use these settings:

    Container Name The application name, e.g. scadalts-container.
    Image The Scada-LTS image and tag you pushed to the Sixfab Container Registry.
    Environment Click + Add More and add the variable in the table below.
    Enable Host Network Turn this on.
    Privileged Turn this on only if you will transfer data via USB (see the note below).
    KeyValue
    CATALINA_OPTS-Xmx2G -Xms2G
    USB data transfer

    If you will use a data transfer via USB, do not forget to enable the Privileged option on the deployment screen for SCADA-LTS to work correctly.

    Click + Deploy to launch SCADA-LTS on the device, then wait about 5 minutes for Scada-LTS to start.

  6. 6

    Open the SCADA-LTS dashboard

    After deployment, wait about 5 minutes, then find the device's local IP address under Asset Details → Network tab → Interface Monitoring → Details and open the dashboard in a browser:

    browser · SCADA-LTS dashboard
    http://<DEVICE_IP>:8080

    When the SCADA-LTS dashboard loads, configure your Modbus and other connections from the Data Source tab. If it doesn't load, confirm that the scadalts-container, MySQL, and HiveMQ containers are all running in the Applications section and that Host Network was enabled in step 5.

Ready when…
  • The HiveMQ, MySQL, and scadalts-container containers all show as running in the Applications section.
  • The dashboard loads at http://<DEVICE_IP>:8080.
  • You can add a Modbus data source from the Data Source tab.

SCADA-LTS is now running on the ALPON. Add your Modbus and MQTT data sources and build your first graphical view.

Production image policy: Replace floating :latest references with a reviewed immutable tag or digest, then record the selected version for rollback.


Did this page help you?