Windows (WSL 2)
Run PNeX on a Windows PC with WSL 2 and Docker
PNeX runs inside a WSL 2 Ubuntu distribution, with Docker Engine installed in WSL by the script, or Docker Desktop's WSL integration. It is a good way to try PNeX on a PC; for a permanent installation, a Raspberry Pi or a small Linux box stays on when the PC sleeps.
Windows 11 22H2 or later is required for mirrored networking. Without it, WSL sits behind a NAT and devices on your network cannot reach the server.
1. WSL and networking
In PowerShell (administrator):
wsl --install -d UbuntuCreate %UserProfile%\.wslconfig:
[wsl2]
networkingMode=mirrored2. systemd (Docker Engine in WSL)
Skip this step if you use Docker Desktop. Inside Ubuntu, add to /etc/wsl.conf:
[boot]
systemd=true3. Restart WSL and open the ports
In PowerShell (administrator):
wsl --shutdown
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
New-NetFirewallRule -DisplayName "PNeX HTTPS" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow4. Install
Inside Ubuntu:
curl -fsSL https://raw.githubusercontent.com/Pnex/pnex-deploy/main/install.sh \
| sudo bash -s -- --admin-user [email protected]On WSL the installer names the server after its LAN address,
https://pnex-192-168-1-20.sslip.io for example, because mDNS (.local) does
not cross WSL. It warns when WSL still uses NAT networking. Then trust the
server's certificate authority on Windows: download
https://<server>/api/v1/meta/ca, open pnex-ca.crt → Install Certificate →
Local Machine → Trusted Root Certification Authorities.
Give the PC a DHCP reservation: the name embeds the IP address (see Names and TLS).

