Deployment guide

Apache StreamPipes

Overview

Apache StreamPipes is a self-service (Industrial) IoT toolbox that lets you connect, analyse and explore IoT data streams without writing code. It pairs a web UI with a visual pipeline editor, a library of connectors (StreamPipes Connect) for industrial and IoT protocols, a catalogue of data processors and sinks, and live dashboards.

The SecureAnyCloud image installs the official StreamPipes installer and compose Docker stack: the StreamPipes core backend, the Angular web UI, a CouchDB user and metadata store, an InfluxDB time-series sink, a NATS message broker, and the full IIoT extensions library. It runs under Docker behind an nginx reverse proxy on port 80, keeps every container volume on a dedicated Azure data disk, and seeds a fresh per-VM administrator on the first boot of every VM.

What you get:

  • The official Apache StreamPipes 0.98.0 self-hosted stack running under Docker (backend core, web UI, CouchDB, InfluxDB, NATS, the all-IIoT extensions library)
  • nginx on :80 as a reverse proxy to the StreamPipes UI, with an unauthenticated static health endpoint for load balancers
  • A per-VM administrator generated on first boot, with a unique password recorded in a root-only file, so every VM is secured independently
  • Docker data-root relocated onto a dedicated 60 GiB Azure data disk at /var/lib/streampipes. All container images and volumes (the CouchDB store, the InfluxDB time-series data and the backend assets) survive OS changes and can be resized independently.
  • The whole multi-container stack managed as one streampipes.service systemd unit, plus docker.service and nginx.service, all enabled
  • The message broker and databases bound to the internal Docker network only, so just 22/tcp and 80/tcp are exposed
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. Standard_B8ms (8 vCPU / 32 GiB RAM) is the recommended starting size, because the multi-container StreamPipes stack needs the memory.

In the NSG, allow inbound 22/tcp from your management network and 80/tcp. StreamPipes serves plain HTTP on port 80. For production, terminate TLS in front of it with your own domain.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, select Create a resource, and search the Marketplace for Apache StreamPipes by SecureAnyCloud. Select Create.

On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).

Review the dedicated data disk on the Disks tab. Then select Review + create and Create.

Step 2 - Deploy from the Azure CLI

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:apache-streampipes-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name streampipes \
  --image sac1647283583153:apache-streampipes-ubuntu-24-04:default:latest \
  --size Standard_B8ms \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name streampipes --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the stack is running

The StreamPipes containers run under Docker, fronted by nginx. On first boot, the stack seeds the per-VM administrator and starts. The multi-container stack can take a few minutes to become fully healthy after the VM is created.

systemctl is-active docker.service nginx.service

Both report active. You can list the running containers with:

sudo docker compose -f /opt/streampipes/compose/docker-compose.yml ps

The whole stack is also managed as a single systemd unit. Use sudo systemctl status streampipes and sudo systemctl restart streampipes to control every container together.

Step 5 - Retrieve your per-VM admin credentials

The administrator password is generated uniquely on the first boot of your VM and written to a root-only file:

sudo cat /root/streampipes-credentials.txt

This file contains STREAMPIPES_ADMIN_EMAIL (admin@sac.local) and STREAMPIPES_ADMIN_PASSWORD. These are the credentials for the web UI and the REST API. Store them in a safe place.

Step 6 - Confirm the health endpoint

nginx exposes an unauthenticated static health endpoint for load balancers and probes, and proxies everything else to the StreamPipes web UI:

curl -s http://localhost/health

It returns ok. The web UI is reachable through the same nginx on port 80:

curl -s -o /dev/null -w 'UI -> HTTP %{http_code}\n' http://localhost/

It returns HTTP 200.

Step 7 - Confirm the admin login API

The StreamPipes backend exposes a login endpoint that returns a JWT token for valid credentials and rejects invalid ones. Substitute the password from Step 5 for <STREAMPIPES_ADMIN_PASSWORD>, then confirm that a correct password is accepted and a wrong one is rejected:

curl -s -o /dev/null -w 'login -> HTTP %{http_code}\n' \
  -X POST -H 'Content-Type: application/json' \
  -d '{"username":"admin@sac.local","password":"<STREAMPIPES_ADMIN_PASSWORD>"}' \
  http://localhost/streampipes-backend/api/v2/auth/login

A correct password returns HTTP 200, and a wrong password returns HTTP 401. This confirms that the per-VM administrator was seeded and that authentication is enforced.

Step 8 - Sign in to the web UI

Browse to http://<vm-public-ip>/ and sign in with the email admin@sac.local and the password from Step 5. The StreamPipes web UI is where you connect data, build pipelines and explore your streams.

  • Pipelines is where you create, start, stop and monitor your data pipelines and reusable functions.
  • StreamPipes Connect is where you add data sources. Choose a built-in adapter (MQTT, OPC-UA, Kafka, HTTP, files and many more from the IIoT extensions library) to ingest a live stream.
  • Dashboards let you visualise the output of your running pipelines with live widgets: charts, gauges, tables and maps.

Step 9 - Confirm data lives on the dedicated disk

Docker's data-root is relocated onto the dedicated Azure data disk. Every container image and volume, including the CouchDB user and metadata store, the InfluxDB time-series data and the backend assets, lives there and survives OS changes:

findmnt /var/lib/streampipes

A separate Azure data disk backs the mount. It is captured into the image and re-provisioned on every VM. To confirm that Docker is using it, run:

sudo docker info -f '{{.DockerRootDir}}'

It prints /var/lib/streampipes/docker.

Building your first pipeline

StreamPipes turns raw streams into actionable insight without code. In the web UI:

  • Open Connect and add an adapter for your data source, for example an MQTT topic or an OPC-UA server.
  • Open Pipelines and drag your new stream onto the canvas. Then chain data processors (filters, aggregations, enrichments) and a sink (store to the built-in time-series database, forward to a broker, or trigger a notification).
  • Start the pipeline and open a Dashboard to watch the live output.

See the Apache StreamPipes documentation for the full catalogue of adapters, processors and sinks.

Maintenance

  • Admin credentials: the per-VM administrator is in /root/streampipes-credentials.txt. Change the password from the user menu in the web UI after your first sign-in.
  • Data: all container volumes live on the /var/lib/streampipes data disk (Docker data-root). Snapshot or resize that disk for backups.
  • Stack: manage the whole stack with sudo systemctl <status|restart|stop> streampipes, or manage individual containers with sudo docker compose -f /opt/streampipes/compose/docker-compose.yml <ps|logs|restart>.
  • TLS: StreamPipes serves plain HTTP on port 80. Front it with TLS (for example with certbot) and your own domain before you run it in production.
  • Security patches: unattended-upgrades remains enabled so the OS continues to receive security updates automatically.

Support

SecureAnyCloud provides 24/7 expert support for this image. Contact sales@secureanycloud.com.

Deploy on Azure

Launch Apache StreamPipes on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure