> ## Content Index
> Fetch the complete content index at: https://blog.sudowl.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Netdata on Ubuntu — Live Server Metrics in 5 Minutes
- URL: https://blog.sudowl.com/netdata-monitoring-ubuntu/
- Published: 2026-04-22T09:00:00.000Z
- Updated: 2026-10-11T08:47:37.000Z
- Description: Install Netdata on Ubuntu for per-second server metrics. Install, bind to localhost, SSH-tunnel the dashboard, ship alerts to Discord.
- Author: Lukas
- Tags: Linux, Ubuntu, Security

I was going to set up Prometheus + Grafana on my Ghost host. Netdata is what I actually use.

```bash
wget -O /tmp/nd.sh https://get.netdata.cloud/kickstart.sh
sudo sh /tmp/nd.sh --dont-start-it --disable-telemetry --native-only
sudo systemctl enable --now netdata

```

Dashboard: `http://server-ip:19999`. Per-second metrics, 200+ charts out of the box, around 1–3% CPU steady-state on a 2-core VM. First time I installed it I sat there refreshing the systemd-services panel for half an hour.

## Don't expose 19999

The default Netdata config binds to all interfaces. Don't leave it like that. Before you start the service, edit `/etc/netdata/netdata.conf`:

```ini
[web]
    bind to = 127.0.0.1
    allow connections from = localhost

```

Then from your laptop:

```bash
ssh -L 19999:localhost:19999 user@server

```

Hit `http://localhost:19999` locally, full dashboard, no public exposure. This is the setup I keep telling myself I'll automate and haven't.

If you need it from a LAN, open a specific subnet, not `*`:

```ini
allow connections from = localhost 10.0.0.* 10.8.0.*

```

(`10.8.0.*` being my WireGuard range — see [the WireGuard guide](/wireguard-vpn-server-ubuntu/).)

If you absolutely have to expose it on the internet, stick nginx in front with basic auth and LE certs. Reverse proxy pattern: [nginx reverse proxy setup](/nginx-reverse-proxy-setup/).

## What's actually useful

First place I look when something feels off: **Systems → Load**. If load is over CPU count for a few minutes, drill down.

Second place: **Applications** or **systemd services** panel. It breaks everything down by service automatically. `docker`, `ghost`, `nginx`, whatever — each one has its own CPU/memory/io chart with no config.

Netdata also auto-picks up disks, network interfaces, Docker containers via cgroups. Run SMART on the host (`apt install smartmontools && systemctl enable --now smartd`) and disk health charts appear after the next Netdata restart. Free.

## Alerts to Discord

Default alerts are fine (\~200 out of the box — OOM, disk 90%, swap in use, iowait spike, etc.). What's missing is getting them somewhere you'll actually see.

```bash
sudo /etc/netdata/edit-config health_alarm_notify.conf

```

Scroll to the Discord section, uncomment:

```bash
SEND_DISCORD="YES"
DISCORD_WEBHOOK_URL[alarms]="https://discord.com/api/webhooks/..."
DEFAULT_RECIPIENT_DISCORD="alarms"

```

Restart, fire a test:

```bash
sudo systemctl restart netdata
sudo /usr/libexec/netdata/plugins.d/alarm-notify.sh test

```

Telegram, ntfy, Slack, email all work the same way — different block, same file. I use Discord for boring stuff and ntfy for things that need to wake me up.

## Gotchas

**Memory keeps growing.** Default retention keeps hot metrics in RAM and spills history to disk. On a small box, cap it:

```ini
[db]
    mode = ram
    retention = 3600

```

Keeps one hour in memory, no disk spill. Good enough for "what's happening right now".

**Alerts set to YES but nothing arrives.** Two usual suspects. One, the webhook URL is wrong (Discord silently 404s — check the nginx/docker logs where Netdata runs). Two, the alarm isn't wired to a default recipient. Easy miss: `DEFAULT_RECIPIENT_DISCORD="alarms"` — the string has to match the `[alarms]` key above it.

## When to outgrow Netdata

The moment you have more than maybe 10 hosts and want dashboards across all of them, or you need retention longer than a few days, or a team expects an actual SRE stack — that's when Prometheus + Grafana earns the complexity. For solo or small-team ops on a handful of boxes, Netdata wins on effort-to-value.

I've been running it on my Ghost VM and the Proxmox host for months. Never touched the config after the initial bind + Discord webhook. Just works.

---

### Related posts

- [WireGuard VPN on Ubuntu — the Setup I Actually Use](https://blog.diengdoh.com/wireguard-vpn-server-ubuntu/?ref=blog.sudowl.com)
- [SSH Hardening Checklist for Ubuntu Servers](https://blog.diengdoh.com/ssh-hardening-ubuntu-checklist/?ref=blog.sudowl.com)
- [Restic Backups to S3 / MinIO — Encrypted, Deduplicated, Restore-Tested](https://blog.diengdoh.com/restic-backup-s3-minio-encrypted/?ref=blog.sudowl.com)