Complete guide to install codehero using Multipass virtual machines.
- What is Multipass?
- Requirements
- Quick Install
- Manual Installation
- After Installation
- Daily Usage
- Troubleshooting
Multipass is a free tool from Canonical (makers of Ubuntu) that creates lightweight Ubuntu virtual machines with a single command. It's:
- Simple - One command to create a VM
- Fast - Uses native hypervisors (HyperKit/QEMU on macOS, KVM/LXD on Linux)
- Free - Open source, no license needed
- Cross-platform - Works on macOS and Linux
| Minimum | Recommended | |
|---|---|---|
| RAM | 8GB total (6GB for VM) | 16GB total |
| Disk | 70GB free | 100GB free |
| CPU | 2 cores | 4+ cores |
- macOS 10.15 (Catalina) or newer
- Intel or Apple Silicon (M1/M2/M3/M4)
- Homebrew (installed automatically if missing)
- Ubuntu 18.04+, Debian 10+, Fedora 32+, or similar
- Snap support (installed automatically if missing)
- KVM support recommended (check:
egrep -c '(vmx|svm)' /proc/cpuinfo> 0)
curl -sL https://raw.githubusercontent.com/fotsakir/codehero/main/multipass/install-macos.command | bash- Download: install-macos.command
- Double-click the file
- If macOS blocks it: System Settings → Privacy & Security → Allow
- Enter your password when prompted (for sudo)
- Installs Homebrew (if not installed)
- Installs Multipass via Homebrew
- Starts the Multipass daemon
- Downloads Ubuntu 24.04 image
- Creates VM with 6GB RAM, 64GB disk, 4 CPUs
- Installs codehero inside VM
- Creates desktop shortcuts
Installation time: 15-25 minutes (depending on internet speed)
curl -sL https://raw.githubusercontent.com/fotsakir/codehero/main/multipass/install-linux.sh | bash- Installs Snap (if not installed)
- Installs Multipass via Snap
- Downloads Ubuntu 24.04 image
- Creates VM with 6GB RAM, 64GB disk, 4 CPUs
- Installs codehero inside VM
- Creates desktop shortcuts
Installation time: 15-25 minutes
If you prefer step-by-step control:
macOS:
brew install --cask multipassUbuntu/Debian:
sudo snap install multipassFedora:
sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install multipassArch Linux:
sudo pacman -S snapd
sudo systemctl enable --now snapd.socket
sudo snap install multipassmultipass version
multipass listcurl -sL https://raw.githubusercontent.com/fotsakir/codehero/main/multipass/cloud-init.yaml -o /tmp/cloud-init.yamlmultipass launch 24.04 \
--name claude-dev \
--memory 6G \
--disk 64G \
--cpus 4 \
--timeout 1800 \
--cloud-init /tmp/cloud-init.yamlThis takes 15-20 minutes. The cloud-init configuration automatically:
- Updates the system
- Installs all dependencies
- Downloads and installs codehero
- Configures services
# Watch installation logs
multipass exec claude-dev -- tail -f /var/log/cloud-init-output.log
# Check if complete
multipass exec claude-dev -- cat /root/install-complete
# Should show: donemultipass exec claude-dev -- hostname -IOpen your browser:
https://YOUR_VM_IP:9453
Replace YOUR_VM_IP with the IP from the previous step (e.g., https://192.168.64.5:9453)
- Username:
admin - Password:
admin123
You'll see a browser security warning (self-signed certificate). This is normal:
- Chrome: Click "Advanced" → "Proceed to site"
- Firefox: Click "Advanced" → "Accept the Risk and Continue"
- Safari: Click "Show Details" → "visit this website"
multipass shell claude-dev
sudo /opt/codehero/scripts/change-passwords.sh- Open the dashboard
- Click "Activate Claude" in the header
- Follow the prompts
Or via terminal:
multipass shell claude-dev
su - claude
claudemultipass start claude-devmultipass stop claude-devmultipass listOutput example:
Name State IPv4 Image
claude-dev Running 192.168.64.5 Ubuntu 24.04 LTS
multipass shell claude-devmultipass exec claude-dev -- hostname -Imultipass info claude-devmultipass restart claude-dev# Stop VM first
multipass stop claude-dev
# Increase memory to 8GB
multipass set local.claude-dev.memory=8G
# Increase CPUs to 8
multipass set local.claude-dev.cpus=8
# Start VM
multipass start claude-dev# Delete VM
multipass delete claude-dev
# Purge (permanently remove)
multipass purge# Stop VM
multipass stop claude-dev
# Create snapshot
multipass snapshot claude-dev --name backup-$(date +%Y%m%d)
# List snapshots
multipass snapshot list claude-devmultipass restore claude-dev.backup-20240115The installer creates these on your Desktop:
- Claude AI Developer.webloc - Opens dashboard in browser
- Start Claude VM.command - Starts VM and opens dashboard
- claude-ai-developer.desktop - Opens dashboard
- start-claude-vm.sh - Starts VM and opens dashboard
The Multipass daemon hasn't started. Fix:
# Start the daemon
sudo launchctl load /Library/LaunchDaemons/com.canonical.multipassd.plist
# Wait 10 seconds
sleep 10
# Test
multipass listIf still failing:
# Restart daemon
sudo launchctl unload /Library/LaunchDaemons/com.canonical.multipassd.plist
sudo launchctl load /Library/LaunchDaemons/com.canonical.multipassd.plist
sleep 15
multipass listAllow Multipass in System Settings:
- System Settings → Privacy & Security → Full Disk Access
- Add multipassd
- Restart Multipass:
brew services restart multipass
Check logs:
# Multipass logs
cat /Library/Logs/Multipass/multipassd.log | tail -50
# Cloud-init logs (if VM started)
multipass exec claude-dev -- cat /var/log/cloud-init-output.log# Check VM network
multipass exec claude-dev -- ip addr
# Try restarting
multipass restart claude-dev# Check service status
sudo snap services multipass
# Restart service
sudo snap restart multipassEnable KVM:
# Check if KVM is available
egrep -c '(vmx|svm)' /proc/cpuinfo
# If 0, enable in BIOS (VT-x for Intel, AMD-V for AMD)
# Install KVM
sudo apt install qemu-kvm libvirt-daemon-system
sudo usermod -aG kvm $USER
# Log out and back inOr use LXD instead:
multipass set local.driver=lxd# Check space
df -h
# Clean old images
multipass purge# Connect interfaces
sudo snap connect multipass:lxd lxd
sudo snap connect multipass:libvirt-
Check VM is running:
multipass list
-
Check services inside VM:
multipass exec claude-dev -- systemctl status codehero-web -
Start services if needed:
multipass exec claude-dev -- sudo systemctl start mysql nginx php8.3-fpm codehero-web codehero-daemon -
Check IP:
multipass exec claude-dev -- hostname -I
Check if setup finished:
multipass exec claude-dev -- cat /root/install-completeIf empty, check logs:
multipass exec claude-dev -- tail -100 /var/log/cloud-init-output.log# Check status
multipass info claude-dev
# Try recovery
multipass recover claude-dev
# If corrupted, recreate
multipass delete claude-dev --purge
# Run installer againThe most common task after installation:
# Get VM IP address
multipass exec claude-dev -- hostname -I
# Example output: 192.168.64.5
# Dashboard URL: https://192.168.64.5:9453Tip: The IP may change after VM restart. Always check with the command above.
| Task | Command |
|---|---|
| Get IP address | multipass exec claude-dev -- hostname -I |
| List VMs | multipass list |
| Start VM | multipass start claude-dev |
| Stop VM | multipass stop claude-dev |
| Restart VM | multipass restart claude-dev |
| Open shell | multipass shell claude-dev |
| Run command | multipass exec claude-dev -- <command> |
| VM info | multipass info claude-dev |
| Delete VM | multipass delete claude-dev --purge |
| View logs | multipass exec claude-dev -- journalctl -u codehero-web |
| Feature | Multipass | WSL2 | Traditional VM |
|---|---|---|---|
| Platform | macOS, Linux, Windows | Windows only | All |
| Setup time | 15-20 min | 10-15 min | 30-60 min |
| Resource usage | Medium | Low | High |
| Isolation | Full VM | Shared kernel | Full VM |
| Networking | Separate IP | Windows IP | Configurable |
| Best for | macOS/Linux | Windows | Maximum control |
Recommendations:
- Windows users: Use WSL2 (lighter weight)
- macOS users: Use Multipass
- Linux users: Use Multipass or direct installation
Need help? Open an issue at GitHub