This episode takes Alpine to the cloud and small hardware: using cloud images on AWS, Azure, GCP, and OpenStack, installing on VMs with VirtIO and UEFI, and running Alpine on Raspberry Pi, the aarch64 architecture, and RISC-V as a headless server.

Alpine is small and fast, so it's no surprise it's popular in the cloud and on small devices. Episode 20 explores two main arenas: running Alpine on public clouds (AWS, Azure, GCP, OpenStack) and on single-board computers (Raspberry Pi, RISC-V) as headless servers.
For sysadmins and DevOps, this episode connects all the previous material — SSH, firewall, apk, kernel — with the real-world contexts where Alpine is most often used.
Alpine provides official cloud images on its website and in cloud providers' marketplaces:
curl -fLO https://dl-cdn.alpinelinux.org/alpine/v3.24/releases/cloud/nocloud_alpine-3.24.1-x86_64-bios-cloudinit-r0.qcow2
qemu-img info nocloud_alpine-3.24.1-x86_64-bios-cloudinit-r0.qcow2Cloud images use cloud-init for initial configuration:
#cloud-config
users:
- name: arman
groups: wheel
sudo: ALL=(ALL) NOPASSWD: ALL
ssh_authorized_keys:
- ssh-ed25519 AAAA... arman@labImport into OpenStack or libvirt:
openstack image create --disk-format qcow2 \
--container-format bare --public alpine-3.24 \
--file nocloud_alpine-3.24.1-x86_64-bios-cloudinit-r0.qcow2On AWS and Azure, look for an Alpine AMI or image in the marketplace. Since the images are musl-based, everything from episodes 4 through 19 applies identically in the cloud.
When creating a VM for Alpine, choose the right virtual hardware:
Check the active VirtIO drivers:
lsmod | grep virtio
lspci | grep -i virtio
cat /proc/mounts | grep -E "vda|sda"lsmod | grep virtio shows the loaded virtio modules. In cloud images, VirtIO support is built into the kernel.
Alpine supports Raspberry Pi 4 and 5 with dedicated aarch64 images:
curl -fLO https://dl-cdn.alpinelinux.org/alpine/v3.24/releases/aarch64/alpine-rpi-3.24.1-aarch64.tar.gz
tar xzf alpine-rpi-3.24.1-aarch64.tar.gz
ls alpine-rpi-3.24.1-aarch64Extract the tarball's contents to the boot partition of the SD card, then run setup-alpine on first boot. Alpine on the RPi uses the linux-rpi kernel:
uname -r
cat /etc/os-releaseuname -r shows a kernel like 6.12-rpi — the kernel version for single-board computers. Turn off unused components to save power:
echo "hdmi_ignore_hotplug=1" >> /boot/usercfg.txtBesides Raspberry Pi, Alpine is available for many architectures:
Check the system architecture:
uname -m
apk archThe apk arch output shows the architecture apk recognizes, such as x86_64 or aarch64. For a headless server, make sure the basic setup is in place:
setup-alpine
rc-update add sshd default
rc-update add chronyd defaultrc-update add sshd default and chronyd ensure the headless server is reachable and its clock stays synced without a monitor.
Tip
For cloud production, prioritize Alpine's official cloud images. These images are optimized for fast boot and already include cloud-init, so configuration like SSH keys and users can be injected from the start.
Episode 20 took Alpine to the cloud and small devices: using cloud images on AWS, Azure, GCP, and OpenStack; installing on VMs with VirtIO and UEFI; and running Alpine on Raspberry Pi, aarch64, and RISC-V as headless servers.
Key takeaways:
In the next episode, episode 21, we'll cover the Alpine roadmap and community — the semi-annual release cadence, the /usr merge plan, edge development, and official learning resources like the wiki, mailing lists, GitLab, and Docker Hub.