EVE-NG Linux VM SSH troubleshooting
September 20, 2025
Installing the GRFICSv2 Chemical plant
As we have seen, the GRFICSv2 simulator consists of four main components: HMI, PLC, Simulator, and EWS.
In a real-world ICS environment, the HMI, PLC, and Simulator are connected to the field network, where a gateway facilitates communication between the OT network and the field devices. The EWS (Engineering Workstation), on the other hand, is located within the OT network and communicates with the HMI and PLC through the router/gateway.
We can organize these components in a way that best suits our needs. The following instructions describe how to configure all components within the same OT network, similar to what we previously did with VirtuaPlant.
The communication between HMI, PLC, and the simulator uses the Modbus protocol. Unlike real-world systems, the HMI is implemented as a web-based interface. The EWS system, which is typically Windows-based, is represented here by a Linux system equipped with the OpenPLC SDK.
The complete scenario consists of four distinct VMs, although it is possible to run all components on the same Docker host.
Installing the Chemical Plant Container
Before setting up the environment, ensure you have two Linux systems with Docker installed. I used the latest Ubuntu LTS version and followed the official Docker installation guide.
Once the systems are ready, install the PLC simulation container on the first machine using:
docker run --name simulation --rm -d -p 80:80 -p 5020:5020 -p 5021:5021 -p 5022:5022 -p 5023:5023 -p 5024:5024 -p 5025:5025 dainok/grficsv2-simulation:latest
This command:
- Downloads and runs the latest Chemical Plant simulation container.
- Automatically removes the container when stopped (–rm).
- Exposes ports: 80 (for the web interface), 502X (for Modbus communication with the PLC).
After a few moments, you can access the simulator web interface by entering the host system’s IP address in a web browser using port 80.
Installing the PLC Container
The PLC is implemented using OpenPLCv2. While a newer version of OpenPLC exists, the differences were too significant, so the only way to ensure compatibility was to retain this outdated version.
Continue reading the post on Patreon .