Quick Start
insightd runs as three containers managed by Docker Compose:
- Mosquitto — MQTT broker that connects agents to the hub.
- Hub — web UI, database, insights and diagnosis engine.
- Agent — collects metrics for one host. Run one per host you want to monitor.
To monitor one server, run all three on that server. To monitor ten, you run the same stack once and then add one more agent container on each additional host. That’s the only difference.
Prerequisites
Section titled “Prerequisites”- A Linux server with Docker Engine and the Compose plugin (
docker compose versionshould report v2). - Free TCP ports 3000 (web UI) and 1883 (MQTT). Keep
1883on your LAN — don’t expose it publicly.
Install
Section titled “Install”curl -sSL https://insightd.org/install.sh | bashThat’s it. The script:
- Creates
~/insightd/(override withINSIGHTD_DIR=/opt/insightd). - Downloads
docker-compose.hub.yml. - Generates a strong random MQTT password with
openssl rand -hex 24and writes it to.env(chmod 600). - Runs
docker compose up -d, which starts a one-shot bootstrap container that materialisesmosquitto.confand a hashedpasswdfile into a named volume. Mosquitto, the hub, and a local agent start once the bootstrap exits. - Polls
http://localhost:3000/api/setup/statusand prints the dashboard URL when the hub is reachable.
Re-running the script is safe — existing .env is preserved so agents stay enrolled.
Finish setup in the browser
Section titled “Finish setup in the browser”Open the URL the installer printed (typically http://<your-server>:3000). The Setup Wizard walks you through:
- Admin password — protects the Settings and Webhooks pages. Skippable, but recommended.
- Email (SMTP) — for the weekly digest and real-time alerts. Skippable; configurable later from Settings → Email.
- Add agent — the local agent is already running from the install script, so click Skip.
- Waiting — first metrics arrive within 5 minutes (the default collection interval).
Once the wizard is done the dashboard opens.
Monitoring additional hosts
Section titled “Monitoring additional hosts”Everything about adding more hosts happens in the UI:
- In the hub, open Add Agent from the sidebar.
- Enter a host ID and click through — the page renders a ready-to-run
docker runcommand with your MQTT URL, username, and password pre-filled from.env. - Copy it, SSH to the target host (where Docker is installed), paste, run.
- Within a few minutes the new host appears on the Hosts page with its containers listed.
For Kubernetes / k3s clusters, follow the Kubernetes guide — the agent runs there as a DaemonSet instead of a Docker container, but it talks to the same hub and broker.
Everything else lives in Settings
Section titled “Everything else lives in Settings”Open Settings in the sidebar after login. Every feature below is configured there, most of them hot-reloadable (no restart needed):
- Email — SMTP host/port/user/password, digest recipient, alert recipient.
- Alerts — enable/disable each alert type (container down, unhealthy, restart loop, host CPU/memory/load, disk, endpoints), thresholds, reminder backoff, exclude patterns.
- Webhooks — Slack, Discord, Telegram, ntfy, generic. Managed on the dedicated Webhooks page with a “Test” button for each channel.
- AI Diagnosis — paste a free Gemini API key to enable per-container “Diagnose with AI”.
- Storage — raw-data and rollup retention, manual Vacuum Now button, live database size.
- Status Page — opt-in public status page at
/status. - General — timezone, collection interval, hub base URL (used by email links).
You can also set most of these via environment variables in the hub’s environment: block — see the Configuration reference.
Manual install (without the script)
Section titled “Manual install (without the script)”If you’d rather not run a remote script, do the three steps yourself:
mkdir -p ~/insightd && cd ~/insightdcurl -O https://raw.githubusercontent.com/goldenproductions/insightd/main/docker-compose.hub.ymlcat > .env <<EOFINSIGHTD_MQTT_USER=insightdINSIGHTD_MQTT_PASS=$(openssl rand -hex 24)INSIGHTD_HOST_ID=hub-serverINSIGHTD_ALLOW_UPDATES=trueINSIGHTD_ALLOW_ACTIONS=trueEOFchmod 600 .envdocker compose -f docker-compose.hub.yml up -dThe bootstrap container inside docker-compose.hub.yml handles everything that used to be manual (writing mosquitto.conf, running mosquitto_passwd). Supply your own INSIGHTD_MQTT_PASS in .env if you want to manage the credential yourself.
Upgrading
Section titled “Upgrading”cd ~/insightddocker compose -f docker-compose.hub.yml pulldocker compose -f docker-compose.hub.yml up -dCompose restarts the hub and agent with the new images. Your data (hub-data and mosquitto-data volumes) is preserved. The hub also offers one-click self-updates and per-agent updates from the Updates page in the UI.
Troubleshooting
Section titled “Troubleshooting”- Agent never shows up on the Hosts page. The two most common causes: the MQTT passwords don’t match (recheck
INSIGHTD_MQTT_PASSin both services), or a firewall is blocking port1883between the agent host and the hub host. Agents log their MQTT connection state —docker logs insightd-agenttells you which. - Hub container won’t start — port 3000 in use. Change the port mapping to something else (e.g.
"3001:3000") and re-run compose up. - Wizard’s “Waiting for agent” step hangs. Agents collect every 5 minutes and publish on success. Press Skip; the host appears on the Hosts page shortly after.
- Need to reset the setup wizard? Delete the
hub-datavolume (docker compose down && docker volume rm insightd_hub-data && docker compose up -d). This wipes all data — metrics, alerts, settings — so only do this during initial setup. - Lost your
.env? The password is only stored in.envand inside mosquitto’spasswdvolume. If you need to rotate,docker compose down,docker volume rm insightd_mosquitto-config, generate a new.env, thendocker compose up -d— and re-enrol every remote agent with the new password from Add Agent.