How to Install VictoriaMetrics Single-Server for Cheap Prometheus-Compatible Metrics
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.
Table of Contents
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:
apt update && apt upgrade -y
cd /opt
curl -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:
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:
sudo useradd --no-create-home --shell /bin/false victoriametrics
sudo mkdir -p /opt/victoria-metrics-data
sudo chown -R victoriametrics:victoriametrics /opt/victoria-metrics-data
sudo 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:
sudo ./victoria-metrics-prod \
-storageDataPath=/opt/victoria-metrics-data \
-retentionPeriod=12 \
-httpListenAddr=:8428
Keep it running. Open a browser and navigate to:
http://your-server-ip:8428/vmui

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:
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:
sudo ufw allow 8428/tcp
sudo 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:
sudo nano /etc/systemd/system/victoriametrics.service
Add this content to the file:
[Unit]
Description=VictoriaMetrics
After=network.target
[Service]
User=victoriametrics
Group=victoriametrics
ExecStart=/opt/victoria-metrics-prod -storageDataPath=/opt/victoria-metrics-data -retentionPeriod=12 -httpListenAddr=:8428
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Save the file, then load and start it:
sudo systemctl daemon-reload
sudo systemctl enable --now victoriametrics
sudo systemctl status victoriametrics

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:
sudo nano /etc/systemd/system/victoriametrics.service
sudo systemctl daemon-reload
sudo 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:
sudo nano /opt/prometheus.yml
Add:
scrape_configs:
- job_name: 'node'
scrape_interval: 15s
static_configs:
- targets: ['localhost:9100']
Then add the flag to your service file’s ExecStart line:
-promscrape.config=/opt/prometheus.yml
Restart the service to apply it:
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:
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:
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:
curl http://localhost:8428/snapshot/create
List existing snapshots:
curl http://localhost:8428/snapshot/list
Copy a snapshot off the server with a simple rsync or tar job, for safekeeping:
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.
FAQs
Is VictoriaMetrics free to use?
Yes, the single-node version is fully open source and free.
Can I replace Prometheus completely with VictoriaMetrics?
Yes, in most cases, it works as a drop-in replacement for scraping, storage, and Grafana queries.
Does VictoriaMetrics support remote write?
Yes, it accepts standard Prometheus remote write.