Your own WireGuard or Tailscale server, with unlimited traffic.
First month $1, then the normal monthly price. One per customer.
A KVM VPS with full root, your own kernel and a fixed IPv4 in Amsterdam or New York. Use it as a personal VPN, as a Tailscale exit node, or as the public front door for a homelab or Home Assistant box that sits behind CGNAT. Traffic is unlimited.
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 |
Three things people build with a VPN VPS.
The same small server covers all three. They differ in which side dials in and where the traffic ends up.
A personal VPN with a fixed exit IP
Your laptop and phone connect to the VPS and all traffic leaves from its IPv4. Useful on hotel Wi-Fi and for services that want one stable address. You hold the keys and the logs.
A Tailscale exit node
Join the VPS to your tailnet and advertise it as an exit node. Every device on the tailnet can route through it with one toggle. No port forwarding and no config files on the clients.
Homelab or Home Assistant behind CGNAT
Many home connections have no public IPv4 anymore. The home box opens a tunnel outward to the VPS, and the VPS runs a reverse proxy on its public address. Your dashboard gets a real domain and a real certificate.
A private mesh between servers
WireGuard between a few VPSes, a NAS and a workstation gives you one flat private network. Admin panels stay off the public internet.
Which plan for this workload.
WireGuard is light. Encryption for a handful of clients barely registers on one vCPU. The bill is driven by traffic, and traffic is unlimited here.
| Setup | Plan | Why |
|---|---|---|
| Personal VPN, up to a handful of devices | S-2 | 1 vCPU and 2 GB is more than WireGuard or tailscaled needs |
| Tailscale exit node plus Headscale | S-2 | Headscale is a single Go binary with a small SQLite database |
| VPN plus reverse proxy for Home Assistant and a few homelab apps | S-2 or S-4 | Caddy or nginx add little; go to S-4 if you also run Docker services on the VPS |
| Site-to-site mesh with steady multi-gigabit throughput | S-4 or D-4 | Encryption at high sustained rates wants more CPU; D-4 (1 vCPU, 4 GB, 45 GB NVMe) at €34.00 a month ($37.00) has a pinned core |
Start on S-2. If you later host more on the same machine, you can resize in place: RAM and vCPU change, data and IP stay, usually one short reboot. The 30 GB disk on S-2 is not an issue for a VPN; it only becomes one when you start putting media or backups next to it. We measured 9.40 Gbit/s send and 17.1 Gbit/s receive with iperf3 from Amsterdam, so the VPS is rarely the bottleneck. Your home uplink usually is. Full numbers are on /vps-benchmarks/.
Setting it up on BuyVPS.
Step 1: order, pick Ubuntu 24.04, log in
Order an S-2 and choose Ubuntu 24.04 (or Debian 13; the packages are the same). The server is up 30 to 60 seconds after payment. Log in over SSH and update first.
ssh root@YOUR_VPS_IP apt update && apt upgrade -y
Step 2: install WireGuard and generate keys
WireGuard lives in the kernel. The package brings the tools. Generate a keypair for the server and one for each client; keep private keys readable by root only.
apt install -y wireguard umask 077 wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub wg genkey | tee client1.key | wg pubkey > client1.pub
Step 3: write wg0.conf and enable forwarding
The server config below hands out 10.8.0.0/24 and masquerades traffic out of the public interface. Check the interface name with ip route first; on our Ubuntu images it is not always eth0.
# /etc/wireguard/wg0.conf [Interface] Address = 10.8.0.1/24 ListenPort = 51820 PrivateKey = <contents of server.key> PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # client1 PublicKey = <contents of client1.pub> AllowedIPs = 10.8.0.2/32
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wireguard.conf sysctl --system systemctl enable --now wg-quick@wg0 wg show
Step 4: open the firewall
ufw blocks inbound by default once enabled. Allow SSH first, then UDP 51820. For a VPN that forwards traffic, also set DEFAULT_FORWARD_POLICY="ACCEPT" in /etc/default/ufw.
ufw allow OpenSSH ufw allow 51820/udp ufw enable
On the client, use the server's public key, endpoint YOUR_VPS_IP:51820, AllowedIPs = 0.0.0.0/0, ::/0 for a full tunnel, and a DNS = line so name lookups also go through the tunnel.
Step 5: or install Tailscale instead
Tailscale wraps WireGuard with key exchange and NAT traversal. The installer script comes from the project itself. Enable forwarding before advertising an exit node, then approve the node in the admin console.
curl -fsSL https://tailscale.com/install.sh | sh echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/99-tailscale.conf echo 'net.ipv6.conf.all.forwarding = 1' >> /etc/sysctl.d/99-tailscale.conf sysctl -p /etc/sysctl.d/99-tailscale.conf tailscale up --advertise-exit-node
If you would rather not depend on the hosted control plane, Headscale is an open source implementation of it. It runs on the same S-2 next to tailscaled and clients point at it with tailscale up --login-server.
Step 6: publish Home Assistant through the VPS
On the home box, run a WireGuard client with PersistentKeepalive = 25 so the tunnel survives CGNAT, or run Tailscale with --advertise-routes=192.168.1.0/24 as a subnet router. On the VPS, install Caddy from the repository the project documents and put it in front. It fetches the certificate for you. Point an A record at the VPS first.
# /etc/caddy/Caddyfile
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
Home Assistant needs trusted_proxies set to the VPS tunnel address in its configuration, otherwise it rejects the proxied requests.
WireGuard or Tailscale, which one.
Both use the same protocol underneath. The difference is who manages keys and how the peers find each other.
Plain WireGuard
One config file per peer, one open UDP port, no accounts anywhere. Best for a fixed set of devices you control, and for site-to-site links where both ends have stable addresses. You maintain the peer list by hand.
Tailscale
Devices log in, keys rotate, NAT traversal just works, MagicDNS gives every machine a name. Best when devices come and go, when family members need access, or when nothing on your side has a public IP. The coordination server is hosted by Tailscale unless you run Headscale.
Our short answer
Personal VPN with a fixed exit IP and full control: WireGuard. Reaching a homelab from phones and laptops without thinking about ports: Tailscale with the VPS as exit node and the home box as subnet router.
Both at once
WireGuard on UDP 51820 for the fixed links, tailscaled for the roaming devices, on the same S-2. They use different interfaces and do not conflict.
Pitfalls we see, and how to avoid them.
The tunnel comes up but sites hang
Nearly always MTU. WireGuard defaults to 1420; on some home links that is still too big. Set MTU = 1280 in the client's Interface section and test again. Tailscale handles this on its own.
DNS leaks
With a full tunnel but no DNS = line, lookups still go to the local resolver at the coffee shop. Put a resolver in the client config, or run one on the VPS. On Tailscale, enable MagicDNS and set a global nameserver.
UDP 51820 not open
The handshake never completes and wg show shows no recent handshake. Check ufw on the VPS, and remember WireGuard is UDP, not TCP. Tailscale does not need an inbound port at all.
Running an open proxy
A VPN for you, your family or your team is fine. Offering the VPS as an open proxy or relay to the public is against our acceptable use policy and gets the server suspended. Keep the peer list to people you know.
Pick the region closest to your users.
For a VPN, latency is the whole experience. From Amsterdam we measure 9.0 ms to London, 8.5 ms to Frankfurt and 9.3 ms to Paris. From New York it is 5-8 ms to Boston and 7-12 ms to Washington DC. Between the two regions it is 75-90 ms, so pick the side of the ocean you live on. Details on Amsterdam and New York.
Questions about running WireGuard or Tailscale on a VPS.
Is there a traffic cap or a bandwidth bill?
No. Every plan includes unlimited traffic and there is no bandwidth bill. A VPN that streams all evening costs the same as one that sits idle. The only rule is our acceptable use policy: no open proxies for the public.
Can I load the WireGuard kernel module on your VPS?
Yes. Every plan is KVM with your own kernel, so kernel modules load as on any physical machine. Ubuntu 24.04 and Debian 13 ship WireGuard in the kernel already; the apt package only adds the tools. The official documentation is at wireguard.com.
Does the VPS come with a fixed IPv4?
Yes. One IPv4 address and a /64 IPv6 block are included and stay with the server, also after a resize. An extra IPv4 is available as an add-on at €5.00 a month plus $10 setup if you want a second exit address.
Can I run Headscale instead of the hosted Tailscale control server?
Yes. Headscale is a single binary with a small database and fits on the same S-2 as the exit node. Clients log in with tailscale up --login-server pointing at your domain. You then own the whole chain, at the cost of maintaining it yourself.
How do I reach Home Assistant at home without a public IP?
Run a WireGuard client or Tailscale subnet router on the home box, so it dials out to the VPS. On the VPS, Caddy or nginx proxies your domain to the tunnel address of the home box. Add the tunnel address to trusted_proxies in Home Assistant and it works over CGNAT, mobile networks and IPv6-only lines.
What if it does not work out?
The first month costs €1 on S-2 through S-64, D-4, D-8 and D-16, one per customer, paid by card or iDEAL. Monthly billing can be cancelled any time and ends at the end of the cycle. The first order is also covered by our 30-day performance guarantee, described on /performance-guarantee/.
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