Docs / VPS Hosting
Cloud VPS guide
Deploy and run a Piedmont Hosting VPS: SSH access, operating systems, Proxmox VE, the cloud firewall, snapshots, backups, resizing, reinstalling and monitoring.
VPS Overview
A Piedmont VPS is a KVM virtual machine with full root access, ECC memory and SSD storage, on hardware we own and operate in Durham, NC. You choose the vCPUs, memory and storage. vCPUs are shared with other servers on the host rather than pinned to dedicated cores.
VPS Features
- Full root access via SSH
- Dedicated IPv4 and IPv6 addresses
- 14 Linux distributions, plus Proxmox VE 9 for running your own VMs
- Cloud firewall with presets and custom rules
- Point-in-time snapshots (up to 3)
- Optional automated daily backups
- Live CPU, disk and network charts (15-second resolution) and memory charts (60-second)
- Browser console for when SSH isn't available
- Power controls (start, shut down, reboot) from the dashboard
- Resize CPU, RAM, and storage on demand
- SSH key management
- Free VPC private networking between servers
- Unmetered transfer at a 100–500 Mbps port speed, set by RAM
- A REST API for power actions, firewall rules, snapshots and backups
Custom Configuration
VPS servers are fully customizable. Choose your resources during checkout:
| Resource | Minimum | Maximum |
|---|---|---|
| CPU Cores | 1 core | 12 cores |
| RAM | 1 GB | 12 GB |
| Storage (SSD) | 20 GB | 200 GB |
Getting Started with Your VPS
After checkout your server is set up automatically. Most distributions are ready about a minute after checkout; Arch Linux takes around two minutes, and Proxmox VE about 8–12 minutes. We email you when it's ready, with your connection details.
- 1Go to the VPS page and choose your CPU, RAM, storage and operating system.
- 2Set a root password (at least 8 characters), add an SSH key, or both — paste a key or select keys saved on your account. If you only add a key, the server gets a random root password that nobody knows: sign in with your key, and set a password later with Reset Password on the Overview tab if you need one. Proxmox VE 9 orders need a root password, because it's how you sign in to the Proxmox web interface.
- 3Complete checkout on the Stripe payment page. Your VPS starts provisioning as soon as payment goes through.
- 4Once it's ready, find your server's IP address on the service's Overview tab.
- 5Connect over SSH as
rootwith your key or password.
DNS resolvers
You pick the DNS resolvers your server uses at checkout. To change them later, open the DNS tab, choose a primary and a secondary from the public resolvers listed (Cloudflare, Google, Quad9 and others) and click Save DNS Settings — the change is applied inside your server right away.
SSH Access
Your VPS provides full root SSH access. You can connect using either a password or SSH key (recommended).
Connecting with SSH Key
ssh root@YOUR_SERVER_IP
If you added an SSH key at checkout, this signs you in with that key. No password needed.
Connecting with Password
ssh root@YOUR_SERVER_IP # Enter your root password when prompted
0.0.0.0 or that private address, not to the public IP.Resetting the root password
Click Reset Password on the Overview tab, enter a new root password (at least 8 characters) and your Piedmont account password to confirm. The new password works immediately — no reboot. Use this if you forget the password, or to set one on a server you ordered with only an SSH key.
Browser console
Click Console on the Overview tab to open your server's screen in a new browser tab. It works even when SSH is blocked or the network inside your server is broken, as long as the server is running. Sign in as root with your root password — if you ordered with only an SSH key, set one first with Reset Password.
Managing SSH Keys
You can manage SSH keys from two places:
- Account-level keys — Manage in Profile > SSH Keys. These can be selected when creating new servers or reinstalling one.
- Per-server keys — Manage in the service's SSH Keys tab. Add or remove keys for a specific VPS.
ssh-keygen -t ed25519Operating Systems
We support 14 Linux distributions, plus Proxmox VE if you want to run your own virtual machines. Choose the one that best fits your use case:
| OS | Version | Best For |
|---|---|---|
| Ubuntu 26.04 LTS | Latest LTS | Newest long-term release, supported into the 2030s |
| Ubuntu 24.04 LTS | Proven LTS | General purpose, web apps, Docker, most popular choice |
| Ubuntu 22.04 LTS | Older LTS | Software that still targets Ubuntu 22.04 |
| Debian 13 | Trixie | Current Debian stable, supported to 2030, minimal footprint |
| Debian 12 | Bookworm | Previous stable, for software not yet certified on Trixie |
| Rocky Linux 10 | RHEL 10-compatible | Enterprise workloads on the RHEL 10 base |
| Rocky Linux 9 | RHEL 9-compatible | Enterprise workloads on the proven RHEL 9 base |
| AlmaLinux 10 | RHEL 10-compatible | Enterprise workloads, community-driven and RHEL-compatible |
| AlmaLinux 9 | RHEL 9-compatible | Enterprise workloads, CentOS replacement |
| CentOS Stream 10 | Rolling RHEL | RHEL preview, development environments, upstream-first |
| CentOS Stream 9 | Rolling RHEL | RHEL 9 preview and development environments |
| Fedora 44 | Fast-moving | Cutting-edge packages, developers, new kernel and toolchain |
| openSUSE Leap 16.0 | Stable | SUSE ecosystem compatibility |
| Arch Linux | Rolling | Power users, hobbyists, minimalist setup, always up-to-date packages |
| Proxmox VE 9 | Hypervisor | Running your own virtual machines and containers — see Proxmox VE |
Proxmox VE
Selecting Proxmox VE 9 as your operating system turns your VPS into a hypervisor, so you can create and manage your own virtual machines and LXC containers from a web interface. Nested virtualization is enabled on our platform, so the VMs you create use hardware acceleration (KVM) rather than slow software emulation.
Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| RAM | 4 GB (required) | 8 GB or more |
| Storage | 40 GB | 80 GB or more |
| CPU Cores | 2 cores | 4 cores or more |
Only the RAM minimum is enforced: checkout and Reinstall OS won't install Proxmox VE on a server with less than 4 GB. Proxmox itself uses roughly 1.5 GB of RAM before you start a single virtual machine. With the most RAM we offer (12 GB) you can comfortably run two to four small VMs.
Provisioning time
Signing in to the web interface
Once provisioning finishes, open the Proxmox web interface in your browser:
https://YOUR_SERVER_IP:8006
Sign in with username root, realm Linux PAM standard authentication, and the root password you set at checkout (Proxmox VE orders always require one). If you forget it, set a new one with Reset Password on the Overview tab.
Firewall
A new server has no cloud firewall rules, so the Proxmox web interface — and every other port — is reachable from the internet. To block everything else, apply the Proxmox VE Node preset on your service's Firewall tab. It allows only:
| Port | Purpose |
|---|---|
| 22 (TCP) | SSH |
| 8006 (TCP) | Proxmox web UI (HTTPS) |
| 3128 (TCP) | SPICE proxy |
| 5900-5999 (TCP) | noVNC console |
| ICMP | Ping |
How networking is set up
Your node is pre-configured with two network bridges:
| Bridge | Address | Purpose |
|---|---|---|
| vmbr0 | Your server’s own address (the Private IP on the Overview tab) — your public IPv4 is forwarded to it one-to-one | The node itself. Do not attach VMs here — see the warning below. |
| vmbr1 | 192.168.100.1/24 | Private NAT network for your virtual machines. |
The node is set up for IPv4 only — the IPv6 address shown in the portal isn't configured on it.
vmbr1 and reach them through port forwards. Attaching a VM directly to vmbr0 and assigning it an arbitrary address will conflict with other customers and may result in your service being suspended.Creating your first virtual machine
- 1Upload an installation ISO under local (node) > ISO Images > Upload, or use Download from URL.
- 2Click Create VM in the top right.
- 3On the Network tab, set the bridge to
vmbr1. - 4Finish the wizard and start the VM, then use the Console tab to complete installation.
- 5Inside the VM, use a static address in
192.168.100.0/24with gateway192.168.100.1, or install a DHCP server on the node.
Reaching a VM from the internet
Forward a port from your public IP to the VM. For example, to expose a web server running on 192.168.100.10:
# Forward public port 8080 to the VM's port 80 iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 \ -j DNAT --to-destination 192.168.100.10:80 # Persist the rule across reboots apt install -y iptables-persistent netfilter-persistent save
If your Piedmont cloud firewall has rules, add an inbound rule for port 8080 too.
Storage
Your VPS has a single virtual disk, so Proxmox is configured with directory storage on local. Virtual machine disks are stored as files under /var/lib/vz/images.
Things to know
- The App Marketplace is not available on Proxmox nodes. Run applications inside a virtual machine instead.
- Your node shuts down more slowly than a normal VPS, because Proxmox stops your virtual machines first. Allow two to three minutes for a clean reboot.
- Piedmont backups copy the whole node while it keeps running — the copy is crash-consistent, like pulling the power cord. Piedmont snapshots end with a forced power-off and restart of the whole VPS, which hard-stops every VM inside it. Shut your VMs down first if you need a clean copy.
- Resizing shuts the VPS down and forces it off if it hasn't stopped within about 10 seconds. A Proxmox node takes two to three minutes to stop cleanly, so shut your VMs down before you resize.
- Nested virtualization is enabled, so you can even run a hypervisor inside one of your virtual machines, though performance will suffer.
- Updates are served from the free
pve-no-subscriptionrepository, which is already configured.
Cloud Firewall
Every VPS includes a free cloud firewall managed from your dashboard. The firewall operates at the network level, filtering traffic before it reaches your server. It doesn't filter traffic on private VPC networks.
How It Works
A new VPS starts with no firewall rules, so all traffic is allowed (the All Open preset). As soon as you add one inbound rule, inbound traffic switches to allow-list mode: only traffic matching an Allow (ACCEPT) rule gets through, and everything else is dropped — so a single Drop rule on its own blocks all inbound traffic, not just the port it names. Replies to connections your server makes are always allowed.
Outbound traffic is unrestricted until you add an outbound rule. The first outbound rule switches outbound to allow-list mode as well, so any outbound connection you haven't explicitly allowed (DNS lookups, package updates, API calls) is blocked. Replies to inbound connections the firewall accepted still go out.
Firewall Presets
Quick-apply presets for common configurations. Applying a preset replaces all of your existing rules — including ports the App Marketplace opened for your apps.
| Preset | Ports Opened |
|---|---|
| Web Server | SSH (22 TCP), HTTP (80 TCP), HTTPS (443 TCP), Ping (ICMP) |
| Game Server | SSH (22 TCP), Minecraft (25565 TCP), Steam / Valve (27015-27030 UDP), Unreal Engine games (7777-7778 TCP+UDP), Rust (28015-28016 UDP), Ping (ICMP) |
| Proxmox VE Node | SSH (22 TCP), Proxmox web UI (8006 TCP), SPICE proxy (3128 TCP), noVNC consoles (5900-5999 TCP), Ping (ICMP) |
| SSH Only | SSH (22 TCP), Ping (ICMP) |
| All Open | No rules — all traffic allowed (how every new server starts; not recommended for production) |
Custom Rules
Click + Add Rule to create a rule with these options:
- Direction: Inbound (traffic to your server) or Outbound (traffic your server sends)
- Protocol: TCP, UDP, ICMP, or Any
- Port(s): Single port (e.g.,
8080) or range (e.g.,1000-2000); leave it empty to match every port - Source CIDR: who an inbound rule applies to —
0.0.0.0/0for anyone, or a range such as203.0.113.0/24. IPv4 ranges only. Leave outbound rules at0.0.0.0/0; rules can't match a destination address. - Action: Allow or Drop
Each server can have up to 50 rules.
Snapshots
Snapshots create a point-in-time copy of your VPS disk. Use them before making major changes so you can roll back if something goes wrong.
Snapshot Limits
Each VPS can store up to 3 snapshots at a time. Delete old snapshots to make room for new ones.
Creating a Snapshot
- 1Navigate to your service's Snapshots & Backups tab.
- 2Click + Create Snapshot.
- 3Optionally enter a name (letters, numbers, hyphens and underscores, up to 64 characters), then click Create.
- 4The snapshot is created in the background. If your server is running, it keeps running while its disk is copied, then it is forcibly powered off and started again to finish — like pulling the plug, followed by a normal boot. Stop databases (or shut the server down) first if you need a clean snapshot; a snapshot of a server that is shut down is a plain copy with no restart.
Restoring a Snapshot
Click Restore on any available snapshot and confirm the action. Your server starts again automatically after the restore completes.
Automated Backups
Automated backups make a daily copy of your entire VPS and keep each copy for a set number of days.
Pricing
Backups cost 10% of your server's monthly price. For example, a 2 vCPU / 4 GB / 80 GB server costs $21/mo, so its backups cost $2.10/mo. Turning backups on or off changes your subscription right away, prorated.
Configuration
Turn backups on with Enable Backups on the Snapshots & Backups tab, or choose them at checkout.
- Schedule: By default, backups run once a day shortly after 03:00 UTC, and each one is kept for 7 days.
- Retention and run time: To change how long backups are kept (1–30 days) or the hour they run (0–23 UTC), use the REST API (
PUT /api/v1/servers/:id/backup-config— see Backup Endpoints). - Manual Backup: While backups are enabled, Create Manual Backup takes one immediately.
Backups are taken while your server keeps running, so they are crash-consistent — like pulling the power cord — and databases may need to recover after a restore. They are stored on our hardware in Durham, so keep an off-site copy of anything critical.
Restoring from Backup
Click Restore on a completed backup in the backup history and confirm. Your server starts again on the restored disk.
Bandwidth & QoS
Each VPS has a port-speed cap based on its RAM, so that no single server can use up the connection every customer shares.
| RAM | Port speed |
|---|---|
| 1 GB | 100 Mbps |
| 2 GB | 150 Mbps |
| 3–4 GB | 250 Mbps |
| 5–8 GB | 400 Mbps |
| 9–12 GB | 500 Mbps |
The cap is applied automatically when your VPS starts, and changes when you resize its RAM.
Resizing Your VPS
You can resize your VPS CPU, RAM, and storage at any time with Resize on the service's Overview tab.
How Resizing Works
- When you confirm a resize, your server is shut down (and forced off if it hasn't stopped within about 10 seconds), resized, and started again automatically. Expect a short outage, so save your work first.
- CPU and RAM can be scaled up or down. Your port speed follows your new RAM.
- Storage can only be increased, never decreased. When you add storage we try to grow the root partition and filesystem for you; run
df -hafterwards to check. - Upgrades are prorated — the difference for the rest of your billing period is added to your next invoice.
- Downgrades generate a credit applied to your next invoice.
Reinstalling OS
You can reinstall your VPS with a different operating system without deleting the service.
- 1Go to your service's Overview tab and click Reinstall OS.
- 2Choose the new operating system, keep or change the hostname, and set a new root password (at least 8 characters — required).
- 3Optionally paste an SSH key or select keys saved on your account, and choose DNS resolvers.
- 4Type your server's hostname to confirm and click Wipe & Reinstall. Your IP addresses and billing stay the same. Most systems are ready in about a minute; Proxmox VE takes about 8–12 minutes and needs at least 4 GB of RAM.
Renaming your server
Rename on the Overview tab changes your server's hostname inside the operating system right away, along with its name in the portal. Use lowercase letters, numbers and hyphens. Renaming doesn't change the VM Name or restart anything.
Monitoring
The Monitoring tab provides real-time performance charts for your VPS, powered by Prometheus metrics.
Available Metrics
| Metric | Description | Resolution |
|---|---|---|
| CPU Usage | Percentage of allocated CPU cores in use | 15 seconds |
| RAM Usage | Memory used vs. total allocated | 60 seconds |
| Network I/O | Incoming and outgoing traffic in bytes/sec | 15 seconds |
| Disk I/O | Read and write operations in bytes/sec | 15 seconds |
Time Periods
Select from five time windows to view your metrics:
| Period | Data Step | Auto-Refresh |
|---|---|---|
| 1 Hour | 15 seconds | Every 15s |
| 6 Hours | 60 seconds | Every 30s |
| 24 Hours | 2 minutes | Every 60s |
| 7 Days | 15 minutes | Every 2 min |
| 30 Days | 1 hour | Every 5 min |
Each metric is displayed as an area chart with a stat card showing the current value. Charts update automatically based on the selected time period.
Power Controls
While the service is active, the Overview tab has Start, Shutdown and Reboot (Shutdown and Reboot ask you to confirm). Reset — an immediate hard restart — is available through the REST API (POST /api/v1/servers/:id/power with "action": "reset").
| Action | Description |
|---|---|
| Start | Powers on a stopped server |
| Shutdown | Gracefully shuts down the server (ACPI shutdown) |
| Reboot | Gracefully restarts the server |
| Reset | Hard restart, like pressing the reset button — API only; use if the server is unresponsive |