Packages
A package is what a server is sold as: its size, limits and where it can be ordered. Manage them under Catalog → Packages (needs the “Packages and templates” permission). New package, or a package’s name or Edit, opens its settings on a page of their own.
Fields
| Field | Unit and rules | New package |
|---|---|---|
| Name | Up to 32 characters: letters, digits, ., _, -. Unique. |
|
| vCPU | 1–64 | 2 |
| Memory | 0.5–256 GB in steps of 0.25 GB (the API takes MB, a multiple of 256) | 2 GB |
| Disk | 10–16,000 GB | 40 GB |
| Disk type | NVMe, SSD or HDD. Placement needs a storage pool of this tier. | NVMe |
| Monthly transfer | GB, 0 for unmetered | 2000 GB |
| When a server uses up its traffic | See Traffic | Slow to 10 Mbit/s |
| IPv4 addresses | 0–16 | 1 |
| IPv6 | Give each server a /64 | On |
| Port speed | Mbit/s, 1–100,000 | 1000 |
| Disk IOPS | 0 for no cap | 10,000 |
| Disk throughput | MB/s, 0 for no cap | 300 |
| CPU cap | % of its vCPUs a server may use, 0 for no cap | 0 |
| Snapshots | How many each server keeps, 0–50 | 2 |
| Backup plan | An active backup plan, or no backups | None |
| Billing product ID | Optional, e.g. whmcs:12 |
|
| Locations | The node groups it can be ordered in | |
| Availability | Orderable, Hidden (staff can still use it) or Archived | Orderable |
Changing a package
- Size changes apply to new servers. Existing servers move with Change package.
- Speed limits (port, IOPS, throughput, CPU cap) apply live to every server on the package, except servers with their own override.
- Archived packages can be restored as hidden.
Locations and stock
The packages page and each group page show whether a server of that size fits in each location right now. A location with no room behaves like being out of stock, with the reason: “Group is paused”, “No nodes in the group”, “No node has room” or “No NVMe storage in this group”. An orderable package with no locations shows a warning, since orders for it would fail.
Traffic
Each package says what happens when a server uses up its monthly transfer:
| Choice | What happens |
|---|---|
| Slow down | Stays online at the Slow to speed (10 Mbit/s unless you set another) until the monthly reset or a top-up. The speed has to be below the package’s port speed. |
| Suspend | Powered off until the reset or a top-up; the top-up unsuspends it |
| Only notify | Keeps full speed; bill the overage from your billing system |
Changing a package’s slow-down speed also reaches its servers within a few seconds, for those that are already slowed down. In the API it’s the package’s throttleMbps field.
Customers are warned at 90%. Staff can Add traffic for the month or Reset usage, and billing can do the same with POST /servers/{id}/bandwidth and a staff token. Resellers can’t: they ask you for a top-up.
Speed limits for one server
Staff can override the limits for one server from its Overview tab, for example to calm a noisy neighbour or sell a faster port. Blank fields follow the package. Resellers can lower their customers’ limits but never raise them past the package. The API call is PATCH /servers/{id}/speed, and it sends a server.speed_changed webhook.
Changing a server’s package
Change package lists every package a server could move to, marked as an upgrade or downgrade, and says why the others can’t be used:
- disks only grow
- the storage tier has to match
- the node needs room for the difference
- for a reseller’s customers, the package has to be in the reseller’s list and the difference has to fit its quotas
CPU and memory changes restart a running server once; a disk-only change doesn’t. It sends a server.resized webhook.
Custom resources and hardware for one server
A server’s Hardware tab (staff with the Change package permission) sets one server apart from its package:
-
Resources: vCPUs, memory and disk (the disk only grows). The server then shows as a custom size; changing its package later puts it back on the package’s.
-
CPU: the model (node default, host-passthrough, host-model or qemu64) and how many sockets the vCPUs are spread over. Desktop Windows only uses 2 sockets.
- CPU priority (low, normal, high) sets its share of the node’s CPU time when the node is busy: half or double everyone else’s.
- Pin to node cores (like
4-7or2,3,10-11) keeps its vCPUs on those cores only. A move then needs a node that has those cores too.
-
Memory: back it with huge pages. The node must have them set up (
vm.nr_hugepages, orhugepages=on its kernel command line) with at least the server’s memory free in them, or the server won’t start. -
Firmware: BIOS or UEFI, Secure Boot, a TPM 2.0 chip, and the machine type (q35 or the older pc).
-
Disk: the bus (VirtIO, VirtIO SCSI or SATA) and the cache mode.
-
Network and display: the network card model (VirtIO, e1000e, e1000, rtl8139) and the video card.
-
Guest OS: the hardware clock (UTC or local time) and Hyper-V enlightenments.
Presets fill in a known-good set: Linux defaults, Windows (no VirtIO drivers) with SATA, e1000e, local time and Hyper-V, and Windows 11 / Server 2025, which adds UEFI, Secure Boot and a TPM.
Changes apply when the server is stopped and started; a reboot from inside it keeps the old hardware. Save and restart now does that straight away, and the tab says when changes are waiting. Switching an installed server between BIOS and UEFI, or changing its disk bus, can stop its OS from booting, so set those before installing.
UEFI needs the ovmf package on the node and TPM needs swtpm. Nodes installed from now on get both; on an older node, install them by hand:
apt-get install -y ovmf swtpm swtpm-tools
Additional disks
A server’s Hardware tab can add up to 8 empty disks besides its own. Each goes on the server’s own storage pool, or another pool of its node, and counts against that pool.
- Adding: a running server gets the disk straight away. On SATA, which can’t take disks live, it gets it at its next stop and start.
- Finding it inside the server: each disk has its ID as its serial, so Linux finds it at
/dev/disk/by-id/virtio-<ID>(scsi-0QEMU_QEMU_HARDDISK_<ID>on SCSI). The customer partitions and mounts it. - Growing: disks only grow, and the guest sees the new size straight away. Growing the partition inside is the customer’s job.
- Removing: takes the disk out and destroys its data. You type its ID to confirm. A running server has to let go of it first: if the disk is still mounted, the job fails and says so, and it’s removed once it’s unmounted or the server is stopped.
- Moves take additional disks along, onto the same storage as the server’s own disk on the new node. To put one disk on other storage on the same node, use its Move… button (see Transfers).
- Snapshots, backups and reinstalls only cover the server’s own disk and leave additional disks as they are.
- Terminating the server destroys its additional disks too.
GPUs
A package can give each of its servers graphics cards. The GPUs section only appears once a node has a card switched on for servers. Tick Servers on this package get GPUs, then Per server sets how many, and Model which kind, from the cards nodes report (with how many are free), or Any card. Placement then only uses nodes with enough free, switched-on cards of that model, and the server gets them as it’s created. Where none are free, the package shows as unavailable there with the reason.
Cards are switched on for servers on each node’s Assets tab. A package change can’t add or drop GPUs yet; give or take cards on the server’s Hardware tab instead. Over the API, a package’s gpu is { "count": 1, "model": "NVIDIA GeForce RTX 4090" }, or null for none.
Other staff tools on a server
- Lock (⋯ menu, staff who can suspend): the server keeps running, but its customer and their reseller can only look at it. Power, reinstall, console, settings, firewall and package changes, joining or leaving private networks, and taking or giving up a floating IP are refused with the reason you give, their scheduled tasks don’t run, and an open console closes within a minute. Staff can still do everything. A banner says it’s locked; Unlock is in the same menu.
- View libvirt XML (⋯ menu): the server’s definition as its node has it, from
virsh dumpxml, with passwords left out. It’s read-only. - Set addresses again (Network tab, under Network card): sets every address inside the server again through its guest agent, after someone changed them by hand. Customers have this button too.
- Block spoofed traffic (Network tab, under Network card; on by default): the node drops anything a server sends from an IP address that isn’t one of its own, so it can’t fake or take over other addresses. Turn it off only for a server that routes traffic for other addresses, such as a router, firewall or VPN gateway. Sending as another MAC address is always blocked, and so are VLAN-tagged frames, router and redirect messages, and DHCP answers, whatever this says. The same checks apply to what a server sends to its node itself, and servers can’t reach the node’s VXLAN, move or libvirt ports. It takes effect straight away.