Early beta (0.1.0), not yet for critical processes. See the roadmap
PNeX logo

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 Ubuntu

Create %UserProfile%\.wslconfig:

[wsl2]
networkingMode=mirrored

2. systemd (Docker Engine in WSL)

Skip this step if you use Docker Desktop. Inside Ubuntu, add to /etc/wsl.conf:

[boot]
systemd=true

3. 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 Allow

4. 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).

On this page