Files
AzerothAI/deploy/pc-lab/README.md
T
Richard Clark 5f0fc86cf9
Core tests / core (push) Successful in 9m57s
Full verification / application (push) Failing after 5m16s
Full verification / local-brain (push) Failing after 6m15s
Realm simulation / simulated-live-world (push) Failing after 5m32s
WoW integration lab / real-worldserver (push) Canceled after 17m23s
Import verified AzerothAI snapshot from GitHub
Source branch: feature/ai-brain-router
Source commit: c2a09e0460465201a58aaab56c71424e9a96405e
2026-09-22 13:12:54 -04:00

161 lines
5.7 KiB
Markdown

# Temporary Windows PC + Ubuntu VM Lab
This is the short-lived lab profile for running AzerothAI on a Windows gaming PC until the dedicated mini PC is ready.
## Layout
Windows gaming PC:
- WoW 3.3.5a client
- Ollama
- Qwen3.5 4B on the RTX GPU
- Ubuntu Server VM containing AzerothCore, Playerbots, ALE, MySQL, AzerothAI, and World Monitor
The Windows install stays intact. Do not install Proxmox on the gaming PC for this temporary lab.
## VM settings
Create an Ubuntu Server VM in VMware with:
- 4 vCPUs
- 8 GB RAM
- 90 GB dynamically allocated disk
- NAT networking for the temporary Wi-Fi lab
- no desktop environment required
Ubuntu 24.04 LTS is the reference host, but newer Ubuntu hosts are acceptable because the AzerothCore Docker build itself uses its pinned container base. The bootstrap automatically expands free LVM space and handles the VMware NAT path to Windows-hosted Ollama.
With NAT, Windows can reach the VM directly on VMnet8. Phone/iPad access is optional and can be added later with bridged networking or a tunnel.
If free disk space is tight, 70 GB can work for a short test, but 90 GB leaves more breathing room for AzerothCore build output and extracted client data.
## Step 1 — Windows host
Open PowerShell as Administrator in the AzerothAI checkout.
Read-only check:
powershell -ExecutionPolicy Bypass -File .\deploy\pc-lab\host-setup.ps1
When ready to set up the model host:
powershell -ExecutionPolicy Bypass -File .\deploy\pc-lab\host-setup.ps1 -InstallOllama -StartOllama -OpenFirewall
That checks RAM, free space, CPU virtualization and GPU; installs Ollama through winget if requested; binds Ollama to TCP 11434; pulls qwen3.5:4b; opens TCP 11434 on Windows Private networks only; and prints the Windows LAN IPv4 address.
Keep that IPv4 address.
## Step 2 — Create Ubuntu VM
Install Ubuntu Server normally. For this temporary Wi-Fi setup, use VMware NAT.
After installation:
ip addr
Keep the VM's LAN IPv4 address too.
## Step 3 — Clone AzerothAI in Ubuntu
sudo apt-get update
sudo apt-get install -y git
git clone https://github.com/Endami-backup/AzerothAI.git
cd AzerothAI
git checkout feature/ai-brain-router
bash deploy/pc-lab/vm-bootstrap.sh
The bootstrap first tries to discover the Windows VMnet8/Ollama endpoint automatically. If it cannot, enter the VMware NAT host IPv4 printed by host-setup.ps1.
On the first run the script may install Docker and ask you to log out/back in before rerunning. That is expected.
The bootstrap verifies the VM can reach Qwen on Windows, calls the real playable-realm bootstrap, builds AzerothCore + Playerbots + ALE, imports the realm databases/client data, starts AzerothAI, points AzerothAI at the Windows Ollama host, and prints the WoW realm and dashboard addresses.
## Step 4 — Create your WoW GM account
Inside Ubuntu:
cd ~/azerothai-pc-lab/azerothcore
docker attach ac-worldserver
At the worldserver console:
account create YOURNAME YOURPASSWORD
account set gmlevel YOURNAME 3 -1
Detach without killing worldserver with Ctrl-P, then Ctrl-Q.
Then save those same credentials for AzerothAI's localhost-only SOAP GM channel from the AzerothAI checkout:
bash deploy/playable/set-gm-credentials.sh YOURNAME YOURPASSWORD
Restart the AzerothAI runtime if the helper tells you to.
## Step 5 — Connect WoW from Windows
Edit:
<WoW 3.3.5a folder>\Data\enUS\realmlist.wtf
Use the Ubuntu VM IP:
set realmlist 192.168.x.x
Launch WoW and sign in. The realm name is AzerothAI Lab.
## Step 6 — Open World Monitor
From Windows, iPhone, or iPad on the same network:
http://<ubuntu-vm-ip>:8787
Open World Monitor. It shows Zaku's location/state/home/goal/last decision, active zones, population bands, Hardcore deaths, authoritative ALE events, server/model health, and Population Director activity.
## Step 7 — Test connectivity from Windows
powershell -ExecutionPolicy Bypass -File .\deploy\pc-lab\check-lab.ps1 -VmIp 192.168.x.x
It checks World Monitor on TCP 8787, WoW authserver on 3724, worldserver on 8085, and the AzerothAI health API.
## What still needs real-server proof
The simulated ALE/live-world path is green in CI. This VM gives us the physical environment to validate:
- real Playerbot character GUID binding
- PlayerBotAI execution of AzerothAI intents
- all real damage paths for Zaku's 1 HP clamp
- actual quest/travel/social behavior
- real WoW client login/play
If the live server differs from the simulator, the worldserver is authoritative and we fix the adapter.
## Stop the lab
From Ubuntu:
export AZEROTHAI_PLAYABLE_ROOT="$HOME/azerothai-pc-lab"
bash deploy/playable/stop.sh
The database and realm files remain on disk.
## Thursday migration
Before deleting the VM, create a private migration archive:
cd ~/AzerothAI
export AZEROTHAI_PLAYABLE_ROOT="$HOME/azerothai-pc-lab"
bash deploy/pc-lab/export-for-mini-pc.sh
The archive contains the AzerothCore auth/characters/world databases, AzerothAI local state, generated configuration, and runtime secrets. It is created with owner-only permissions and must be treated as sensitive.
This VM is disposable, but Zaku is not. On the mini PC we should import this state so Zaku remains the same persistent identity rather than being rebuilt as a new character.
## Remote dashboard over Tailscale
If the dashboard HTML loads over the raw Tailscale IP but CSS/JS assets do not, use the built-in proxy helper:
```bash
cd ~/AzerothAI
git pull
bash deploy/pc-lab/tailscale-dashboard.sh
```
It serves built client assets directly with nginx, proxies API/SSR requests back to the AzerothAI runtime on port 8787, and publishes the result privately with Tailscale Serve over HTTPS. Use the `https://...ts.net/` URL it prints instead of raw `http://100.x.x.x:8787`.