How to Build Your Own Virtual Machine Hosting Service with Proxmox VE on Dedicated Bare Metal

If you think that running your own VPS hosting service is simple: buy a server, install a hypervisor and create VPS machines, you are wrong. The hard part begins when the current cloud environment doesn’t allow you to do certain things.

Not all cloud servers support nested virtualization or provide you enough control over settings and networking of the hypervisor. This is an issue if you want to build standalone KVM virtual machines and run them as customer VPS instances. These are some of the limitations that are removed by a dedicated bare-metal server. Running on the physical hardware provides control of CPU, memory, storage, networking and VM allocation, allowing for Proxmox VE to run directly on the physical hardware.

When creating VPS hosting using Proxmox, consider more than just installation steps. When customers start using the platform, the storage layout, public IPs, VM templates, automation, backups, security, and available server capacity will have a positive (or negative) impact on how effective the platform is.

Why Use Bare Metal for Proxmox VPS Hosting?

Some nested virtualization environments will work with Proxmox, but bare metal is a more viable alternative if you want to run a VPS hosting platform.

The basic architecture is relatively straightforward:

Dedicated Server → Proxmox VE → KVM Virtual Machines → Customer VPS

Proxmox is installed directly on the server, so you’ll get control over the distribution of physical resources. You can have 1 VM with 2 vCPU and 4 GB RAM and the other VM with 8 vCPU and 16 GB RAM.

There is also greater flexibility in all aspects of using network bridges, routed subnets, public IP allocation, VLANs, storage and firewall rules.

Choose Hardware for the Proxmox Node

Having a lot of CPU cores doesn’t mean that a server will be good for VPS hosting. All the CPU, RAM, storage and networking have to be taken into account.You need to use a processor which supports hardware virtualization (Intel VT-X or AMD-V). You should have enough RAM for the Proxmox host and the virtual machines you want to run.Don’t put all the memory available to customer packages. Resources are required in the host and if multiple VMs start to contend for resources, a little extra space works well.

Storage deserves equal attention. Customer VMs can host websites, databases, updates, backups and applications all in one. This can result in a lot of “noisy” disk activity, so it’s common to use SSD or NVMe storage for any workloads that are active in a VPS.For a new hosting setup, budget dedicated servers can provide a practical starting point when they offer the CPU, RAM, storage performance, network capacity, and additional IP addresses your plans require.Don’t make the server just large enough for the initial customers that you serve. Make sure there is adequate space for expansion and unexpected surges in load.

Install Proxmox VE on Bare Metal

Proxmox VE can be installed directly on the physical server once it is ready.

The installation process will set up the hostname, the management IP, the DNS, the network interface, the administrator credentials and storage.Take some time to plan out these values in advance. It’s easy to change the name of the hostname later on, it’s not easy to rebuild the network or storage design after dozens of customer VMs are running.

Once installed, open Proxmox web interface and check if the CPU, memory, network interfaces and storage devices are visible.

If you want a separate walkthrough covering the platform setup in more detail, the Proxmox VPS setup guide is a useful supporting resource before you begin creating customer VMs.At this point, Proxmox is installed, but the node is not yet ready for commercial VPS hosting.

Plan VM Storage Around Real Workloads

Each customer VM must have a virtual disk. The way these disks are stored does impact performance.If it is a simple setup with a single node, local SSD or NVMe storage would suffice.

Other supported storage configurations may be used, depending on your hardware and operational needs, such as ZFS.The point is, don’t only consider the free disk space.Suppose that 20 VMs are deployed on a single node.

A number of customers begin their backups, database processing, package updates or other disk-intensive tasks at about the same time. Even though you’ve got a lot of space available you can still experience disk I/O or disk latency issues.Track storage performance and storage capacity. Reserve more space for snapshot, backup, migration, and temporary operations, as well as future VMs.

Configure Routed Networking and Public IPs

One of the more difficult things to do when you first install VPS hosting with Proxmox is networking.Most of the customers expect their VPS to be treated as a standalone server. That can be as simple as giving an outbound public IP address and as complicated as providing reliable inbound and outbound connectivity depending on your service design.

Proxmox supports Linux bridges, VLANs, NAT, bonding, and routed configurations. Virtual machines can connect to the physical network through a Linux bridge such as vmbr0.This will vary based on the dedicated server company.

Some providers offer an IPv4 or IPv6 subnet to your server. Other providers may have different gateway requirements or have virtual mac addresses.

Before configuring customer networking, confirm:

  • How additional IPs are provided
  • Which gateway the VMs should use
  • Whether a routed subnet is available
  • Whether virtual MAC addresses are required
  • Whether IPv6 is available

If the setup is a dedicated Proxmox server with a routed subnet, please use the routing information provided by your provider, do not copy the routing information of another server.

Before deploying a VPS go through both directions first:

Internet → Public IP → Proxmox Network → Customer VM

Customer VM → Proxmox Network → Provider Gateway → Internet

This simple test can uncover routing problems before customers do.

Create Reusable KVM Templates

Manually installing Ubuntu or Debian to each of the new orders is not only time-consuming, but also makes provisioning inconsistent.It is preferable to create clean KVM templates for the operating systems that you will be selling, like Ubuntu, Debian, AlmaLinux etc.

Keep the base images generic and reusable. They should not be the password or public IP of another customer, nor any other customer specific setting from their SSH key.

Many values can be specified during deployment with cloud-init; these include network configurations, hostnames, users and SSH keys.If a customer orders a VM with 4 vCPU, 8 GB RAM, and 100 GB NVMe, the provisioning process can clone the appropriate template and allocate the required resources, rather than installing an OS from scratch each time.

Create Realistic VPS Packages

Once the node works correctly, decide how its resources will be divided.

VPS PlanvCPURAMNVMe Storage
Starter24 GB50 GB
Business48 GB100 GB
Advanced616 GB200 GB
High Performance832 GB400 GB

These are examples of the figures. The packages you choose should reflect what your customers are likely to be running on your server and the size of the server.

Using RAM is not the only factor in capacity planning.

The number of VMs that a node can handle comfortably can be constrained by a variety of factors, such as CPU utilization, disk I/O, storage latency, network traffic, snapshots and backup jobs.If you want to run a VM hosting business, limit the internal capacity lower than the physical capacity. It’s better to have some spare capacity rather than at maximum capacity.

 Connect WHMCS with Proxmox

It is fine to make a couple of VMs manually. Repeating the same process for every new order is inefficient.

The WHMCS Proxmox automation module can integrate the billing system to the Proxmox API. It can automatically complete tasks like:

  • Creating VMs
  • Assigning IP addresses
  • Starting, stopping, and rebooting instances
  • Suspending services
  • Reinstalling operating systems
  • Applying package resources
  • Providing console access
  • Terminating services
  • Managing snapshots or backups

A normal automated order might follow this path:

Customer Order → Payment Confirmed → WHMCS Request → Proxmox Creates VM → IP Assigned → VPS Delivered

Please note that VPS hosting Proxmox KVM services should not be enabled for instant provisioning after testing only VM creation, as this will lead to virtual machines being provisioned instantly.

Test all the life cycles: new orders, shutdown, reboot, suspension, unsuspension, reinstall, package changes, cancellation, termination, and IP release.

Protect the Proxmox Management Layer

Anyone with high-level Proxmox access can potentially control every VM on that node.

Use robust administrator authentication, limit management access as needed, ensure the system is kept current and ensure proper firewall configurations.Only permissions which are relevant to automation accounts should be granted.

Unrestricted admin access to all API processes is not necessary for the app to work as designed.Customer isolation is important, too. No customer should be able to have access to another customer’s VM, storage, console or underlying Proxmox host.

Ideally isolate management traffic from customer VM traffic.

Treat Backups Separately from Snapshots

A snapshot is helpful for short term recovery, but isn’t necessarily a full backup.

If the VM and its snapshot are located on the same disk that has failed, both the VM and snapshot could be lost.Make sure to store critical backup copies off the primary VPS node as much as possible. Figure out the frequency of backups, the duration of their storage, their location and which VPS packages contain them.

More importantly, test restores.If a job completed with the status of “successful”, it means that the backup process has been completed. A successful restore will indicate if the data can be used for the restore.

Monitor the Physical Node

Don’t let a user tell you there is a problem with their VPS before you check the health of the server.Watch CPU usage, RAM usage, Storage latency, Storage health, Storage disk I/O, Network throughput, Backup activity, Storage available disk space, and Number of VMs running.

If there’s still 80 GB of unused RAM left in the server, but the CPU is already overloaded or NVMe I/O is already overloaded, then adding more VMs to the server will be detrimental to any existing customers.Choose your own operating thresholds or limits to your server.

You can use the spare space for traffic surges, back-ups, software updates and especially for unusually heavy workloads.

Scaling Beyond One Proxmox Node

A single server can be used to get to know the platform and begin an intermediate-sized service.

It doesn’t have to be all your infrastructure.

Once the first node is running at the maximum safe level, then it may be better to add another physical server rather than more VMs to the first.

With an increasing service size, you may need to eventually partition workloads:

Node 1 → General VPS Hosting
Node 2 →
High-RAM VPS
Node 3 →
NVMe Performance VPS
Node 4 →
Backup Infrastructure

In addition, Proxmox can run multiple nodes, enabling management of multiple nodes as your infrastructure expands.

It does not need to be a complex cluster from the get-go. Begin with an architecture that you will be able to operate confidently and only add complexity when there’s a good reason to do so.

Common Mistakes When Building Proxmox VPS Hosting

While capacity planning, networking and automation are not really issues of the hypervisor, they are the largest issues that users have when creating their VPS hosting with Proxmox.Do not over-commit CPU/RAM. If you think that disk space is not in use, then it doesn’t automatically mean storage performance is good. Unless otherwise required, do not keep all backups on the primary node, and never share greater permissions on the Automation accounts than necessary.

There must also be a clear process with regard to IP management.

Address should be assigned, monitored, released and returned to the “pool” in a proper manner as customers come and go.Lastly, verify your provider’s subnet, gateway, MAC and routing needs before customer VMs go live. An assumption which is valid for one provider may not be valid for another.

Is Proxmox VE a Good Choice for VPS Hosting?

Proxmox VE also contains the essential virtualization tools to create a VM hosting environment.

KVM virtual machines can be run, storage and networking managed, multiple nodes can be used and the platform can be connected to external automation systems.

When customers rely on the platform, the quality of the hardware, resource allocation, network design, IP management, VM templates, security, backups, monitoring and automated billing come into play.If you’re in a business that requires environment control beyond what you can get out of a standard cloud server, then you can get a lot more control over the environment of your VPS via dedicated bare metal.

FAQs About Proxmox VPS Hosting

Q: Can I Install Proxmox VE on a Dedicated Server?

Yes. Proxmox VE is able to be installed on an appropriate dedicated bare-metal machine. The processor must have Intel VT-x / AMD-V to support KVM virtualization.

Q: Can I Sell KVM VPS Hosting with Proxmox?

Yes. Proxmox provides the ability to allocate separate CPU, RAM, storage and networking resources to individual virtual machines to be used as virtual machine instances representing individual customer VPS.

Q: Do I Need WHMCS to Sell Proxmox VPS Hosting?

No, you can manually create and manage VMs, or use another platform.

When it comes to billing and customer management, and you want them to be integrated with automated provisioning, WHMCS can help you with that.

Q: Do VPS Customers Need Additional IP Addresses?

Typically, yes, when having direct public Internet connection in each VPS. Depending on your network design by your provider, you can configure individual public IPs or you can use addresses from a routed IPv4 or IPv6 subnet.

Q: How Do I Start a VPS Hosting Business with Proxmox?

Use appropriate bare metal hardware, install Proxmox VE, set up storage and networking, create VM templates and allocate IPs. Test security, backups, monitoring, and billing automation before accepting customer orders.

Wrapping Up

By building a VPS hosting platform on your own hardware, you get more control over your infrastructure. You can manage virtualization, storage, networking, public IP addresses, and customer resources.

When you build VPS hosting with Proxmox, choose hardware based on your expected workload. Do not simply select the highest specifications. Design the network before creating customer VMs. Keep some spare capacity for future growth. Test backups with real restores. Also, verify the complete provisioning process before automating customer orders.

Start with a node that you can manage properly. As customer demand approaches the server’s safe capacity, add another physical node. Avoid placing extra load on an already busy node. This approach makes it easier to grow from a small VPS setup to a larger hosting platform.