Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| macOS | macOS 11 Big Sur or later | macOS 14 Sonoma or later |
| RAM | 4 GB available for VM | 8 GB available for VM |
| Disk | 25 GB free | 40 GB free |
| CPU | Any Apple Silicon or Intel Mac | Apple Silicon (M1+) |
| Network | Internet connection | Stable broadband |
Why UTM?
| Feature | Description |
|---|---|
| Native ARM virtualization | Full-speed VMs on Apple Silicon using Apple's Hypervisor.framework |
| Free | Free from the UTM website (paid on the App Store to support development) |
| Simple | User-friendly GUI, no command-line needed |
| No kernel extensions | Does not require modifying macOS security settings |
Step 1: Download UTM
From the Website (Free)
- Go to: https://mac.getutm.app/
- Click Download
- Open the downloaded DMG file
- Drag UTM to your Applications folder
- Launch UTM from Applications
From the App Store (Paid)
- Open the App Store
- Search for "UTM"
- Purchase and install (supports the developer)
Both versions are identical in functionality.
Step 2: Download Ubuntu ARM ISO
For Apple Silicon Macs, you need the ARM version of Ubuntu.
- Go to: https://ubuntu.com/download/server/arm
- Download Ubuntu Server 24.04 LTS for ARM
- Save the ISO file (approximately 2.5 GB)
Step 3: Create the Virtual Machine
- Open UTM
- Click Create a New Virtual Machine
- Select Virtualize (uses Apple's Hypervisor.framework for native speed)
- Select Linux
- Under "Boot ISO Image", click Browse and select the Ubuntu ARM ISO
- Click Continue
- Hardware settings:
- Memory: 4096 MB
- CPU Cores: 2 (or more)
- Leave "Enable hardware OpenGL acceleration" unchecked (not needed for a server)
- Click Continue
- Storage: Size: 40 GB
- Click Continue
- Shared Directory: Skip (click Continue)
- Summary: Name:
codehero— Review settings - Click Save
Step 4: Network Configuration
By default, UTM uses shared networking (similar to NAT) which works fine with port forwarding. For easier access, switch to bridged mode.
Option A: Bridged Networking (Recommended)
Bridged mode gives the VM its own IP on your local network.
- In UTM, right-click the
codeheroVM > Edit - Go to Network
- Change "Network Mode" to Bridged (Advanced)
- Select your network interface (usually
en0for Wi-Fi) - Click Save
With bridged networking, access the dashboard using the VM's own IP address.
Option B: Shared Networking with Port Forwarding
Keep the default shared networking and add port forwarding:
- Right-click the VM > Edit
- Go to Network
- Ensure "Network Mode" is Shared Network
- Under "Port Forward", add these rules:
| Protocol | Guest Address | Guest Port | Host Address | Host Port |
|---|---|---|---|---|
| TCP | (empty) | 22 | 127.0.0.1 | 2222 |
| TCP | (empty) | 9453 | 127.0.0.1 | 9453 |
| TCP | (empty) | 9867 | 127.0.0.1 | 9867 |
With shared networking, access the dashboard at https://localhost:9453.
Step 5: Install Ubuntu
- Select the
codeheroVM in UTM - Click the Play button to start the VM
- Select Try or Install Ubuntu Server and press Enter
Ubuntu Installation Steps
- Language: Select your language
- Keyboard: Select your keyboard layout
- Type of Install: Ubuntu Server
- Network: Ubuntu auto-detects the network. Note the IP address if shown.
- Proxy: Leave empty
- Mirror: Leave default
- Storage: Use an entire disk > select the virtual disk > Done > Done > Continue
- Profile Setup:
- Your name:
Claude Admin - Server name:
codehero-server - Username:
claude - Password: Choose a password (remember it)
- Your name:
- Ubuntu Pro: Skip for now
- SSH: Check "Install OpenSSH server"
- Featured Snaps: Skip
- Wait for installation to finish (5-10 minutes)
- Select Reboot Now
Remove the ISO After Installation
After the VM reboots:
- If the VM boots back into the installer, stop the VM (click the Stop button)
- Right-click the VM > Edit
- Find the IDE Drive that contains the ISO
- Click Clear to remove the ISO
- Click Save
- Start the VM again
First Login
At the login prompt:
- Username:
claude - Password: the password you chose
Step 6: Install CodeHero
Run these commands inside the VM. First, copy the ZIP file provided with your CodeHero PRO license into the VM, then:
sudo apt update
sudo apt install -y unzip wget net-tools
sudo su
cd /root
unzip codehero-pro-release-4.6.3.zip
cd codehero
chmod +x setup.sh
./setup.sh
Wait 10-15 minutes for installation to complete.
Find Your VM IP Address
hostname -I
Write down the IP (e.g., 192.168.1.115).
Step 7: Access the Dashboard
On your Mac, open a browser and go to:
- Bridged networking:
https://YOUR_VM_IP:9453 - Shared networking:
https://localhost:9453
Default Login
- Username:
admin - Password:
admin123
Change Default Passwords
Inside the VM:
sudo /opt/codehero/scripts/change-passwords.sh
Browser Security Warning
| Browser | How to Proceed |
|---|---|
| Chrome | Click "Advanced" then "Proceed to site (unsafe)" |
| Firefox | Click "Advanced..." then "Accept the Risk and Continue" |
| Safari | Click "Show Details" then "visit this website" |
| Edge | Click "Advanced" then "Continue to site (unsafe)" |
Daily Usage
Start the VM
- Open UTM
- Select the
codeheroVM - Click the Play button
The VM starts in a few seconds and services start automatically with Ubuntu.
Stop the VM
- Click the Stop button in UTM, or
- Use the VM menu button > Request Power Down (graceful shutdown)
From inside the VM:
sudo shutdown now
Save VM State (Snapshot)
Right-click the VM > Clone (creates a full copy). Or from inside the VM, use UTM's snapshot features if available.
Delete the VM
- Stop the VM if running
- Right-click the VM > Delete
- Confirm deletion
SSH into the VM
From your Mac terminal:
# Bridged networking
ssh claude@YOUR_VM_IP
# Shared networking with port forwarding
ssh -p 2222 claude@localhost
Check Services
SSH into the VM and run:
sudo systemctl status codehero-web codehero-daemon
Troubleshooting
VM Won't Start: "Failed to start"
- Ensure you selected Virtualize (not "Emulate") for Apple Silicon
- Check that the ISO/disk is not corrupted
- Try creating a new VM from scratch
No Network Connection
- Check UTM network settings (bridged vs shared)
- For bridged mode, verify the correct interface is selected (
en0for Wi-Fi,en1for Ethernet on some Macs) - Inside the VM:
ip addr show sudo dhclient enp0s1
Cannot Access Dashboard
- Bridged mode: Verify VM IP with
hostname -Iinside the VM - Shared mode: Verify port forwarding rules are configured
- Check services are running:
sudo systemctl status codehero-web
VM Runs Slowly
- Increase memory: Edit VM > System > Memory > 8192 MB
- Increase CPUs: Edit VM > System > CPU Cores > 4
- Ensure you chose Virtualize (not "Emulate") — emulation is much slower
- Close other resource-heavy apps on your Mac
Cannot Download Files Inside the VM
DNS may not be configured. Fix:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
Screen Too Small / Cannot See Full Terminal
- Resize the UTM window
- Or SSH into the VM from your Mac terminal for a better experience:
ssh claude@YOUR_VM_IP
UTM Crashes on Launch
- Ensure you have the latest version of UTM
- Check macOS compatibility (UTM requires macOS 11+)
- Try downloading from the website instead of the App Store (or vice versa)
"Virtualize" Option Not Available
This happens on Intel Macs when trying to run ARM ISOs. Either:
- Use the x86_64 Ubuntu ISO with "Emulate" mode (slower)
- Use VirtualBox instead (better performance for Intel Macs)