Self-hosted Linux fleet control

Run your Linux fleet on infrastructure you operate.

Run your own control plane, MQTT data plane, and operator console. Enroll Linux devices, stream status over TLS MQTT, and keep identity and policy on infrastructure you operate.

  • Self-hosted

    You run the servers

  • MQTT over TLS

    Devices connect on 8883

  • HTTPS enrollment

    One-time device credentials

  • Linux agent

    meteorcli on each host

How it works

From empty server to managed fleet

  1. 1

    Run the platform

    Bring up the control plane, data plane and broker on servers you operate. Locally it is Docker Compose and one command.

    make dev && make seed
  2. 2

    Enroll a device

    Install meteorcli on a Linux host and register it with a one-time token from the console. It heartbeats over HTTPS, then opens MQTT over TLS.

    meteorcli register
    meteorcli run
  3. 3

    Operate from the console

    See each device's latest status and metrics, approve enrollment requests, and send a test message over MQTT.

    make dev-console

Follow the full guide

Operator console

See the whole fleet at a glance

Sign in, manage organizations, enroll devices and read each device's latest status and metrics. The console only talks to the control-plane API.

About the console
Devices
  • edge-gw-01Online
  • kiosk-lobbyOnline
  • lab-node-07Online
  • site-b-routerOffline
Illustration with sample devices.

Platform

Modules you can deploy on their own

Each plane is a process with its own Compose file. Join them on one host or point URLs across servers.

01

Control plane

Identity, organizations, device registry, enrollment, and MQTT policy. PostgreSQL last-value telemetry.

02

Data plane

EMQX session for the platform. Publish, subscribe, ingest to the control plane over HTTP.

03

Console

Operator UI for fleet and orgs. The browser talks only to the control-plane API.

04

Device agent

meteorcli on Linux: enroll, heartbeat, TLS MQTT. Two enrollment paths.

Connections

How the planes meet

Devices reach the control plane over HTTPS and the broker over MQTT. The data plane is the only process that holds the platform MQTT session. The operator console calls the control-plane API. This website has no line to the fleet.

Diagram linking the device plane to the control plane over HTTPS and to EMQX over MQTT, with the data plane holding the platform MQTT session and exchanging HTTP with the control plane. The operator console calls only the control-plane API. The website is not connected.

Read the architecture for each link, and what is deliberately not a plane.

FAQ

Common questions

The short answers on how the planes, devices and credentials fit together. The docs go deeper.

Still have a question?

Read the guides, or ask us directly.

What is MeteorCloud?

MeteorCloud is a self-hosted platform for Linux devices at the edge. You run the servers, and each device runs the meteorcli agent.

What are the three planes?

The control plane is the system of record for users, organizations, the device registry, enrollment and MQTT policy. The data plane holds the platform's MQTT session and carries live messages. The device plane is the meteorcli agent on each Linux host.

How do devices connect?

Each device makes two connections. It uses HTTPS to the control plane for enrollment, heartbeat and claim, and MQTT over TLS to the EMQX broker on port 8883 for status, metrics and command results. Commands return on the device's command topic.

How are device credentials handled?

Each device gets a username of the form device_<uuid> and a one-time password at registration or claim. The control plane stores only a hash of the password. mTLS device certificates are not implemented yet.

What telemetry is stored?

Today the latest status and metrics are stored on the device row in PostgreSQL. Timescale and ClickHouse are reserved configuration names and are not implemented.

Does the website or console connect to my devices?

No. The operator console calls only the control-plane API, and this website has no connection to the fleet.

From the journal

Designing Secure IoT Access and Dynamic Application URLs

MeteorCloud is being designed to use WireGuard for private device access and a reverse proxy for friendly HTTPS application URLs.

Continue reading
Technical diagram showing IoT devices connected through WireGuard for private access and a reverse proxy routing HTTPS application traffic to dynamic endpoints.

Latest insights

All articles

MeteorCloud

Infrastructure for the Connected-Device Era

MeteorCloud is a self-hosted, modular infrastructure platform for device fleets — from a single gateway to thousands of distributed edge devices.

Cloud-like infrastructure. Self-hosted. Built for fleets.

Explore MeteorCloud

Run your fleet on infrastructure you operate.

Start a local stack in minutes, then read how the planes fit together.

MeteorCloud — Self-hosted Linux fleet control · MeteorCloud