System requirements
What a machine needs to run VpnHood! SERVER: one of the systems below, an x64 or ARM64 processor, and a public IP address.
Linux
Linux is the recommended system: only there does the server handle IPv6 as it does IPv4. The server runs on x64 and ARM64, on these distributions and the ones built on them:
| Distribution | Versions |
|---|---|
| Ubuntu | 22.04, 24.04, 26.04 |
| Debian | 12, 13 |
| Red Hat Enterprise Linux | 8, 9, 10 |
| AlmaLinux | 8, 9, 10 |
| Rocky Linux | 8, 9, 10 |
| CentOS Stream | 9, 10 |
| Fedora | 44, 45 |
| openSUSE Leap | 16.0 |
| SUSE Linux Enterprise Server | 15 SP7, 16.0 |
| Amazon Linux | 2023 |
| Arch Linux | Rolling release, kept up to date |
The install command needs root access and systemd, which runs the server as a service. Where the system has no ICU, a library the server needs, the command installs it.
The server's VPN adapter needs a TUN device and the ip and iptables commands, which nearly every server has. Without them, the server runs as a proxy only: apps still connect, and their traffic goes through the server's proxy instead of its adapter.
Not supported: Alpine and the other distributions built on musl instead of glibc, where you can run the server in Docker, and distributions older than glibc 2.27, such as CentOS 7.
Docker
The server's Docker image runs on any Linux machine with Docker and its compose plugin, on x64 or ARM64, Alpine included: see Install VpnHood! SERVER with Docker. A container has no TUN device, so there the server runs as a proxy only.
Windows
The server also runs on Windows 10, Windows 11 and Windows Server 2016 or later, with these limits:
- x64 only: there is no package for Windows on ARM.
- Windows' NAT translates only IPv4, so IPv6 traffic always goes through the server's proxy.
- On Windows 10 and 11, the server's VPN adapter needs Hyper-V turned on, as Windows' NAT comes with it, and Home editions have no Hyper-V. Without it, the server runs as a proxy only. Windows Server needs nothing turned on.
Processor
An ARM64 processor, or an x64 processor with SSE4.2 and POPCNT, as .NET 11 requires. Every x64 processor from the last ten years has them, but some VPS providers hide them behind a basic virtual processor, which Linux names Common KVM processor. On such a machine the server stops as soon as it starts, with the error The current CPU is missing one or more of the following instruction sets.
To check an x64 Linux machine, run this on it:
grep -qw sse4_2 /proc/cpuinfo && grep -qw popcnt /proc/cpuinfo && echo Supported || echo "Not supported"If it prints Not supported, ask your provider to change the machine's CPU type to host or x86-64-v2. If they cannot, choose another provider.
Network
- A public IP address, which apps connect to.
- A TCP port open, both in the machine's firewall and in your hosting provider's. The server listens on port
443by default, and we recommend it, as networks rarely block it, but any port works. To change it, and for the server's UDP port, see Set your server's IP addresses.