Install
JasperNode runs on Linux (2 cores and 2 GB of RAM at least) or in a Linux container with Docker on macOS, Windows or Linux. There is one install line per shape.
Install from JasperX (recommended)
Section titled “Install from JasperX (recommended)”In JasperX, open a project and choose Add controller → Do you have your own hardware? → Generate a code. JasperX shows the install line for that controller, with its claim code in it, and the local web interface password, once. Run the line on the machine; the controller installs, claims itself into the project and receives its password. The Docker installer ends with:
Open https://app.jasperx.io; the controller appears there within a minute.The lines look like this, with your own code in place of JX-ABC123:
# Docker on Linux or macOScurl -fsSL https://dl2.jasperx.io/jn/docker.sh | JX_CLAIM=JX-ABC123 bash# Docker Desktop on Windows (PowerShell)$env:JX_CLAIM="JX-ABC123"; irm https://dl2.jasperx.io/jn/docker.ps1 | iex# Linux, natively, as a service that starts with the computercurl -sL https://dl2.jasperx.io/jn/install.sh | JX_CLAIM=JX-ABC123 sudo -E bash -A code works once and for 15 minutes. A JasperMate is claimed from the link on its sticker instead.
Install without a code
Section titled “Install without a code”The same lines without JX_CLAIM= install a controller that is not claimed. It starts and runs, and
the Docker installer ends with the next step:
Open https://app.jasperx.io; if this controller is not there yet, add it and run the line JasperX gives you.Until it is claimed once, its local web interface answers nothing: the password is set from JasperX.
Options
Section titled “Options”| Option | Effect |
|---|---|
JX_CLAIM=JX-… | Claims the controller into JasperX as it starts |
JN_CHANNEL=beta-v2 | Follows the beta channel instead of stable |
CNTR=modbus,s7 | Installs these connectors as it starts (install.sh); names as in the Connector catalog |
Docker
Section titled “Docker”Each controller lives in one folder, ~/jaspernode/<name> (%USERPROFILE%\jaspernode\<name> on
Windows). The installer asks for a name and a port (Return takes the port it offers) and prints the
commands for that folder:
cd ~/jaspernode/<name> && docker compose logs -f # the logcd ~/jaspernode/<name> && docker compose pull && docker compose up -d # updateWithout the installer, with a claim code from JasperX’s Add controller:
docker run -d --name jaspernode --restart unless-stopped -p 9009:9009 \ -e JX_CLAIM=JX-ABC123 \ -v jaspernode-data:/var/lib/jaspernode \ jaspernode/jaspernode:latest-v2The claim is used once, on the first start that finds it; later starts ignore it. To claim a
container started without one, generate a fresh code, docker rm -f jaspernode, and run the line
above again with the same volume: the controller keeps its data. --restart unless-stopped is
needed: the controller restarts by exiting. Port 9009 is the
local web interface.
In a container, network connectors (Modbus TCP, MQTT, S7, InfluxDB, Modbus Server) work as they do natively. EtherCAT and LiDAR need Linux hardware; serial devices need a network-serial gateway or a port passed into the container.
install.sh installs JasperNode as a systemd service under its own unprivileged user, and adds
jnsm to manage it (jnsm status, jnsm logs-follow, jnsm restart). Re-running the line updates
it.