Switching VPS provider without losing a weekend.
First month $1, then the normal monthly price. One per customer.
Same Linux, same Docker, a different bill. Every plan comes with one IPv4, a /64 IPv6 block, unlimited traffic, NVMe RAID10 and full root, in Amsterdam or New York at the same price. Below is the checklist we use when we move a server, and a plan that keeps the old box alive until the new one has proven itself.
Transparent pricing
Plans and prices
| Plan | vCPU | Memory | NVMe | Traffic | Monthly | 1 year | |
|---|---|---|---|---|---|---|---|
| Standard | |||||||
| S-2Standard | 1vCPU | 2 GBMemory | 30 GBNVMe RAID10 | UnlimitedTraffic | $7.99/moFirst month $1 | $7.19/mo on 1 year | Start for $1 |
| S-4Standard | 2vCPU | 4 GBMemory | 60 GBNVMe RAID10 | UnlimitedTraffic | $13.99/moFirst month $1 | $12.59/mo on 1 year | Start for $1 |
| S-8Standard | 3vCPU | 8 GBMemory | 120 GBNVMe RAID10 | UnlimitedTraffic | $24.99/moFirst month $1 | $22.49/mo on 1 year | Start for $1 |
| S-16Standard | 4vCPU | 16 GBMemory | 240 GBNVMe RAID10 | UnlimitedTraffic | $44.99/moFirst month $1 | $40.49/mo on 1 year | Start for $1 |
| S-32Standard | 8vCPU | 32 GBMemory | 480 GBNVMe RAID10 | UnlimitedTraffic | $84.99/moFirst month $1 | $76.49/mo on 1 year | Start for $1 |
| S-64Standard | 16vCPU | 64 GBMemory | 720 GBNVMe RAID10 | UnlimitedTraffic | $159.99/moFirst month $1 | $143.99/mo on 1 year | Start for $1 |
| Dedicated CPU | |||||||
| D-4Dedicated | 1vCPU | 4 GBMemory | 45 GBNVMe RAID10 | UnlimitedTraffic | $37.00/moFirst month $1 | $31.45/mo on 1 year | Start for $1 |
| D-8Dedicated | 4vCPU | 8 GBMemory | 90 GBNVMe RAID10 | UnlimitedTraffic | $69.00/moFirst month $1 | $58.65/mo on 1 year | Start for $1 |
| D-16Dedicated | 4vCPU | 16 GBMemory | 160 GBNVMe RAID10 | UnlimitedTraffic | $118.00/moFirst month $1 | $100.30/mo on 1 year | Start for $1 |
| D-32Dedicated | 6vCPU | 32 GBMemory | 220 GBNVMe RAID10 | UnlimitedTraffic | $215.00/mo | $182.75/mo on 1 year | Deploy D-32 |
| D-64Dedicated | 10vCPU | 64 GBMemory | 400 GBNVMe RAID10 | UnlimitedTraffic | $377.00/mo | $320.45/mo on 1 year | Deploy D-64 |
| High Memory | |||||||
| H-64High Memory | 8vCPU | 64 GBMemory | 480 GBNVMe RAID10 | UnlimitedTraffic | $249.00/mo | $211.65/mo on 1 year | Deploy H-64 |
| H-128High Memory | 16vCPU | 128 GBMemory | 960 GBNVMe RAID10 | UnlimitedTraffic | $459.00/mo | $390.15/mo on 1 year | Deploy H-128 |
| H-192High Memory | 24vCPU | 192 GBMemory | 1.4 TBNVMe RAID10 | UnlimitedTraffic | $669.00/mo | $568.65/mo on 1 year | Deploy H-192 |
What to compare before you move a server.
The headline price is the easy part. These four things decide what a server costs over a year and how it behaves under load.
What is in the plan price
Ask what the monthly figure includes. Ours includes one IPv4 address, a /64 IPv6 block, unlimited traffic and NVMe RAID10 storage, with no setup fee. An extra IPv4 is an add-on at €5.00 a month ($5.00) plus a $10 setup.
What happens at renewal
We bill monthly and the price does not change at renewal. You can cancel at any time and the billing ends at the end of the cycle. If you prefer to pay ahead, annual billing takes 10% off Standard plans and 15% off Dedicated and High Memory; two-year billing takes 15% and 20%. Details are on the billing page.
What the hardware actually does
Do not compare vCPU counts, compare measurements. We publish 5-run medians on the benchmarks page: Geekbench 6 multi-core 6,414, fio 4K random read 122,959 IOPS, pgbench 7,364 TPS. Run the same tools on your current server first.
What it costs to be in the US
Amsterdam and New York cost the same, so a customer in Boston or Toronto gets 5-15 ms latency at the same monthly price as one in Frankfurt or London. See both locations for measured latencies.
Which plan replaces which server.
Match on RAM and disk first. CPU is easy to add later.
| What you run today | Plan | Why |
|---|---|---|
| A single site, a bot, a WireGuard node, Uptime Kuma | S-2 | Enough for one service. The 30 GB disk is the limit to watch. |
| A typical 2 vCPU, 4 GB cloud instance | S-4 | Same shape, 60 GB NVMe, room for Docker and a small database. |
| A Docker host with several apps, or builds on the same box | S-8 | 120 GB disk covers images, volumes and CI caches. |
| A database or game server that needs steady CPU | D-4 or D-8 | Cores pinned 1:1 to physical EPYC Genoa cores, no noisy neighbours. |
| Memory-heavy stacks, several databases, a k3s node | S-16 or S-32 | 16 GB or 32 GB with 240 GB or 480 GB NVMe. |
The Standard line runs shared vCPU at a 1:4 ratio on EPYC Milan with DDR4 ECC memory: S-2 (1 vCPU, 2 GB, 30 GB NVMe) at €6.99 a month ($7.99), S-4 (2 vCPU, 4 GB, 60 GB) at €11.99 ($13.99), S-8 (3 vCPU, 8 GB, 120 GB) at €21.99 ($24.99). The Dedicated line starts at D-4 (1 vCPU, 4 GB, 45 GB) for €34.00 a month ($37.00). Every node keeps unsold headroom by design; we do not oversell.
One honest limit: disk is the first thing people run out of on S-2 and S-4, so check df -h on the old server before you pick. If you need more space than the plan holds, the +100 GB NVMe add-on at €11.00 a month on Standard is cheaper than a bigger plan. If the first pick is wrong, resize in place: RAM and vCPU change with one short reboot, data and IP stay.
A migration plan that does not depend on luck.
Step 1: Inventory the old server
Most failed migrations fail on the thing nobody wrote down. Spend twenty minutes listing what runs, what listens on which port, and what cron does at night.
ss -tulpn
systemctl list-units --type=service --state=running
docker ps --format '{{.Names}} {{.Image}} {{.Ports}}'
crontab -l; ls /etc/cron.d
df -h; du -sh /srv /var/lib/docker /home 2>/dev/null
Note every environment file, certificate, SSH key, firewall rule and DNS record, and which services hold state (databases, uploads, queues).
Step 2: Order the new server and harden it
Pick the OS release you run today, so packages and config paths match. The VPS is online 30-60 seconds after payment. Add your SSH key via cloud-init, then do the basics.
apt update && apt upgrade -y apt install -y ufw rsync restic ufw allow OpenSSH && ufw allow 80,443/tcp && ufw enable curl -fsSL https://get.docker.com | sh
Step 3: Move the files with rsync or restic
For a first pass while the old server is still live, rsync is the simplest tool. Preserve ownership, ACLs and extended attributes, and use numeric IDs so users that do not exist yet on the new host map correctly.
rsync -aHAX --numeric-ids --info=progress2 -e ssh \ root@OLD_IP:/srv/ /srv/ rsync -aHAX --numeric-ids -e ssh root@OLD_IP:/etc/nginx/ /etc/nginx/ rsync -aHAX --numeric-ids -e ssh root@OLD_IP:/etc/letsencrypt/ /etc/letsencrypt/
If you already back up with restic, restoring the latest snapshot on the new server is a clean alternative and proves the backups work.
export RESTIC_REPOSITORY=sftp:backup@BACKUP_HOST:/repo restic snapshots restic restore latest --target / --include /srv --include /etc/nginx
Step 4: Move databases with dumps, not file copies
Never rsync a running database directory. Dump on the old host, import on the new one.
# old server pg_dumpall -U postgres | gzip > /root/pg-all.sql.gz mysqldump --all-databases --single-transaction | gzip > /root/mysql-all.sql.gz # new server zcat pg-all.sql.gz | psql -U postgres zcat mysql-all.sql.gz | mysql
For Docker stacks, copy the compose files and named volumes, then start them and check that every container is healthy before you touch DNS.
cd /srv/app && docker compose pull && docker compose up -d docker compose ps docker compose logs --tail=50
Step 5: Lower the DNS TTL, do a final sync, cut over
A day before the switch, lower the TTL on the records you will change to 300 seconds. On the day: stop the writing services on the old box, rsync once more with --delete, import the final database dump, start everything on the new server, then point the A and AAAA records at the new IPv4 and IPv6.
rsync -aHAX --numeric-ids --delete -e ssh root@OLD_IP:/srv/ /srv/ dig +short example.com A
Test with the new IP in your hosts file first, so the first public request is not your first test.
Step 6: Keep the old server for a week
Do not cancel on cut-over day. Leave the old server running, read-only if possible, for seven days and watch the logs on the new box for a path, cron job or environment variable you missed. When the week is quiet, cancel the old one.
Coming from Hetzner Cloud, DigitalOcean or Contabo.
The steps above are the same whatever you are leaving. A few practical differences are worth knowing before you order.
IPv4 is part of the plan
Every BuyVPS server ships with one public IPv4 and a /64 IPv6 block, both in the plan price. You do not choose between an IPv6-only server and a surcharge. More IPv4 is a €5.00 add-on per address.
Monthly billing, no contract
We bill per month, not per hour, and there is no minimum term. Cancel any time and the service ends at the end of the cycle. For a short experiment, the first month for €1 covers exactly that: try it, cancel if it does not fit.
No US location fee
Amsterdam and New York cost the same. A team that serves both continents runs one server in each region on the same plan. Inter-region latency is 75-90 ms, fine for replication and backups.
The same tools work
Cloud-init runs at first boot, there is a REST API, a VNC console for when SSH is down, nested virtualisation and custom ISO upload. Our KVM page lists what the hypervisor exposes.
Pitfalls we see, and how to avoid them.
Forgetting the things outside /srv
Cron jobs, systemd units, firewall rules, environment files in home directories, certificates and the SSH keys of deploy bots. Grep the old server for its own IP address too; it hides in config files.
Cutting over with a long TTL
If the TTL is still 86400 when you switch, some users hit the old server for a day. Lower it a day before, not an hour before, because resolvers cache the old TTL too.
Copying a live database with rsync
It looks like it worked until the first write. Use a dump, or stop the database for the final copy. For Docker, stop the container before copying the volume.
Cancelling the old server on day one
The week of overlap costs one extra monthly fee and saves the migration that would otherwise go wrong at 23:00 on a Friday.
Pick the region closest to your users.
From Amsterdam we measure 9.0 ms to London and 8.5 ms to Frankfurt. From New York, Boston is 5-8 ms and Washington DC 7-12 ms. Same plans, same prices, both regions.
Questions about switching VPS provider.
Can I keep my current IP address when I move?
No. IP addresses belong to the network they are announced from, so your new server gets a new IPv4 and a /64 IPv6 block from us. Lower the DNS TTL a day ahead so the switch is quick.
Is IPv4 really included, or is it a surcharge?
One IPv4 address is included in every plan, together with a /64 IPv6 block. Only additional IPv4 addresses are an add-on, at €5.00 a month plus a $10 setup per address.
Do you charge for traffic or bandwidth?
No. Traffic is unlimited on every plan and there is no bandwidth bill. Our measured iperf3 throughput in Amsterdam is 9.40 Gbit/s send and 17.1 Gbit/s receive.
Can I test performance before I migrate anything?
Yes. The first month costs €1 including VAT on S-2 through S-64 and on D-4, D-8 and D-16, once per customer, paid by card or iDEAL. Run your own benchmarks on it before you move any data.
What if the new server does not perform as expected?
Your first order is covered by a 30-day performance guarantee: a full refund within 30 days of activation, no administrative fee, once per customer. That is the safety net for the migration itself.
Can I move to a bigger or smaller plan later?
Yes. RAM and vCPU are resized in place, usually with one short reboot, and your data and IP stay. You can do this from the panel or through the REST API.
Deploy a measured VPS
From $6.79/mo on a 2-year term. KVM on AMD EPYC, NVMe RAID10, ECC memory. No setup fee, cancel monthly.
30-day performance guarantee. Not satisfied? Full refund, no admin fee. How it works