Knowledge base

Rebuild an instance from a custom ISO

Fetching your own installation media, booting it on the virtual console, and getting an unattended install to finish without anyone watching it.

Every site takes custom media

Point the panel at a URL or upload the file. We fetch it, check the SHA-256 you supply, and attach it as a virtual optical drive. Check the digest on your side first: a truncated download that installs anyway is a worse morning than one that refuses.

sha256sum AlmaLinux-10-x86_64-dvd.iso

Through the API:

curl -s -X POST https://paragonvps.com/api/v1/instances/<instance-id>/iso -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"url":"https://mirror.example.com/alma-10.iso","sha256":"<digest>","boot":"once"}'

Booting it

"boot":"once" puts the drive first in the boot order for exactly one power cycle, which saves you undoing it later. Restart the instance, open the console from the panel, and the installer is waiting. The console offers a VNC surface and a serial line; over a long path, a text installer on the serial line is considerably less painful than a graphical one on VNC.

What the installer will see:

  • virtio-blk disks, vda onward
  • one virtio-net interface
  • q35 machine type, UEFI by default, legacy BIOS on request

Every current Linux and BSD release has those drivers built in. Windows does not. Attach the virtio driver ISO as a second drive before you start, or the installer will show you an empty disk list and decline to explain why.

Addressing during the install

IPv4 comes from DHCP at every site, so an installer that asks will configure itself. IPv6 will not: the /64 is routed rather than advertised, so either type the address and gateway from the panel by hand, or accept a v4-only install and fix it once you have a shell.

Unattended installs

Watching an installer through VNC is a poor use of a life. Both families read a configuration file over HTTP.

Debian, at the boot prompt:

auto=true priority=critical url=https://example.com/preseed.cfg

AlmaLinux, on the kernel command line:

inst.ks=https://example.com/ks.cfg inst.text

Add console=ttyS0,115200n8 to either and the whole install streams down the serial console, where you can read it in a terminal, keep the log, and paste the failure into a ticket instead of describing a screenshot.

When it is finished

Detach the media, or the next reboot cheerfully starts the installer again:

curl -s -X DELETE https://paragonvps.com/api/v1/instances/<instance-id>/iso -H "Authorization: Bearer $Paragon_TOKEN"

Then check the serial console still works from the installed system. A stock install often leaves console= off the kernel command line, and the moment you discover that should not be the moment you need it.

cat /proc/cmdline

What a rebuild does not touch

Snapshots survive. Both addresses survive, v4 and the /64, along with the reverse DNS. The billing cycle is unaffected. The root disk is overwritten in full, which is the entire point of the exercise.

One expectation to reset: a custom install is the only thing on this platform not measured in seconds. Our own images have a median deploy time of forty-seven seconds. Your installer takes as long as your installer takes, and fetching a large image adds a few minutes before it even starts.

Ready when you are

Pick a city. Pick a size. Pay in coin.

No forms about who you are, no wait for a human to approve you, no phone call to verify anything. The invoice clears and the credentials land in your inbox.