Install VictoriaMetrics Single-Server for Cheap Prometheus-Compatible Metrics

Updated on Aug 24, 2026
Mila H
6 MINS READ
Table of Contents
VictoriaMetrics single-node binary install

If you want a Prometheus-compatible metrics store that runs on almost any small server, a VictoriaMetrics single-node binary install is the fastest way to get there. VictoriaMetrics is a fast, open-source time series database that stores metrics and works as a Prometheus-compatible alternative for monitoring.

This guide walks through the full VictoriaMetrics single-node binary process.

Choose Simplicity Over a Heavy Monitoring Stack

A lot of teams choose Thanos, Cortex, or a full Prometheus cluster before they even need one. A VictoriaMetrics single-node binary install gives you the same Prometheus query language and remote write support, but it runs as one small program with no extra moving parts.

Because there is only one process to manage, this setup uses far less RAM and disk space than Prometheus, Thanos, or Cortex for the same amount of data. That means you can run real production metrics on a cheap VPS instead of a large cluster.

For most small and mid-size setups, a single VictoriaMetrics node can handle up to 100 million active time series and around 2 million samples per second, based on real usage numbers from the project itself.

What You Need for VictoriaMetrics Single-node Binary Install

To complete the VictoriaMetrics single-node binary install, you just need a Linux VPS or dedicated server with a public or private IP, root or sudo access, and a little free disk space for stored metrics.

Step 1. Download VictoriaMetrics Binary

VictoriaMetrics ships as one small executable file, so there is nothing else to install first. Run these commands on your server to get the latest release:

Bash
apt update && apt upgrade -ycd /optcurl -L -o victoria-metrics.tar.gz \  "$(curl -s https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4)"tar -xzf victoria-metrics.tar.gz

If your server uses ARM, grab the arm64 build from the same releases page instead.

Check that the binary is there and can run:

Bash
ls -lh /opt/victoria-metrics-prod./victoria-metrics-prod --version

Step 2. Run VictoriaMetrics for the First Time

It is good practice not to run this as root long-term. Create a system user and a storage folder before the first real run:

Bash
sudo useradd --no-create-home --shell /bin/false victoriametricssudo mkdir -p /opt/victoria-metrics-datasudo chown -R victoriametrics:victoriametrics /opt/victoria-metrics-datasudo chown victoriametrics:victoriametrics /opt/victoria-metrics-prod

Start the binary with a data folder and a retention period so you can confirm it actually works:

Bash
sudo ./victoria-metrics-prod \  -storageDataPath=/opt/victoria-metrics-data \  -retentionPeriod=12 \  -httpListenAddr=:8428

Keep it running. Open a browser and navigate to:

Bash
http://your-server-ip:8428/vmui

VictoriaMetrics Query page

If the query page loads, your VictoriaMetrics single-node binary install is live and ready for data.

You can also confirm it from another terminal:

Bash
curl http://localhost:8428/health

It should return OK, confirming your install is healthy and accepting requests.

To stop the test, press Ctrl+C.

Note: If you use ufw, allow the port so Grafana and remote clients can reach it:

Bash
sudo ufw allow 8428/tcpsudo ufw status

For production use, restrict this rule to trusted IPs only rather than opening it to everyone, since a VictoriaMetrics single-node binary install has no built-in authentication by default.

Step 3. Turn VictoriaMetrics Into a systemd Service

At this point, you can create a service file so it starts on boot and restarts on crash:

Bash
sudo nano /etc/systemd/system/victoriametrics.service

Add this content to the file:

Bash
[Unit]Description=VictoriaMetricsAfter=network.target [Service]User=victoriametricsGroup=victoriametricsExecStart=/opt/victoria-metrics-prod -storageDataPath=/opt/victoria-metrics-data -retentionPeriod=12 -httpListenAddr=:8428Restart=alwaysRestartSec=5 [Install]WantedBy=multi-user.target

Save the file, then load and start it:

Bash
sudo systemctl daemon-reloadsudo systemctl enable --now victoriametricssudo systemctl status victoriametrics

VictoriaMetrics Systemd service

Once this service is running, your install survives reboots without you touching it again.

Set the VictoriaMetrics Retention Period

The -retentionPeriod flag decides how long old data stays before it is deleted, and it defaults to one month if you skip it. Common values look like -retentionPeriod=12 for twelve months, or -retentionPeriod=30d for thirty days, and you set this once at startup.

To change it later, edit the ExecStart line in the service file and reload:

Bash
sudo nano /etc/systemd/system/victoriametrics.servicesudo systemctl daemon-reloadsudo systemctl restart victoriametrics

A shorter retention period uses less disk space. If your VPS has a small drive, start with short retention and increase it later as needed.

VictoriaMetrics Data Collection: Scraping vs Remote Write

VictoriaMetrics can pull metrics the same way Prometheus does, using a -promscrape.config flag pointed at a normal prometheus.yml file.

You can easily create a simple scrape config file:

Bash
sudo nano /opt/prometheus.yml

Add:

YAML
scrape_configs:  - job_name: 'node'    scrape_interval: 15s    static_configs:      - targets: ['localhost:9100']

Then add the flag to your service file's ExecStart line:

Bash
-promscrape.config=/opt/prometheus.yml

Restart the service to apply it:

Bash
sudo systemctl restart victoriametrics

This scrape-based setup is the easiest path after a VictoriaMetrics single-node binary install, since you can reuse existing Prometheus configs with almost no changes.

The other option is remote write, where Prometheus or vmagent pushes data into VictoriaMetrics instead of pulling it.

Add this to an existing Prometheus config on another server:

YAML
remote_write:  - url: http://your-server-ip:8428/api/v1/write

This fits setups where Prometheus already exists on each server, and you only want VictoriaMetrics as cheap long-term storage, a common reason people choose a single-node install.

Add VictoriaMetrics as a Grafana Data Source

VictoriaMetrics answers the same query API as Prometheus, so Grafana treats it as a normal Prometheus data source. In Grafana, go to Connections, add a new data source, pick Prometheus as the type, and set the URL:

Bash
http://your-server-ip:8428

Click Save & Test.

Existing Prometheus dashboards usually work without edits right after a VictoriaMetrics single-node binary install, since the query language (MetricsQL) stays compatible with PromQL.

Snapshot and Backup Basics for VictoriaMetrics

VictoriaMetrics can create an instant snapshot of all stored data by calling one HTTP endpoint, without stopping the service:

Bash
curl http://localhost:8428/snapshot/create

List existing snapshots:

Bash
curl http://localhost:8428/snapshot/list

Copy a snapshot off the server with a simple rsync or tar job, for safekeeping:

Bash
sudo tar -czf snapshot-backup.tar.gz /opt/victoria-metrics-data/snapshots/<snapshot-name>

Doing this regularly protects the data in your install in case the disk fails or you need to move to a bigger server later.

Note: For a more advanced setup, VictoriaMetrics also has a tool called vmbackup. Instead of copying snapshot files manually, it can send them straight to cloud storage like S3, GCS, or Azure Blob Storage. This makes backups easier to manage once you outgrow storing them just on the local disk.

How to Size a VictoriaMetrics Server

A rough size estimate helps you know if a small VPS is enough or if you need something bigger.

As a starting point, plan for about 1 to 2 KB of disk space per active time series each day. For RAM, expect about 2 to 4 GB for every one million active time series, though actual usage can vary depending on how many labels each series has.

  • Small setup: under 100k active series, 1-2 vCPU, 2-4 GB RAM, fits on a basic VPS.
  • Medium setup: 100k-1M active series, 4 vCPU, 8-16 GB RAM.
  • Large setup: over 1M active series, consider a dedicated server with fast local disk.

If your data or retention grows too big for a small VPS, you can move to a dedicated server with a fast local disk instead. This keeps your queries fast without needing to switch to a bigger, more complex metrics stack.

Conclusion

A VictoriaMetrics single-node binary install gives most teams everything Prometheus offers, plus longer retention and lower cost, without extra cluster parts. Start on a cheap Linux VPS, watch your disk and RAM usage, and only scale up once real numbers tell you it is needed.

We hope you enjoy this guide. For more detailed information, check the official VictoriaMetrics Single-node version Docs.

Yes, the single-node version is licensed under Apache 2.0, so it's fully open source and free.

Yes, in most cases, it works as a drop-in replacement for scraping, storage, and Grafana queries.

Yes, VictoriaMetrics accepts standard Prometheus remote write. Tools like Prometheus, Grafana Alloy, or vmagent can push straight to it without any extra config.