Day 256 of the year: Programmers' Day. 10% off every month for as long as you keep your server. code DAY256. Claim 10% Programmers' Day: 10%: DAY256 Claim 10%
Skip to content
WireGuard and Tailscale VPS

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.

Traffic
Unlimitedno bandwidth bill
Addresses
1 IPv4 + /64IPv6 block included
Amsterdam to London
9.0 msmeasured latency
Provisioning
30-60 safter payment
Plan
S-2 (1 vCPU, 2 GB, 30 GB NVMe) at €6.99 a month ($7.99)
A single WireGuard or Tailscale node runs comfortably on S-2. Unlimited traffic is the part that matters.
Region
Amsterdam or New York
Pick the one closest to where you sit. Identical prices in both.
OS
Ubuntu 24.04 or Debian 13
WireGuard is in the kernel and in apt on both. Commands below are for Ubuntu 24.04.
Packages
wireguard, ufw, or tailscale
Optionally Headscale if you want to host the Tailscale control plane yourself.
Ports
UDP 51820 for WireGuard
Tailscale needs no inbound port; it punches through or uses a relay.
Expect
A tunnel that stays up
KVM, your own kernel modules, VNC console if you lock yourself out of SSH.

Transparent pricing

Plans and prices

Monthly price, no setup fee
Day 256 of the year: Programmers' Day. 10% off every month for as long as you keep your server.DAY256Start a VPS with this code
1:2 to 1:4Shared vCPU on EPYC Milan, capped at one to four shares per node, with the node headroom left unsold.
PlanvCPUMemoryNVMeTrafficMonthly1 year
Standard
S-2Standard1vCPU2 GBMemory30 GBNVMe RAID10UnlimitedTraffic$7.99/moFirst month $1$7.19/mo on 1 yearStart for $1
S-4Standard2vCPU4 GBMemory60 GBNVMe RAID10UnlimitedTraffic$13.99/moFirst month $1$12.59/mo on 1 yearStart for $1
S-8Standard3vCPU8 GBMemory120 GBNVMe RAID10UnlimitedTraffic$24.99/moFirst month $1$22.49/mo on 1 yearStart for $1
S-16Standard4vCPU16 GBMemory240 GBNVMe RAID10UnlimitedTraffic$44.99/moFirst month $1$40.49/mo on 1 yearStart for $1
S-32Standard8vCPU32 GBMemory480 GBNVMe RAID10UnlimitedTraffic$84.99/moFirst month $1$76.49/mo on 1 yearStart for $1
S-64Standard16vCPU64 GBMemory720 GBNVMe RAID10UnlimitedTraffic$159.99/moFirst month $1$143.99/mo on 1 yearStart for $1
Dedicated CPU
D-4Dedicated1vCPU4 GBMemory45 GBNVMe RAID10UnlimitedTraffic$37.00/moFirst month $1$31.45/mo on 1 yearStart for $1
D-8Dedicated4vCPU8 GBMemory90 GBNVMe RAID10UnlimitedTraffic$69.00/moFirst month $1$58.65/mo on 1 yearStart for $1
D-16Dedicated4vCPU16 GBMemory160 GBNVMe RAID10UnlimitedTraffic$118.00/moFirst month $1$100.30/mo on 1 yearStart for $1
D-32Dedicated6vCPU32 GBMemory220 GBNVMe RAID10UnlimitedTraffic$215.00/mo$182.75/mo on 1 yearDeploy D-32
D-64Dedicated10vCPU64 GBMemory400 GBNVMe RAID10UnlimitedTraffic$377.00/mo$320.45/mo on 1 yearDeploy D-64
High Memory
H-64High Memory8vCPU64 GBMemory480 GBNVMe RAID10UnlimitedTraffic$249.00/mo$211.65/mo on 1 yearDeploy H-64
H-128High Memory16vCPU128 GBMemory960 GBNVMe RAID10UnlimitedTraffic$459.00/mo$390.15/mo on 1 yearDeploy H-128
H-192High Memory24vCPU192 GBMemory1.4 TBNVMe RAID10UnlimitedTraffic$669.00/mo$568.65/mo on 1 yearDeploy H-192
Prices in USD. Code DAY256 gives 10% off every month for as long as you keep your server, on monthly and yearly terms.

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.

Amsterdam, for Europe
New York, for North America
See all locations

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/.

Ready to deploy

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