OS templates

Guide · Updated September 2026 · ~4 min read

Every VM starts from a cloud image of the system you pick in the wizard. We build these images from the official releases and rebuild them every week, so a new server comes up with current packages and does not spend its first minutes on updates.

Available systems

SystemVersions
Ubuntu26.04, 24.04
Debian13
AlmaLinux10
Rocky Linux10
Fedora44
CentOS Stream10, 9
Alpine3.23
Arch Linuxrolling
openSUSE Leap16.0
Oracle Linux10

The list is the same one the Cloud Panel wizard shows and changes together with it. A system that is not here can be installed from your own ISO.

What every image has

  • The user scamp with passwordless sudo. Sign in with the SSH key or the password you set when creating the VM.
  • Package repositories pointed at our mirror, mirror.serverscamp.com. Installs and updates come from inside our network and do not wait on public mirrors.
  • The QEMU guest agent, running from the first boot.
  • English as the default locale. Ubuntu, Debian and the RHEL family also carry every other locale, so switching language needs no extra packages.

How the images stay current

Once a week we take the latest official cloud image of each system and apply every pending update.

To use the official mirrors instead, change the repository address in /etc/apt/sources.list.d or /etc/apt/mirrors, /etc/yum.repos.d, /etc/zypp/repos.d, /etc/pacman.d/mirrorlist or /etc/apk/repositories.

User data

When you create a VM from a template you can pass user data, in the wizard under User data or in the user_data field of the API. It runs once, on the first boot, and takes up to 64 KB. VMs started from an ISO, a snapshot or a backup do not use it.

Two formats are accepted, told apart by the first line.

cloud-config

Starts with #cloud-config and is merged with our own settings. Where both set the same key, yours wins, and your runcmd commands run after ours. The package lists are refreshed before your packages are installed.

#cloud-config
packages:
  - nginx
  - git
write_files:
  - path: /var/www/html/index.html
    content: |
      hello from user data
runcmd:
  - systemctl enable --now nginx

Shell script

Starts with #!. It is saved on the VM and run as root after all our setup is done, so the network, the scamp user and the repositories are already in place.

#!/bin/bash
apt-get install -y docker.io
usermod -aG docker scamp

The output of both formats lands in /var/log/cloud-init-output.log on the VM, the first place to look when something did not happen.