How to use a VPN on Steam Deck
SteamOS is Arch Linux with NetworkManager, so a Steam Deck imports a WireGuard configuration file directly. Switch to desktop mode, import the config through the network settings, and the tunnel is then available from game mode without any further work.
4 min read
The Steam Deck runs SteamOS, which is Arch Linux with a game-focused shell on top. That means it has NetworkManager, it has the kernel's WireGuard support, and importing a tunnel is a two-minute job that does not require touching the read-only system partition or installing anything.
The easy route: import a config in desktop mode
- Hold the power button and choose Switch to Desktop.
- Get the
.conffile onto the device. A USB drive, a microSD card or downloading it in the browser all work. - Open a terminal (Konsole) and import it:
nmcli connection import type wireguard file ~/Downloads/vpnmine.conf
- Bring it up:
nmcli connection up vpnmine
- Set it to connect automatically if you want it always on:
nmcli connection modify vpnmine connection.autoconnect yes
Switch back to game mode. The tunnel stays up, and it now appears in the network settings under the quick access menu.
Why not a provider's Linux app
Most do not have one, and the ones that do usually ship a .deb or an AppImage
that expects a writable filesystem. SteamOS's root partition is read-only and is
wiped by system updates, so anything installed with pacman after
steamos-readonly disable is gone after the next update.
NetworkManager's import survives updates because the connection profile lives in
/etc/NetworkManager/system-connections, which is preserved. That is the whole
reason to prefer this route.
Flatpak is the other update-proof option, and if a provider ships a Flatpak it is a reasonable alternative. Very few do.
The GUI route, if you prefer it
In desktop mode, open the network icon in the system tray, choose Configure
Network Connections, then the plus button, then Import VPN connection, and
select the .conf file. It is the same thing nmcli does with more clicking,
and it fails less obviously when the file has a field KDE does not expect.
What to expect for speed
A Steam Deck's CPU handles WireGuard comfortably — it is a modern x86 part with AES acceleration, and ChaCha20-Poly1305 is fast on it regardless. The tunnel is not the bottleneck. Distance to the server is.
Run the speed test in desktop mode with the tunnel down and again with it up. If the loss is large, you have picked a distant server rather than hit a hardware limit.
Latency, and why this matters more here than on a desktop
A VPN adds the round trip to the server on top of the round trip to the game. For single-player and for cloud saves that is irrelevant. For anything competitive it is not, and no configuration recovers it: the packets genuinely travel further.
Pick the closest server if the tunnel has to be on while gaming, or bring it down for those sessions. Both are legitimate; pretending a VPN is latency-free is not.
Downloads and Steam
Steam's content servers are distributed, and Steam picks a download region based on where it thinks you are. With a tunnel up, it may pick a region on the other side of the world and download slowly from it.
If downloads crawl with the VPN on, check Steam, Settings, Downloads, Download Region and set it manually rather than blaming the tunnel.
Game mode caveats
- The quick access menu shows the tunnel's state, but it cannot create or edit one. Configuration is a desktop mode job.
- A tunnel set to autoconnect comes up before the shell finishes loading, which occasionally shows as a brief "no network" state at boot.
- If the Deck sleeps for a long period, the tunnel may need a reconnect. NetworkManager usually handles it; if it does not, toggling Wi-Fi off and on from the quick access menu is faster than going back to desktop mode.
Config hygiene
The file contains a private key that identifies one peer. Do not copy it to
another machine, and do not leave it in ~/Downloads after importing it —
NetworkManager has already stored what it needs. Providers issue these per
device; VPNmine's are generated per device and covered on the
Linux page.
Running it only for some traffic
SteamOS has no per-app tunnelling, and there is no clean way to add one. If you
want the store and your browser tunnelled while a game connects directly, the
practical approach is a split tunnel by destination rather than by application:
narrow AllowedIPs in the config to the ranges you want covered, and leave
everything else on the normal route.
That is fiddly to maintain and easy to get wrong in the unsafe direction — a range you forgot is a range that is not covered — so for most people the honest answer is to run the tunnel fully on or fully off, and to toggle it.
When SteamOS updates break things
A SteamOS update replaces the root filesystem. Anything installed with pacman
is gone; NetworkManager connection profiles are not, because they live on the
writable partition. If a tunnel stops working right after an update, check
whether it was set up through NetworkManager or through a package you installed
by hand, because the second one has simply been removed.
Reimporting the same .conf file restores it in under a minute either way,
which is a good reason to keep a copy somewhere other than the Deck.