WireGuard vs OpenVPN: Which to Self-Host?
WireGuard wins on speed, simplicity, and battery; OpenVPN wins on firewall-bypass over TCP 443 — and OpenVPN's kernel-space DCO has largely closed the old throughput gap. A first-hand decision table and a real WireGuard config to help you pick the right protocol for a self-hosted VPN.

You're about to open a hole in your home network so you can reach your NAS, Jellyfin, or Home Assistant from your phone — and the setup screen asks you to pick a protocol. WireGuard or OpenVPN? Get it wrong and you'll be tearing down configs and regenerating keys next weekend. The good news: for most self-hosters the answer is clear once you know the one question that actually decides it — whether your networks will let the fast option through.
I run both into a Proxmox homelab, so this is about what each costs you to set up and live with, not a marketing spec sheet.
TL;DR
- WireGuard is faster, simpler, and kinder to your phone's battery — the default pick for most home setups.
- OpenVPN wins when you connect from restrictive networks: it can run over TCP port 443 and look like ordinary HTTPS.
- The classic "WireGuard is 3–5× faster" line is now dated: OpenVPN DCO moves its data path into the kernel and largely closes the speed gap.
- WireGuard's whole codebase is tiny (~4,000 lines), which makes it far easier to audit than OpenVPN's sprawling one.
- Pragmatic move: run WireGuard by default, keep an OpenVPN/TCP-443 fallback for hostile networks.
KEY-STAT: ~4,000 lines — WireGuard's entire codebase — versus hundreds of thousands for OpenVPN, which is why it's so much easier to audit
You have to pick one before you configure anything
Both protocols do the same core job: they build an encrypted tunnel from your device to your home network so you can reach private services safely. The difference is in how they get there, and that shapes your speed, your setup time, and whether the tunnel even connects from a locked-down café or hotel Wi-Fi.
The 30-second difference
WireGuard is modern and lean. It runs in the Linux kernel, speaks only UDP, uses the ChaCha20 cipher, and its configuration is barely more than a key pair and a list of peers.
OpenVPN is the mature veteran. It's endlessly flexible, runs over UDP or TCP (including TCP port 443, so it blends in with normal web traffic), and has decades of client support behind it — at the cost of a much larger configuration surface.
The real trade-off is speed and simplicity versus flexibility and firewall-evasion.
Speed: why WireGuard wins — and why the gap is closing
WireGuard is fast for concrete reasons. It runs in kernel space, so packets don't pay the memory-copy tax of a userspace VPN. Its ChaCha20 cipher is quick even on phones that lack AES hardware acceleration. And there's simply less code touching each packet. On the same hardware, WireGuard has historically delivered roughly 2–5× the throughput of OpenVPN, often saturating a gigabit link where OpenVPN stalls on CPU.
But 2026 changed the story. OpenVPN Data Channel Offload (DCO) pushes OpenVPN's data channel into the kernel too, and it's now mainline in the Linux kernel (6.16) when you run OpenVPN 2.6 or later with modern AEAD ciphers. With DCO enabled, the raw throughput gap largely closes — so "WireGuard is 3× faster" is no longer a safe assumption.
Warning
Don't trust a specific Mbps number from a random listicle. Real throughput depends on your CPU, your MTU, and whether DCO is switched on. If speed matters to you, measure it on your own hardware.
The decision table: WireGuard vs OpenVPN
Here's how they compare as I actually experience running both:
| Dimension | WireGuard | OpenVPN |
|---|---|---|
| Raw throughput | Very high, saturates gigabit | Lower — unless DCO is enabled |
| CPU overhead | Very low | Higher; much better with DCO |
| Setup effort | Minimal (key pair + peers) | More (certificates / PKI) |
| Transport | UDP only | UDP or TCP, including port 443 |
| Firewall / censorship bypass | Weaker — fixed UDP port | Stronger — TCP/443 looks like HTTPS |
| Mobile roaming & battery | Excellent — silent roaming | Heavier, reconnects more |
| Codebase / auditability | ~4,000 lines | Very large |
| Best for | Fast access to your own LAN | Restrictive or censored networks |
Read the table and the split is clean: WireGuard optimises for speed and simplicity on friendly networks; OpenVPN optimises for getting through unfriendly ones.
Setup reality: what self-hosting each takes
This is where the difference is felt most. WireGuard setup is generating a key pair per device, listing each peer with its allowed IP range, and opening a single UDP port — minutes of work. Helpers like `wg-easy`, or an overlay such as Tailscale or Headscale, make it even easier.
OpenVPN asks more: a small certificate authority / PKI, separate server and client configs, and extras like TLS auth. It's well-trodden — plenty of Docker images script it for you — but there are simply more moving parts to get right.
A WireGuard peer config looks like this
[Interface]
PrivateKey = <your-device-private-key>
Address = 10.0.0.2/32
DNS = 10.0.0.1
[Peer]
PublicKey = <server-public-key>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25
That's the whole client side. Where you run the endpoint is a homelab decision in itself — our Proxmox homelab guide covers standing up the VM or container that hosts it. And if your real goal is exposing a single web service rather than your whole LAN, a reverse proxy is the alternative worth weighing against a full VPN.
Tip
Start with WireGuard and only reach for OpenVPN if a network you actually use blocks it. Most people never hit that wall — and running both is easy to add later.
Which should you self-host?
There's no universal winner — there's one for your situation.
Pick WireGuard if…
You want the fastest, simplest always-on tunnel to your own network from devices you trust, you care about mobile battery and seamless roaming, and the networks you use don't block arbitrary UDP. For the typical homelab, this is the right default.
Pick OpenVPN if…
You regularly connect from restrictive networks — corporate, hotel, or censored — where only TCP port 443 reliably gets out, you need broad legacy client support, or you want maximum configuration flexibility. With DCO on OpenVPN 2.6+, you no longer sacrifice much speed to get it.
A VPN is only half of staying private, of course — the browser and accounts on the other end matter just as much, which is the ground our browser privacy guide covers. Pick the tunnel that fits your networks, and you'll set it once and forget it.
FAQ
Is WireGuard faster than OpenVPN?
Historically yes — often 2–5× the throughput on the same hardware. But with OpenVPN's Data Channel Offload (DCO), now mainline in the Linux kernel, the gap largely closes when you run OpenVPN 2.6+ with AEAD ciphers.
Is WireGuard less secure because it's simpler?
No. Its small (~4,000-line) codebase is a security advantage — there's far less to audit and fewer places for bugs to hide. Both protocols are strong when configured correctly.
Can OpenVPN match WireGuard's speed now?
Close to it, with DCO enabled on OpenVPN 2.6 or later. DCO moves the data channel into kernel space, removing most of the CPU overhead that made classic OpenVPN slower.
Which is better for getting through a firewall?
OpenVPN. It can run over TCP port 443, so it looks like ordinary HTTPS traffic and slips through networks that block VPN-shaped UDP. WireGuard's fixed UDP port is easier for a network to block.
Which is easier to set up for self-hosting?
WireGuard, by a wide margin — a key pair, a peer list, and one open UDP port. OpenVPN needs a certificate authority and more configuration, though Docker images ease the work.
Is WireGuard better for mobile battery life?
Generally yes. Its stateless design roams silently between Wi-Fi and mobile data without heavy reconnections, which is easier on battery than OpenVPN's chattier behaviour.
More from Self-Hosting & Privacy

Free, ZFS-grade TrueNAS SCALE versus Unraid's mixed-drive parity array (from $49) — with the two 2026 changes that reshape the choice: OpenZFS RAIDZ expansion and Unraid's native ZFS pools. A first-hand decision table to match a NAS OS to your actual drives and budget.

Plex's 2025-2026 price hikes put remote streaming and hardware transcoding behind a paywall — and tripled the Lifetime Pass to $749.99. Running both on a Proxmox homelab, here's a first-hand decision table on cost, transcoding, privacy, and which media server actually fits your setup.

You want smart lights and a heating schedule in your German flat — but is one drilled hole the thing that costs you your Kaution? German tenancy law is stricter than the US no-drill guides admit, yet almost everything you want is reversible and needs no permission. Here's the line.
Stay in the loop
Get the latest articles delivered to your inbox. No spam, unsubscribe anytime.
Jellyfin vs Plex in 2026: Which to Run?
Plex's 2025-2026 price hikes put remote streaming and hardware transcoding behind a paywall — and tripled the Lifetime Pass to $749.99. Running both on a Proxmox homelab, here's a first-hand decision table on cost, transcoding, privacy, and which media server actually fits your setup.
Continue Reading