Install it, then immediately look at what it costs you
The maintainers' kickstart script is the least painful way in, and it keeps itself updated:
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.shIt comes up on port 19999. Before tuning anything, check the honest number: Netdata reports its own resource use, and you can also just look:
systemctl status netdataOn a fresh install with defaults you'll often see it holding a couple hundred megabytes of RAM, most of it the in-memory metrics database. That's the line item that scares people on a 1 GB box, and it's the first thing we'll cut.
The three knobs that matter
Almost all of Netdata's footprint comes down to three things: how often it collects, how much history it keeps, and how many collectors it runs. Turn these down and the same tool that ate 250 MB will sit comfortably under 100.
First, the collection interval. Per-second is Netdata's party trick, but for a server you're watching casually, once every two or five seconds is imperceptibly different and cuts the work proportionally. In /etc/netdata/netdata.conf:
[global]
update every = 2Second, and this is the big one, the history. Netdata's default database keeps a generous window of metrics, and on a small box that memory adds up. Cap it. The database is tiered; the simplest meaningful cut is to shrink how much RAM the recent tier is allowed:
[db]
mode = dbengine
dbengine tier 0 retention size = 256MiBThat ceiling means Netdata will never blow past it no matter how many charts it's tracking, which is exactly the guarantee you want on a constrained machine. If you barely care about history and just want live numbers, you can go smaller still.
Third, the collectors. Netdata auto-detects and runs a plugin for everything it finds, and on a simple VPS a lot of that is charting things you'll never look at. Each plugin is a little CPU and a little memory. You don't have to hunt them all down, but disabling the obviously useless ones helps. Collectors are toggled in /etc/netdata/netdata.conf under [plugins] and in the per-plugin conf files; the ones worth turning off on a minimal box are anything for hardware or services you don't run.
After any change, restart and re-check the number:
systemctl restart netdataBe honest about the 1 GB box
Here's the part the enthusiastic tutorials skip. If your VPS has 1 GB of RAM and it's already running your actual workload — a couple of containers, a database, whatever the server is for — then even a tuned Netdata is competing for memory you might need. You can absolutely get it down to a modest footprint with the knobs above, and for many 1 GB boxes that's fine. But if things are tight, be willing to reach for something lighter.
The honest tradeoff:
- Plenty of headroom (2 GB and up): run Netdata with defaults or a light tune and enjoy it. This is the sweet spot.
- Tight but manageable (1 GB with room to spare): tune it as above — longer interval, capped history, trimmed collectors — and it's a good citizen.
- Genuinely constrained (1 GB running a real workload near its limit): consider a lightweight agent that ships metrics elsewhere, or a simple uptime checker, rather than a full per-second dashboard living on the box itself. There's no shame in matching the tool to the box.
The mistake is running default Netdata on a full 1 GB box and then blaming Netdata when memory pressure starts killing your other processes. It told you it collects everything; you just have to tell it not to.
Don't leave the dashboard on the open internet
By default Netdata binds to port 19999 on all interfaces, which means anyone who finds your IP can read a detailed live map of your server — what's running, how loaded it is, when it's busy. That's reconnaissance you're handing out for free. Close it.
The clean approach: bind Netdata to localhost only, then reach it over a VPN into the server. In netdata.conf:
[web]
bind to = 127.0.0.1Now the dashboard answers only from the machine itself. If you've got WireGuard into the box already, bind it to the VPN interface's address instead of localhost, and you can open the dashboard from your laptop over the tunnel while the public internet sees nothing:
[web]
bind to = 10.0.0.1Use whatever your server's address is on the VPN subnet. Either way, the fix is the same idea — the metrics are for you, so make them reachable only by you. Do not "solve" this by putting the dashboard behind a password on a public port and calling it done; a reverse proxy with auth is better than nothing, but keeping the port off the internet entirely is the version that actually sleeps well. This pairs naturally with running SSH over the same tunnel — one private door for everything administrative.