{"id":28360330,"url":"https://github.com/muthukumar-subramaniam/server-hub","last_synced_at":"2026-04-21T21:07:48.462Z","repository":{"id":295483521,"uuid":"990236611","full_name":"Muthukumar-Subramaniam/server-hub","owner":"Muthukumar-Subramaniam","description":"A QEMU/KVM-based automation lab for end-to-end VM provisioning that manages the complete lifecycle of virtual machines, with multi-distribution support, providing a powerful environment for learning, testing, and experimenting with Linux-based technologies.","archived":false,"fork":false,"pushed_at":"2026-03-24T03:10:17.000Z","size":25875,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-25T03:29:15.141Z","etag":null,"topics":["build-automation","development","devops","homelab-automation","kubernetes","lab-automation","linux","linux-server","opensuse","os-provisioning","platform-engineering","qemu","qemu-kvm","rhel","testing","ubuntu","virtualization","vm-automation","vm-provisioning"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Muthukumar-Subramaniam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["Muthukumar-Subramaniam"]}},"created_at":"2025-05-25T19:17:44.000Z","updated_at":"2026-03-24T03:05:05.000Z","dependencies_parsed_at":"2025-07-07T11:22:10.473Z","dependency_job_id":"4c200948-7cb5-447e-b789-cdd690611569","html_url":"https://github.com/Muthukumar-Subramaniam/server-hub","commit_stats":null,"previous_names":["muthukumar-subramaniam/server-hub"],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/Muthukumar-Subramaniam/server-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muthukumar-Subramaniam%2Fserver-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muthukumar-Subramaniam%2Fserver-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muthukumar-Subramaniam%2Fserver-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muthukumar-Subramaniam%2Fserver-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Muthukumar-Subramaniam","download_url":"https://codeload.github.com/Muthukumar-Subramaniam/server-hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muthukumar-Subramaniam%2Fserver-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32110201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build-automation","development","devops","homelab-automation","kubernetes","lab-automation","linux","linux-server","opensuse","os-provisioning","platform-engineering","qemu","qemu-kvm","rhel","testing","ubuntu","virtualization","vm-automation","vm-provisioning"],"created_at":"2025-05-28T11:06:26.762Z","updated_at":"2026-04-21T21:07:48.426Z","avatar_url":"https://github.com/Muthukumar-Subramaniam.png","language":"Shell","funding_links":["https://github.com/sponsors/Muthukumar-Subramaniam"],"categories":[],"sub_categories":[],"readme":"# 🚀 Server-Hub: Build Your Own QEMU/KVM Virtual Home Lab\n\n[![stable release](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Muthukumar-Subramaniam/server-hub/main/project_version.json)](https://github.com/Muthukumar-Subramaniam/server-hub/releases/latest)\n\nTransform your Linux workstation into a powerful, automated virtual datacenter! This project allows you to build and manage a virtual home lab, making it easy to deploy, break, and rebuild Linux VMs effortlessly. It automates VM provisioning, manages the complete lifecycle of your VMs, and provides a flexible environment for learning, testing, and experimenting with Linux-based technologies.\n\nAlthough many open-source alternatives exist, I built this project for the fun of creating something of my own and sharing it with anyone with similar interests.\n\n\u003e ⚠️ **DISCLAIMER:** This project is intended for **testing**, **development**, and **experimentation** purposes only.\n\n---\n\n## 🎯 What You'll Get\n\n- 🚀 **Automated VM provisioning** via PXE boot \u0026 golden images\n- 🌐 **Dynamic DNS management** for your local domain\n- 🔧 **Full infrastructure-as-code** automation\n- 💻 **Professional datacenter experience** on your workstation\n- 🎮 **Complete VM lifecycle management** with enterprise-grade tools\n- 🧪 **Experiment freely** – Spin up and destroy VMs in seconds\n\n---\n\n## 🖥️ Automated Lab Environment for Provisioning and Managing Linux VMs\n\n### 🧠 Central Infra Server VM's OS\nThe central lab infrastructure server VM is designed to run on **AlmaLinux 10** by default, providing all the essential services for managing the lab environment.\n\n### 📦 VM Guest OS Provisioning\n\nThe lab infrastructure server centrally manages all guest VM provisioning using automation scripts and configuration templates.\n\nThe toolkits provide automated VM provisioning for all three major Linux families, including ready-to-use configurations for:\n\n| Distro Family    | Supported OSes                                | Provisioning Method           | Status                  |\n|------------------|-----------------------------------------------|-------------------------------|--------------------------|\n| Red Hat-based    | AlmaLinux                                      | Kickstart                     | ✅ Included by default   |\n|                  | Rocky, Oracle Linux, RHEL, CentOS Stream       | Kickstart                     | 🔧 Customizable          |\n| Debian-based     | Ubuntu LTS                                     | Cloud-init (`cloud-config`)   | 🔧 Customizable          |\n| SUSE-based       | openSUSE Leap                                  | AutoYaST                      | 🔧 Customizable          |\n\n---\n\n## 🧾 Minimum System Requirements\n\n\u003e These are the minimum recommended values. You can adjust them later based on your specific use case and workload.\n\n### 🔹 Central Infra Server VM\n- 🧠 **Memory**: 2 GB RAM\n- ⚙️ **CPU**: 2 vCPUs\n- 💾 **Storage**: 30 GB\n\n### 🔸 Provisioned VMs\n- 🧠 **Memory**: 2 GB RAM\n- ⚙️ **CPU**: 2 vCPUs\n- 💾 **Storage**: 20 GB\n\n---\n\n## 📥 Quick Start: Get Up and Running in 5 Steps\n\n### Step 1 – Download the Latest Release\n\n[![stable release](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Muthukumar-Subramaniam/server-hub/main/project_version.json)](https://github.com/Muthukumar-Subramaniam/server-hub/releases/latest)\n\n```bash\nsudo mkdir -p /server-hub\nsudo chown ${USER}:$(id -g) /server-hub\ncurl -sSL https://github.com/Muthukumar-Subramaniam/server-hub/releases/latest/download/server-hub.tar.gz | tar -xzv -C /server-hub\ncd /server-hub/qemu-kvm-manage/\n```\n\n\u003e 📦 **Using Latest Release**: This downloads the latest stable release directly from GitHub.\n\n**Alternative - Clone from the Repository:**\n\nIf you prefer to use the latest code from the repository:\n\n```bash\nsudo mkdir -p /server-hub\nsudo chown ${USER}:$(id -g) /server-hub\ngit clone https://github.com/Muthukumar-Subramaniam/server-hub.git /server-hub\ncd /server-hub/qemu-kvm-manage/\n```\n\n---\n\n### Step 2 – Install QEMU/KVM\n\nRun the automated setup script to configure your virtualization environment:\n\n```bash\n./setup-qemu-kvm.sh\n```\n\nThis will install and configure all necessary packages and dependencies.\n\n---\n\n### Step 3 – Download AlmaLinux ISO\n\nGrab the latest AlmaLinux ISO for your lab infrastructure:\n\n```bash\n./download-almalinux-latest.sh\n```\n\n\u003e ☕ **Pro tip:** This might take a few minutes depending on your network speed. Perfect time for a coffee break!\n\n---\n\n### Step 4 – Deploy Your Lab Infrastructure Server\n\nNow comes the magic! This fully automated script will:\n- ✨ Guide you through the setup with interactive prompts\n- 🔄 Install and configure the centralized lab infrastructure server\n- 🎛️ Set up DNS, DHCP, PXE boot, and web services\n- 🤖 Run Ansible automation for consistent configuration\n\n```bash\n./deploy-lab-infra-server.sh\n```\n\n**What to expect:**\n- **First Reboot:** After OS installation and initial configuration\n- **Second Reboot:** After services are configured via Ansible playbook\n- **Final Step:** Once you see the login prompt, press `Ctrl + ]` to exit the console\n\n\u003e 🎬 Sit back and watch the automation work its magic!\n\n---\n\n### Step 5 – Access Your Infrastructure Server\n\nTime to explore! SSH into your newly deployed infrastructure server:\n\n```bash\nssh lab-infra-server.lab.local\n```\n\n\u003e 💡 Replace `lab-infra-server.lab.local` with your actual server name and domain if different.\n\n---\n\n# ✅ Your Lab is Ready! Time to Build Something Amazing! 🎉\n\n---\n\n## 🛠️ Your New Superpowers: VM Management Tools\n\nYour workstation is now equipped with powerful lab management tools:\n\n### 📦 VM Deployment \u0026 Management\n```bash\nqlabvmctl build-golden-image        # 🎨 Create reusable golden base images\nqlabvmctl install-golden            # 🚀 Deploy VMs instantly from golden images\nqlabvmctl install-pxe               # 🌐 Deploy VMs via network PXE boot\nqlabvmctl reimage-golden            # 🔄 Reinstall VMs from golden images\nqlabvmctl reimage-pxe               # 🔄 Reinstall VMs via PXE boot\n```\n\n### 🎮 VM Operations\n```bash\nqlabvmctl list                      # 📊 View all VMs and their status\nqlabvmctl info                      # ℹ️ Display detailed VM information\nqlabvmctl console                   # 🖥️ Connect to VM serial console\nqlabvmctl start                     # ▶️ Power on VMs\nqlabvmctl stop                      # ⏹️ Force power-off VMs\nqlabvmctl shutdown                  # 🔽 Graceful VM shutdown\nqlabvmctl restart                   # 🔄 Hard restart VMs\nqlabvmctl reboot                    # 🔃 Graceful VM reboot\nqlabvmctl remove                    # 🗑️ Delete VMs completely\n```\n\n### 🔧 VM Configuration\n```bash\nqlabvmctl resize                    # 📏 Resize memory, CPU, or disk\nqlabvmctl disk-add                  # 💾 Add new storage disks to VM\nqlabvmctl disk-resize               # 📐 Resize additional disks\nqlabvmctl disk-attach               # 🔗 Attach disks from detached storage\nqlabvmctl disk-detach               # 📤 Detach and save disks for later use\nqlabvmctl disk-delete               # 🗑️ Permanently delete detached disks\nqlabvmctl nic-add                   # 🌐 Add network interfaces to VM\nqlabvmctl nic-remove                # ❌ Remove network interfaces from VM\n```\n\n### 🌐 Network Management\n```bash\nqlabvmctl ipv6-route                # 🛣️ Manage IPv6 default routes (enable/disable/auto/status)\n```\n\n### 🌍 Infrastructure Management\n```bash\nqlabstart                           # 🏁 Start the entire lab infrastructure\nqlabhealth                          # 🏥 Check lab infrastructure health\nqlabdnsbinder                       # 🌐 Manage local DNS records\n```\n\n**Pro tips:** \n- Use `qlabvmctl --help` or `qlabvmctl \u003csubcommand\u003e --help` for VM management help\n\n---\n\n## 🎭 The Secret Sauce: Backend Automation Tools\n\nThese powerful tools run on your infrastructure server, making everything work seamlessly:\n\n- **🌐 dnsbinder** – Automatically manages DNS records for your local domain as you create/destroy VMs\n- **⚡ ksmanager** – Handles iPXE \u0026 golden-image based OS provisioning using kickstart automation\n- **📦 prepare-distro-for-ksmanager** – Downloads and prepares multiple Linux distributions (AlmaLinux, Rocky, Ubuntu, openSUSE, and more!)\n\n---\n\n## 🎊 Congratulations! Welcome to Your Virtual Datacenter!\n\nYou've just built a **professional-grade, fully automated home lab** that rivals enterprise infrastructure!\n\n### 🌟 What Can You Do Now?\n\n- 🧪 **Experiment freely** – Spin up and destroy VMs in seconds\n- 📚 **Learn by doing** – Practice DevOps, automation, and infrastructure management\n- 🏢 **Simulate production** – Test multi-tier applications in realistic environments\n- 🚀 **Develop skills** – Master tools used in real enterprise datacenters\n- 🔬 **Test and break things** – Build, destroy, rebuild without fear\n\n**Your journey to infrastructure mastery starts here!** 🧑‍💻🖥️🧠\n\n---\n\n## 💬 Support \u0026 Contributing\n\n- **Need help?** Found a bug? Have ideas? [Open an issue](https://github.com/Muthukumar-Subramaniam/server-hub/issues) on GitHub!\n- **Want to contribute?** Pull requests are welcome! Feel free to improve the automation, add new distros, or enhance documentation.\n\n---\n\n## 📜 License\n\nThis project is open source. See the [LICENSE](LICENSE) file for details.\n\n---\n\n**Built with ❤️ for the home lab community**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuthukumar-subramaniam%2Fserver-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuthukumar-subramaniam%2Fserver-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuthukumar-subramaniam%2Fserver-hub/lists"}