Skip to content

⚙️ Set up self-hosted GitHub Actions runner on home server #79

@J-MaFf

Description

@J-MaFf

Self-Hosted GitHub Actions Windows Runner Setup

Current Status

⚠️ Step 4 - TROUBLESHOOTING - Windows 11 25H2 boot issues, pivoting to Windows 10

Progress

  • ✅ Step 1: KVM/Libvirt infrastructure installed and verified

    • QEMU v10.1.0, Libvirt v11.6.0
    • VT-x virtualization enabled (16 cores)
    • libvirtd.service running with dnsmasq DHCP active
  • ✅ Step 2: Windows 11 25H2 ISO downloaded and verified

    • ISO Location: ~/VMs/iso/Windows_11_verified.iso (7.3GB)
    • File verified: Bootable ISO 9660 filesystem
    • ❌ Boot fails: Error 0xc0000225 across all VM configurations
  • ✅ Step 3: Virtual network bridge created

    • Bridge name: virbr0
    • Host IP: 192.168.122.1
    • Network: NAT with DHCP (192.168.122.2-254)
    • Interface: enp0s31f6
  • 🔄 Step 4: Windows VM configuration - TESTING

    • Attempted configs: BIOS+IDE, BIOS+SATA, UEFI+q35, UEFI+TPM, raw disk passthrough
    • Issue: Windows 11 25H2 won't boot in QEMU/KVM (hypervisor incompatibility)
    • Solution: Switching to Windows 10 22H2 (more compatible boot structure)
    • USB /dev/sdb confirmed as bootable Windows media
    • Next: Create Windows 10 bootable USB, test if it boots
  • ⏳ Step 5+: Pending successful Windows boot

Troubleshooting Summary (Windows 11)

Tested 10+ different VM configurations:

  • Machine types: pc (BIOS), q35 (UEFI)
  • Disk buses: IDE, SATA, virtio
  • Boot sources: ISO (CDROM), USB passthrough, raw disk passthrough
  • Graphics: VGA, QXL, SPICE, VNC
  • Features: TPM 2.0, ACPI, APIC

All failed with same error code (0xc0000225). Ubuntu Server ISO boots successfully on same VM config, confirming hypervisor is correct.

Current Plan

  • Windows 11 25H2 appears incompatible with QEMU/KVM setup
  • Creating Windows 10 22H2 bootable USB as fallback
  • If Windows 10 boots: Continue setup with Windows 10 instead
  • If Windows 10 fails: Investigate deeper QEMU compatibility issues

Next Steps

  1. Create Windows 10 22H2 USB via Media Creation Tool
  2. Plug USB into Ubuntu server (/dev/sdc expected)
  3. Boot VM from USB with raw disk passthrough
  4. Test if Windows 10 installer loads
  5. If successful: Complete Windows 10 installation and runner setup
  6. If unsuccessful: Evaluate alternative hypervisors or approaches

VM Management Commands

virsh list
virsh dominfo github-runner-windows
virsh vncdisplay github-runner-windows
virsh destroy github-runner-windows
virsh undefine github-runner-windows --nvram

Notes

  • Ubuntu home server has limited USB port availability (headless system)
  • Media Creation Tool USB approach most practical
  • Windows 11 requirement may not be feasible; Windows 10 acceptable alternative
  • Runner functionality same in both Windows versions

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions