Deployment guide

AlmaLinux 10 Minimal

Overview

AlmaLinux is a community-driven enterprise Linux distribution, produced by the AlmaLinux OS Foundation to be binary compatible with Red Hat Enterprise Linux 10. This is the Minimal edition. It is the same base with the packages that a headless cloud server never uses removed, so the machine you run has a smaller installed package set and a smaller attack surface to patch and audit.

This guide covers the deployment and configuration of AlmaLinux 10 Minimal on Microsoft Azure, using SecureAnyCloud's preconfigured virtual machine image from the Azure Marketplace.

The image is cut from AlmaLinux 10 (Kitten), the rolling development track that follows upstream Red Hat Enterprise Linux 10 ahead of AlmaLinux's own numbered point releases. SecureAnyCloud's existing "AlmaLinux 10" offer uses the same base. On this image, cat /etc/almalinux-release reports AlmaLinux Kitten release 10 (Lion Cub) rather than a 10.N point release.

What "Minimal" removed on this base, measured at build time: the image trims two packages, the tuned tuning daemon and the sosreport support collector. Cockpit, linux-firmware, the boot splash (plymouth) and the bundled GeoIP datasets were already absent from the stock AlmaLinux 10 cloud image, so there was nothing to remove there. This differs from the AlmaLinux 8 and 9 Minimal editions, where several of those packages were present and had to be trimmed.

The measured result is a root filesystem of 1.5 GB instead of 1.8 GB at build time, roughly 14 percent smaller. A running machine reports slightly more than the build-time figure as logs and caches accumulate.

What you get:

  • AlmaLinux 10 (Kitten), binary compatible with the current RHEL 10 development lineage
  • A reduced package set with no tuned daemon and no sosreport support collector. Cockpit, linux-firmware, plymouth and the GeoIP datasets were already absent on this base.
  • Every available update applied at build time, verified with a zero-pending check
  • Unattended updates already armed, so the machine keeps patching itself
  • Azure Linux Agent (waagent) and cloud-init for Azure integration
  • chronyd for NTP time synchronization
  • SELinux in enforcing mode, both at runtime and persisted for the next boot
  • BaseOS and AppStream repositories enabled, with signature checking on
  • Exactly one externally reachable port: SSH on 22
  • Gen2 Hyper-V virtual machine support
  • 24/7 SecureAnyCloud support

Platform: Microsoft Azure (Gen2 Hyper-V). Default user: azureuser.

What "Minimal" means here, precisely

This image removes the packages that a headless cloud server has no use for: the tuned tuning daemon and the sosreport support collector. Each is one less service or dataset to keep patched and to account for in a security review.

The Cockpit web console, the boot splash, the residual wireless and sound card firmware, and the bundled GeoIP datasets were never installed on this AlmaLinux 10 base. Earlier AlmaLinux Minimal editions had to remove them explicitly.

The image deliberately keeps systemd, NetworkManager, the SSH server, cloud-init, the Azure Linux Agent, dnf, sudo, chrony and dnf-automatic. The build fails closed if any of them is missing after the trim. The image is rebooted before capture to prove that it still boots and reaches the network.

Confirm the footprint on your own machine:

df -h / | awk 'NR==2 {print "root filesystem used: " $3 " of " $2}' rpm -qa | wc -l

Expected output on a freshly deployed machine:

root filesystem used: 1.6G of 29G 414

Security posture

This image ships with no known credential. There is no default password and no baked-in SSH key:

  • The root account password is locked, so no one can log in as root with a password.
  • PasswordAuthentication is disabled in the SSH daemon, so every login is by key.
  • KbdInteractiveAuthentication is also disabled, which closes the other password path.
  • PermitRootLogin is set to prohibit-password, so root cannot be reached with a password even if one is set later.
  • The only key that works is the public key you supply when you create the virtual machine. Azure injects it into azureuser at first boot, so no two machines you launch share a secret.
  • SSH host keys are not baked into the image. cloud-init regenerates them on every machine, so no two customers share a host identity.

Verify the effective SSH configuration on your own machine. This reads the parsed values rather than the file text:

sudo sshd -T | grep -E '^(permitrootlogin|passwordauthentication|kbdinteractiveauthentication|permitemptypasswords) '

Expected output:

permitrootlogin without-password passwordauthentication no kbdinteractiveauthentication no permitemptypasswords no

1. Connect to the machine

Connect over SSH. Replace the address with your virtual machine's public IP:

ssh azureuser@<YOUR-VM-IP>

2. Confirm the release and patch level

cat /etc/almalinux-release uname -r

This is a major-version image. It reports the AlmaLinux 10 identity as of the build at capture time, not a pinned minor release. Confirm that no updates are outstanding:

sudo dnf -q check-update >/dev/null 2>&1; echo "check-update rc=$? (100 would mean updates pending)"

3. Confirm the trim actually shipped

The packages that this edition removes are absent, and the platform essentials are present. Confirm both:

for p in tuned sos cockpit linux-firmware plymouth; do rpm -q $p >/dev/null 2>&1 && echo "$p: present" || echo "$p: absent"; done
for p in systemd NetworkManager openssh-server cloud-init WALinuxAgent dnf
sudo chrony; do rpm -q $p >/dev/null 2>&1 && echo "$p: present" || echo "$p: MISSING"; done

4. Confirm Azure integration and SELinux

systemctl is-active waagent.service 2>/dev/null || systemctl is-active walinuxagent.service
getenforce

5. Unattended updates

The image arms dnf-automatic, so the machine keeps patching itself after you deploy it. Check the timer:

systemctl is-enabled dnf-automatic.timer
grep -E '^(upgrade_type|apply_updates|download_updates)' /etc/dnf/automatic.conf

After the timer has run at least once, review what it will do and when:

systemctl list-timers dnf-automatic.timer --all --no-pager

6. Adding software back

The trim does not stop you from installing anything you need. The full AlmaLinux repositories are enabled and signature-checked:

sudo dnf install -y tuned sos

7. Support

SecureAnyCloud provides 24/7 support for this image at sales@secureanycloud.com.

AlmaLinux is free and open source software. It is not under a single license. The distribution is assembled from thousands of independently packaged components, each with its own terms. You can read every package's license with rpm -qi <package> or under /usr/share/licenses/. No subscription, license key or support contract is required to use AlmaLinux itself.

AlmaLinux is a trademark of the AlmaLinux OS Foundation. SecureAnyCloud is not affiliated with, endorsed by, or sponsored by the AlmaLinux OS Foundation. The name is used only to identify the distribution that this image contains.

Deploy on Azure

Launch AlmaLinux 10 Minimal on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure