1) Linux build (standalone)
2.1 Unpack & prerequisites
1.2) Directory layout of Nexalis Agent
The Nexalis Agent Linux build containsnexalis_agent.sh, watchdog.sh, gRPC_kafka (binary + config_gRPC_kafka.json + certs/), and connectors with their own device_models/ and (if needed) certs/.
1.3) Start / stop / restart
1.4) Set up auto-start. Example with Debian and Systemd
This service ensures the Nexalis Agent starts automatically when the Debian boots (similar procedure with other OS distributions using Systemd). 🛠 Service File Location. Create:/etc/systemd/system/nexalis_agent.service
✅ Service Content
- Replace WorkingDirectory and ExecStart with the correct absolute paths on your system.
- Use absolute paths for both variables.
- Ensure
watchdog.shis launched here so systemd can handle auto-start properly. - Replace
your-usernameandyour-passwordwith your actual Kafka SASL credentials.
2) Docker deployment
2.1 Unpack & prerequisites
Once you receive nexalis_agent_build_docker.zip, unzip it:config_docker_launcher.json— launch parameters (env, volume path, container name)docker_launcher.sh— helper script to run the containernexalis_agent_build_docker.tar— the Docker imagenexalis_agent_volume/— shared host directory for configs and logsutils/(e.g., helper scripts)VERSION
/app) mirrors the build: Agent scripts, gRPC_kafka/, connectors/, logs/, config.json.Host volume (
nexalis_agent_volume/) holds your editable configs and the logs:
2.2 Install Docker & Configure auto-start & load image (Debian example)
2.3 Configure Nexalis Agent
In./nexalis_agent_volume, configure:
config.json(Nexalis Agent configuration)- Connector device models and certificates (e.g.,
connectors/opcua_connector/device_models,connectors/opcua_connector/certs, etc.) gRPC_kafka/config_gRPC_kafka.jsonlogs/(empty folder; log files will be created by the container)
config_docker_launcher.json. Use exactly one of the following valid JSON examples (remove any comments; JSON does not support # comments).
2.4 Configure config_docker_launcher.json
Option A — SASL_SSL (username/password)
Option B — mTLS (no SASL credentials)
- Pick a unique
NAME_DOCKER_CONTAINERper environment (e.g., staging vs. production). - You may use an absolute path for
NEXALIS_VOLUME_PATH. - Validate the file before running:
2.5 Launch container
docker, jq), checks the JSON config file, and ensures the volume path and image exist before starting the container.
It runs a docker run equivalent with:
-d— run the container in detached mode--restart always— container restarts automatically on boot or after a crash${env_args[@]}— environment variables such asKAFKA_SASL_USERNAMEandKAFKA_SASL_PASSWORD(if SASL authentication is used)--name "$NAME_DOCKER_CONTAINER"— the container name-vvolume mounts for configuration, device models, certificates, and logs:config.json(Agent configuration)connectors/opcua_connector/certsconnectors/opcua_connector/device_modelsconnectors/modbus_connector/device_modelsconnectors/dnp3_connector/device_modelsgRPC_kafka/certsgRPC_kafka/config_gRPC_kafka.jsonlogs/
- The container image (default:
nexalis_agent_build_docker:latest)