NocMate Connect is an optional tunnel that forwards app requests through our relay to a small
agent on your Checkmk server. With it, Checkmk does not need to be publicly reachable. Below
the most common questions about security, privacy and operations.
What is the data flow with Connect?
App β relay β agent β local Checkmk β back along the same path. The app does not know
any direct URL of your Checkmk server; it talks exclusively to
api.nocmate.app. The agent opens
an outbound HTTPS connection to the relay and fetches requests via long polling.
Is monitoring data stored at the relay?
No. Requests and responses are only passed through in the relay's RAM and discarded after
delivery. There are no snapshots, no cache, no body logging.
Only the routing metadata is persisted (user-key binding, token hash, last-seen timestamp).
Is the tunnel end-to-end encrypted?
Transport encryption: yes, every connection is TLS (HTTPS). Strictly technically it is not
classic end-to-end, because the relay sees requests in RAM during forwarding β that is the
same trust model as Cloudflare Tunnel, ngrok or Tailscale Funnel. We do not log content and
cache nothing. True end-to-end with ECDH key exchange between app and agent is planned as a
phase-2 extension; the relay would then only see routing headers and opaque ciphertext.
How is the tunnel protected against hijacking?
- Pairing code: 6 digits, valid for 5 minutes, single-use, consumed immediately on claim
- Agent token: HMAC-based, stored on the server only as a SHA-256 hash
- App calls require
X-User-Access-Key; the server resolves the user key from it
- Every proxy request checks at the database level: does this
instance_id belong to the authenticated user?
- Cross-user routing is structurally impossible because tunnel queues are separated per (user key, instance ID)
- The tunnel can be deleted from the app at any time β this removes the token hash
Where does the relay run and who has access?
The relay runs on a server in Germany (EU). Access is restricted to the controller at
DIGIFLO (see Privacy).
For Connect, the relay's SQLite database contains exclusively: user key, instance ID,
instance name (free-form), agent token hash and timestamps. No hostnames, no service data,
no plugin outputs.
Which firewall rules do I need to open?
Only outbound to api.nocmate.app:443
(HTTPS). No inbound ports, no reverse proxy, no DNS entry, no VPN required.
The agent can be stopped at any time β the connection drops and the app shows the
connector as offline.
What does the agent see of Checkmk?
The agent uses the locally configured Checkmk credentials (by default the
automation secret from the OMD site).
It therefore only has the permissions you have granted to the corresponding Checkmk user.
You can create a dedicated, narrow automation user for NocMate and grant the agent only
the necessary permissions.
Can multiple people use the same server?
Yes. A single connector can serve multiple NocMate identities in parallel β each with its own
tunnel credentials and its own Checkmk user. Add additional people with
curl -fsSL https://api.nocmate.app/install/connect.sh | sudo bash -s -- pair --add;
no reinstall, no downtime.
Because each identity authenticates against Checkmk as its own user, native Checkmk permissions
(contact groups, roles) apply through the tunnel. What a teammate cannot see in the web UI, she
won't see in NocMate either. Acknowledgements show up in the audit log under the correct user
name β no shared automation account required.
See team setup for details.
What happens if the relay goes down?
The app shows the connector as offline and continues to display the last successfully loaded
data. The agent retries to register with the relay at short intervals. As soon as the relay
is reachable again, everything resumes automatically. Push notifications run independently
of the tunnel; Checkmk continues to send them directly to the push API.
How do I uninstall Connect?
In the app: Settings β Sites delete
the Connect site (the token is invalidated server-side immediately). In a team setup with multiple
identities, this only removes your own β your colleagues' identities keep working.
To remove an identity centrally on the server:
sudo bash -c "$(curl -fsSL https://api.nocmate.app/install/connect.sh)" -- pair --remove <name>.
Once no identity remains and you want to remove the service entirely:
sudo systemctl disable --now nocmate-connector and
sudo rm /usr/local/bin/nocmate-connector /etc/systemd/system/nocmate-connector.service /etc/nocmate/connector.conf.