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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions