From nothing installed, to signed in as an administrator on your own machine. Ten steps, about ten minutes.
znetlab\index.html
and press Learn or Simulator. This guide is for the other half:
Real labs, which boots vendor images on a server, and so needs one running.
Open PowerShell from the Start menu and run:
winget install OpenJS.NodeJS.LTS
Check it in the new window:
node --version v20.11.1 ← anything v16 or higher is fine
cd C:\Users\panka\Workspace\Network-App\znetlab\server .\run-test-server.ps1 -LocalOnly
.ps1 on a
double-click — it opens it in Notepad. That is a deliberate safety default, not a
fault, and it is the commonest way to get stuck on this step. The command has to be
typed into a PowerShell window, as above. Quickest way to get one already pointing
at the right folder: open the server folder in File Explorer, click the
address bar, type powershell and press Enter.
Or right-click the file → Run with PowerShell.
-LocalOnly binds the server to 127.0.0.1: reachable
from this machine only, and Windows Firewall never prompts. Drop the flag later
when you want other machines on your network to reach it — see step 10.
powershell -ExecutionPolicy Bypass -File .\run-test-server.ps1 -LocalOnly
Press Enter to accept admin as the username,
or type another. Then type a password twice. It is not shown as you type —
that is deliberate, so it does not end up in your PowerShell history.
password, admin, ZNetLab,
cisco or letmein. If it is rejected the prompt simply
asks again.
Under it, a box you cannot miss says the same thing this guide does: nothing is emulated, no image runs, no frame is sent, and captured packets are generated rather than captured.
In File Explorer, double-click:
C:\Users\panka\Workspace\Network-App\znetlab\index.html
| Section | Needs |
|---|---|
| Learn | Nothing. Lessons, articles, blogs and forums, signed out. |
| Simulator | Nothing. The whole browser simulator and every guided lab. |
| Real labs | The server from step 2, and an account. This is where you are going. |
Press Real labs in the header. The sign-in screen appears over a blurred workspace.
file:// page may do:
cd C:\Users\panka\Workspace\Network-App\znetlab npx serve .Then open the
http://localhost:… address it prints.
| Field | What to type |
|---|---|
| Server address | ws://localhost:8080 |
| Username | admin, or whatever you chose in step 3 |
| Password | the one you typed in step 3 |
ws://, not http://. ZNetLab talks over a
WebSocket. If you paste an http:// address it is converted for you,
so either works — but ws:// is what the server prints.
| Look at | It tells you |
|---|---|
| Green dot + hostname | Connected to the server. |
| Amber TEST MODE bar | Nothing is emulated. It cannot be dismissed, by design. |
| Admin portal tab | You are an administrator. It appears only then. |
| Chip, top right | Your name and plan. Click for account, portal, sign out. |
| Section | What is in it |
|---|---|
| Overview | Counts, host health, recent activity, and the create-account form. |
| Accounts | Change plan, promote to admin, reset password, disable, sign out everywhere, stop their lab, delete. |
| Running | Every device on the server grouped by owner, with a stop button per owner. |
| Images | What is actually on the disk, recognised or not, with sizes. |
| Activity | Who did what and when. Filter by action, or failures only. |
| Host | CPUs, memory, root, KVM, emulators, and cleanup of orphaned interfaces. |
trainee1 the Free plan and a twelve-device lab is refused before
anything starts.
Go to Lab → press Examples → open Two PCs on a wire → press Start lab. Then open each console and type:
on PC1 ip 10.1.1.10/24 on PC2 ip 10.1.1.20/24 back on PC1 ping 10.1.1.20
ping between two network
namespaces.
Then select the link, press Capture, ping again, and press Export .pcap. That file opens in Wireshark.
To watch a limit being enforced rather than merely displayed, put twelve devices on the canvas while signed in on the Free plan and press Start lab:
Devices per lab on the Free plan is 8; this lab has 12. Pro allows 30.
That refusal comes from the server, not the page. Greying a button out is a courtesy; this is the limit.
Stop the server with Ctrl+C and
start it again without -LocalOnly:
.\run-test-server.ps1
It now binds every interface, and the SIGN IN box prints one address per network
card rather than just localhost:
│ address ws://localhost:8080 │ ws://192.168.1.24:8080 ← what the other machine types
-LocalOnly and the prompt never
appears again.
| What you see | What to do |
|---|---|
| “node is not recognised” | You did not open a new terminal after installing Node. Close PowerShell, open it again. |
| The script opens in Notepad | You double-clicked it. Windows never runs a .ps1 that way. Type it into a PowerShell window instead, or right-click the file → Run with PowerShell. |
| “running scripts is disabled” | Use powershell -ExecutionPolicy Bypass -File .\run-test-server.ps1 -LocalOnly |
| “No answer from ws://localhost:8080” | The server window is not running, or it is on another port. Check the PowerShell window is still open and showing the SIGN IN box. |
| “That username and password do not match” | After 5 wrong tries it slows down, doubling each time to 30 seconds. It is per-username, not a lockout — wait and try again. |
| Password lost | Stop the server, then .\run-test-server.ps1 -ResetAdmin. It asks for a new one and replaces only the administrator. |
| No Admin portal tab | That account is not an administrator, or you are not signed in. The chip at the top right shows which. |
| A firewall prompt appears | Allow it for Private networks only — or press Cancel and re-run with -LocalOnly, which never prompts. |
| Port 8080 already in use | Start on another one: .\run-test-server.ps1 -LocalOnly -Port 8090, and sign in at ws://localhost:8090. |
| Everything looks blank | Serve over HTTP instead of file://: npx serve . from the znetlab folder. |
| Learn or Simulator asks you to sign in | They never do. If a page seems to, you are on Real labs — press Simulator in the header. |
Start it
cd C:\Users\panka\Workspace\ Network-App\znetlab\server .\run-test-server.ps1 -LocalOnly
Reset the password
.\run-test-server.ps1 -ResetAdmin
Open the site
znetlab\index.html
Sign in with
address ws://localhost:8080 username admin password the one you chose
Where things live
%LOCALAPPDATA%\ZNetLab\ users.json accounts activity.json the trail images\ your images labs\ saved labs
ZNetLab · Accessing your server locally · Test mode does not emulate anything.
For real labs, see docs/SETUP-WINDOWS.md, which covers WSL2.