
A personal WireGuard VPN on your own VPS
A personal VPN runs WireGuard on a VPS you alone control: you get a dedicated exit IP that no one else shares, no provider logging your traffic, and a jurisdiction you chose. The S1 plan (2 vCPU, 4 GB, from $5/mo) saturates 10 Gbps of WireGuard with room to spare. Pay in Monero, deploy in ~47 seconds, and connect from any desktop or mobile device.
A commercial VPN is a black box. You trust a marketing claim that they keep "no logs," you share one exit IP with thousands of strangers — so that IP lands on Cloudflare CAPTCHAs, Netflix geo-blocks, and reputation blocklists — and you have no idea which jurisdiction the metadata actually sits in. A personal VPN inverts every one of those trade-offs. You run WireGuard on a single-tenant VPS, hold the only keys, and own the exit address outright.
The cost is trivial. WireGuard is a 4,000-line kernel module that does ChaCha20-Poly1305 in software faster than most home links can fill, so a $5/mo S1 instance handles a household of devices without breaking a sweat. The work is one apt install, one config file, and a QR code. This page covers when self-hosting wins, which spec and region to pick, and how the clients connect — then hands you off to the step-by-step setup guide.
Self-hosted WireGuard vs. a commercial VPN
The two approaches solve different problems. A commercial VPN sells you anonymity-in-a-crowd: you blend into a shared pool, which is genuinely useful if your threat model is a single observer watching one IP. A personal VPN sells you control and a clean address. Here is the honest breakdown.
What you gain by self-hosting
- A dedicated exit IP. Commercial VPN IPs are shared by thousands of users; one abuser gets the whole range flagged. Your VPS IP is yours alone — it passes reputation checks, doesn't trigger Cloudflare CAPTCHAs on every page, and doesn't get geo-blocked by streaming services that ban known VPN ranges.
- Logs you actually control. A commercial "no-logs policy" is a promise you cannot audit. On your own VPS, WireGuard logs nothing by default — there is no connection log, no
journaldentry per packet, nothing unless you explicitly enable it. The absence is verifiable because you are root. - A jurisdiction you chose. You decide whether your exit traffic egresses from Iceland, Switzerland, Romania, or France (see the next section), instead of accepting wherever the provider happens to rack servers.
- No identity link. NoKycVPS takes email + password as the entire credential — no ID, no phone, no email verification — and bills in crypto. The endpoint is never tied to a name or card.
What a commercial VPN still does better
- Crowd-blending. Your personal exit is one IP used by one person. That is a stable fingerprint. If your goal is to be indistinguishable from a crowd rather than to have a clean, controlled address, a shared pool — or Tor — is the better tool.
- One-click country hopping. Commercial apps switch between 50 countries instantly. With self-hosting you spin up a VPS per region you need (each deploys in ~47s, so this is cheaper than it sounds).
For most people the math is decisive: $5/mo for a private exit you fully control versus $10/mo for a shared one you have to trust. If you want a managed bare-metal exit instead, the dedicated R1 overkills it.
Picking the spec and the jurisdiction
Spec: S1 is plenty
WireGuard is astonishingly light. Encryption runs in the kernel using ChaCha20-Poly1305, which is fast even without AES-NI, and a single core will push multiple gigabits. The bottleneck is almost never CPU — it's your home or mobile uplink. Concretely:
- S1 (2 vCPU / 4 GB DDR5 / 80 GB NVMe, from $5/mo) — the right answer for a personal or family VPN. Handles dozens of peers and saturates the 10 Gbps unmetered link long before the CPU sweats. Pick this.
- S2 (4 vCPU / 16 GB / 320 GB, from $15/mo) — only if you're also self-hosting other services on the same box (a homelab exit, Pi-hole DNS, a small relay).
You do not need S3. The /64 IPv6 block included on every plan means each peer can get its own routable v6 address if you want full dual-stack.
Jurisdiction: where your traffic exits
All four regions run the same AMD EPYC hardware; what differs is the law your exit IP sits under. For a VPN exit the relevant question is data-retention and how the operating entity responds to foreign pressure.
- Reykjavik, Iceland (REK) — no mandatory data retention, the IMMI press-freedom framework, and renewable geothermal power. The default choice for a privacy-first exit.
- Zurich, Switzerland (ZRH) — strong constitutional privacy under the FADP, outside the 14-Eyes alliance, and Art. 271 of the penal code restricts assisting foreign authorities on Swiss soil.
- Bucharest, Romania (OTP) — EU connectivity, historically resistant to overbroad takedown pressure, and the lowest latency for Eastern-European and Balkan routing.
- Paris, France (PAR) — robust EU peering and the cheapest region; best raw throughput to Western Europe.
Regardless of region, root passwords are AES-256 encrypted at rest and the operator acts only on a binding judicial order from a Saint Kitts and Nevis court, notifying you first. A monthly warrant canary is published at /canary. Compare the regions in depth on the offshore hosting pages.
Setting it up and connecting your devices
The full walkthrough lives in the Set up WireGuard on a VPS guide; here is the shape of it so you know what you're signing up for. After your VPS deploys, the server side is three steps.
# 1. Install WireGuard (Debian 12/13, Ubuntu 22.04/24.04)
apt update && apt install -y wireguard
# 2. Generate the server keypair
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
# 3. Write /etc/wireguard/wg0.conf, enable IP forwarding, NAT, then:
systemctl enable --now wg-quick@wg0Open the listen port (default UDP 51820) — that's the only inbound rule you need. WireGuard is silent on all other ports and does not respond to unauthenticated packets, so the server has no externally visible service to scan or fingerprint.
Desktop clients
- Linux —
wg-quick up client.conf, or import the.confinto NetworkManager / your DE's network applet. - Windows & macOS — the official WireGuard app: import the tunnel
.conffile and toggle it on. macOS also ships it on the App Store.
Mobile clients
- iOS & Android — install the official WireGuard app, tap add tunnel, and scan the QR code the server generates (
qrencode -t ansiutf8 < phone.conf). The phone is connected in about ten seconds, no typing keys by hand.
Set AllowedIPs = 0.0.0.0/0, ::/0 in a peer config to route all traffic through the VPS (full tunnel), or list specific subnets for a split tunnel that only sends chosen ranges through the exit. For always-on mobile, add PersistentKeepalive = 25 so the tunnel survives NAT timeouts on cellular networks. When you're ready, order an S1 VPS and follow the guide end to end.
Questions qui méritent une réponse
Is an S1 VPS really enough for a WireGuard VPN?
How is this more private than a commercial VPN?
Can I connect my phone easily?
Which jurisdiction should I pick for the exit?
Will my self-hosted VPN IP get blocked like commercial VPN IPs do?
Deploy your offshore server.
Choisissez une région. Choisissez un plan. Collez une clé. Payez. Les 47 prochaines secondes sont pour nous.