CRITICAL INFRA
Loading critical CVEs…
ALL EXPLOITED
Loading…

Consolidation: 20+ web apps from 7 machines onto a single KVM server

📅 2026-06-24 · Cyber Immunity · CASE STUDY

A client running more than 20 web applications had infrastructure scattered across 7 machines at two different providers: several apps on 5 hosting VMs in Romania and two more on two dedicated servers rented at Hetzner. Duplicate costs, inconsistent security and zero unified visibility. We consolidated everything onto a single new Debian server with KVM virtualization — with a real security perimeter and 24/7 monitoring. Implemented in April 2025, at Hetzner, on Debian 12 (Bookworm), on a dual-CPU server with 128 GB RAM.

The context

The client's infrastructure had grown organically, without a unified plan:

The business risk wasn't a single app going down, but the lack of control and visibility over everything running in production.

The challenge

We had to consolidate everything without rewriting the applications and without long downtime, keeping workloads isolated — the old apps must not affect each other. On top of that, the client wanted lower costs and a single point of administration, with no compromise on security.

The proposed solution

After technical discussions with the client, the decision was clear: a single new, more powerful physical server at Hetzner, turned into a virtualization host. On it we built a KVM environment with three virtual machines, each with a well-defined role:

Why KVM and not Proxmox or VMware

We wanted a single lean server doing both virtualization and the security perimeter — nginx, Suricata and GeoIP all run on the same Debian host. KVM is the native Linux hypervisor: zero licensing, full control, direct integration with the host, no extra management layer. Proxmox or VMware would have added needless complexity here — and real HA on just two Proxmox nodes is problematic: a cluster needs a third vote for quorum, otherwise you risk split-brain. For a single host with fast recovery onto a standby server, Debian + KVM was the right choice.

In short, the transformation:

BEFORE — 7 machines, 2 providersRO hosting5× VM~20 appsconfig separatăHetzner ded. 1Server-Aapps propriiHetzner ded. 2Server-Bapps propriiresult3 facturisecuritate pe bucățizero vizibilitateAFTER — 1 server, 3 VMsDEBIAN 12 HOST — single security perimeternginx · GeoIP · Suricata 7.0 · CrowdSec · nftables · ZabbixVM-1ex Server-A · P2VVM-2ex Server-B · P2VVM-320+ RO appsHetzner backup server (other location)daily image backup · restore in minutesone bill · one perimeter · 24/7 visibility

The implementation

Step 1 — Debian host + KVM

On the new server we installed Debian Linux as the host system, hardened to best practices (minimal services, key-based SSH, nftables firewall, kernel tuning). On top of it, KVM/QEMU + libvirt as the virtualization layer. This way each app or group of apps runs isolated in its own VM, unable to affect the rest.

Step 2 — Migrating the two dedicated servers (image-level)

The two old physical dedicated servers at Hetzner were migrated at image level (P2V — physical to virtual), each into its own VM on the new host. We took the entire server — operating system, configuration, applications — exactly as it was, with no reinstall and no manual reconfiguration. The apps started in the VM identical to the old environment.

Step 3 — Consolidating the 5 Romanian VMs

The 20+ web apps spread across the 5 hosting VMs in Romania were migrated into a single VM on the new server. We grouped the apps, rebuilt the dependencies (runtimes and databases as needed) and validated each app before shutting down the old environment.

Security — the host as the perimeter

All traffic now enters through a single controlled point, on the host, before it reaches any application. This let us build a real security perimeter, identical for all 20+ apps:

The result: instead of 7 machines with different (or non-existent) rules, a single consistent perimeter that everything passes through.

Monitoring and alerting — Zabbix

Without visibility, consolidation would just move the problem. We deployed Zabbix as the central monitoring and alerting system, with agents on the host and all 3 VMs:

Availability and image-level backup

Consolidating onto a single physical server means that server becomes critical — so backup was part of the design, not an afterthought. We use an enterprise image-level backup solution: each VM is saved in full (complete image + incrementals), on a second server rented separately by the client, in a different physical location.

The advantage over a classic file backup: when needed, we restore the entire VM in minutes — system, configuration, apps, data — ready to boot, not reassembled by hand. RTO drops from hours to minutes, and the physically separate copy follows the 3-2-1 principle.

This is not an HA cluster with automatic failover — it was a deliberate cost decision. The backup server is not just a copy target: when needed, the 3 VMs can be booted directly on it within minutes (warm standby), because they are saved as full, boot-ready images. We get a minutes-level RTO at a fraction of the cost and complexity of a real HA cluster. If the business needs sub-minute automatic failover, the natural next step is a 2-3 node cluster with replication — but for this client's volume and budget, fast, tested recovery was the right balance.

The result

Do you have apps scattered across multiple servers?

If you're paying bills at several providers for apps spread across different machines, with no shared security perimeter and no unified monitoring, you're probably paying more for less control. We do audits and consolidation plans: what can be merged, how to isolate workloads, what security perimeter to put in place and how to monitor everything from one place.

Request a consolidation audit →