You are picking a Linux base for a VPS, dedicated server, or homelab and keep landing on the same fork: AlmaLinux vs Ubuntu. Both run nginx, PostgreSQL, Docker, and Kubernetes. Both have free installs and active security teams. The choice that actually sticks in production is not “which mascot is nicer”—it is package lineage, how long the major version lasts, what your control panel or ISV certifies, and which commands your team already types without thinking.
This guide compares AlmaLinux 9 and 10 with Ubuntu 24.04 LTS for server roles—web hosting, application VMs, databases, and infra nodes—not desktop gaming or distro politics. I checked Ubuntu-side defaults on a live host below; AlmaLinux figures come from AlmaLinux release notes and Ubuntu’s release cycle, which is what you should verify before you freeze an image.
Tested on: Ubuntu 25.04 (Debian-family reference host); kernel 6.14.0-37-generic; apt 3.0.0; AppArmor enabled; firewalld inactive.
Quick answer: AlmaLinux vs Ubuntu
Pick AlmaLinux 9 or 10 when you want RHEL-compatible servers: dnf, SELinux, firewalld, long enterprise Linux support windows, and software matrices that say “RHEL 9/10, AlmaLinux, or CloudLinux.” That includes many shared hosting shops that moved off CentOS Linux, plus Oracle/SAP-style stacks that vendors test on Red Hat.
Pick Ubuntu 24.04 LTS when you want the path of least resistance for cloud-native and general-purpose servers: default images on every hyperscaler, the largest body of apt tutorials, five years of included security maintenance, and optional Ubuntu Pro for extended CVE coverage and livepatch.
If you are choosing inside the Debian family instead (no dnf), read Debian 12 vs Ubuntu 24.04 LTS—a different trade-off than AlmaLinux vs Ubuntu.
AlmaLinux vs Ubuntu at a glance
| Topic | AlmaLinux 9 | AlmaLinux 10 | Ubuntu 24.04 LTS |
|---|---|---|---|
| Upstream lineage | RHEL 9 rebuild | RHEL 10 rebuild | Debian snapshot + Canonical |
| Package format | RPM | RPM | DEB |
| Package tool | DNF (yum alias) |
DNF | APT |
| Init / services | systemd | systemd | systemd |
| MAC security | SELinux (enforcing typical) | SELinux | AppArmor |
| Host firewall tool | firewalld | firewalld | UFW (nftables backend) |
| Active support ends | 31 May 2030 | 31 May 2030 | May 2029 (standard) |
| Security support ends | 31 May 2032 | 31 May 2035 | May 2029; ESM to 2034 with Pro |
| Typical GA kernel | 5.14.x stream | 6.12.x | 6.8 (+ optional HWE) |
| System Python (typical) | 3.9 | 3.12 | 3.12 |
| Best-known for | RHEL substitute, EL hosting | New EL10 apps, longest Alma window | Cloud, DevOps docs, general VPS |
Sources: AlmaLinux release notes, Ubuntu release cycle.
Where each distro came from (and why it matters)
AlmaLinux
AlmaLinux appeared after Red Hat announced CentOS Linux would become CentOS Stream—an upstream rolling branch rather than a downstream RHEL clone. AlmaLinux is maintained by the AlmaLinux OS Foundation and aims for 1:1 binary compatibility with RHEL so RPMs, Ansible roles, and vendor installers written for Red Hat work without a paid RHEL subscription.
If you still have CentOS 7 hosts in 2026, you are past normal support; migration targets are AlmaLinux 8/9, RHEL, or a full reinstall—not Ubuntu in place. CentOS Stream is a different product: useful for previewing RHEL, not a drop-in replacement for old “CentOS Linux” stability.
Ubuntu
Ubuntu is Canonical’s Debian-derived distribution. LTS releases (22.04, 24.04, …) ship every two years with five years of standard security updates. Interim releases (25.04, 25.10) move faster and suit testers, not long-life production servers.
Ubuntu and AlmaLinux are not interchangeable images—you pick one per VM and manage repos accordingly.
Release cadence and support (the number most hosts get wrong)
Hosting blogs often repeat “AlmaLinux = 10 years, Ubuntu = 5 years” without dates. Use the major version you actually install:
AlmaLinux
| Major | Active support until | Security support until |
|---|---|---|
| 9 | 31 May 2030 | 31 May 2032 |
| 10 | 31 May 2030 | 31 May 2035 |
| 8 | Active support ended May 2024 | Security support until 31 May 2029 |
Minor releases (9.7 → 9.8) deliver bug and security fixes; plan major upgrades (9 → 10) as a project, not a casual dnf upgrade.
Ubuntu 24.04 LTS
Noble Numbat receives five years of standard security maintenance (through May 2029). Ubuntu Pro adds Expanded Security Maintenance (more repositories, longer CVE coverage on LTS)—free for personal use on a small number of machines, paid for larger fleets.
Practical takeaway
| Your priority | Lean toward |
|---|---|
| Longest published Alma security window on a new build | AlmaLinux 10 (to 2035) |
| Match existing RHEL 9 / Alma 9 fleet or ISV matrix | AlmaLinux 9 (to 2032) |
| Five years included without EL contracts | Ubuntu 24.04 LTS |
| Need Ubuntu Pro / livepatch / FIPS story | Ubuntu 24.04 + Pro |
| Still on Alma/CentOS 8 | Plan migration; 8 is in late-life security only |
Package management: DNF/RPM vs APT/DEB
This is the sharpest day-to-day difference. You cannot copy-paste apt commands onto AlmaLinux or dnf onto Ubuntu—package names, repos, and dependency paths differ.
| Task | AlmaLinux | Ubuntu |
|---|---|---|
| Install | sudo dnf install nginx |
sudo apt install nginx |
| Remove | sudo dnf remove nginx |
sudo apt remove nginx |
| Update metadata | sudo dnf makecache |
sudo apt update |
| Upgrade packages | sudo dnf upgrade |
sudo apt upgrade |
| Search | dnf search php |
apt search php |
| List installed | dnf list installed |
apt list --installed |
| Extra repos | EPEL, CRB, vendor .repo files |
PPAs (careful on servers), vendor apt repos |
On AlmaLinux you will live in /etc/yum.repos.d/ and modules/AppStream streams. On Ubuntu, /etc/apt/sources.list and .sources fragments under /etc/apt/sources.list.d/. Local .deb files on Ubuntu still go through dpkg even when you install them with apt install ./package.deb.
Removing software
Ubuntu-specific cleanup patterns—apt purge, autoremove, Snap/Flatpak—are in how to remove software on Ubuntu. On AlmaLinux, dnf remove plus dnf autoremove play a similar orphan role; see YUM/DNF history and rollback when you need to undo a bad update.
Security model: SELinux vs AppArmor, firewalld vs UFW
Both distros ship hardened defaults; the tools differ.
AlmaLinux — SELinux + firewalld
- SELinux is the main mandatory access control layer. Policies can block a compromised service from reading unrelated files even if Unix permissions look loose.
- firewalld is the conventional firewall frontend (
firewall-cmd). See firewalld cheat sheet. - Troubleshooting often means reading
/var/log/audit/audit.logandausearch, not onlyjournalctl.
Ubuntu — AppArmor + UFW
On my Ubuntu reference host, AppArmor is enabled and firewalld is not active—typical for Ubuntu Server images that use UFW or cloud security groups instead:
aa-status --enabled 2>/dev/null && echo "AppArmor: on"
systemctl is-active firewalld 2>/dev/null || echo "firewalld: not active"AppArmor: on
inactive
firewalld: not activeAppArmor profiles are usually easier to bootstrap than SELinux for small teams, but neither replaces patching, SSH hardening, or network segmentation.
setsebool and file contexts before you disable it.
What actually ships: version snapshot
Package versions change with security updates—treat this as a planning table, then verify on the VM.
| Component | AlmaLinux 9 (typical GA) | AlmaLinux 10 (typical GA) | Ubuntu 24.04 LTS |
|---|---|---|---|
| Kernel | 5.14.x | 6.12.x | 6.8 |
| OpenSSH | 8.7p1+ | 9.x stream | 9.6p1 |
| Python (system) | 3.9 | 3.12 | 3.12 |
| PHP (distro modules) | 8.0 / 8.2 AppStream | 8.3+ streams | 8.3 |
| PostgreSQL (module/app) | 13 / 15 modules | newer modules | 16 |
| nginx | AppStream | AppStream | 1.24.x |
Check live versions on the machine you provision:
# AlmaLinux
cat /etc/almalinux-release
uname -r
python3 --version
# Ubuntu
. /etc/os-release && echo "$PRETTY_NAME"
uname -r
python3 --versionOn my Ubuntu 25.04 reference host (not Noble LTS—the commands are the same on any Ubuntu):
Ubuntu 25.04
6.14.0-37-generic
Python 3.13.3An Ubuntu 24.04 LTS image will report Noble and the GA kernel/Python for that release—always trust /etc/os-release on the VM you are about to put in production, not a comparison table from a blog. For kernel checks on either distro, see ways to check the Linux kernel version.
Web hosting and control panels (updated for 2026)
Many comparison articles still claim “cPanel = AlmaLinux only.” That is outdated.
Current cPanel OS support includes:
- AlmaLinux 8, 9, and 10
- CloudLinux 8, 9, and 10
- Ubuntu 24.04 LTS
Ubuntu 22.04 is being phased out on newer cPanel branches—new hosting builds should target 24.04. Rocky Linux is no longer supported for new cPanel installs on recent versions—an important gap other “Alma vs Ubuntu” posts miss when they treat Rocky and Alma as identical for panels.
| Hosting scenario | Practical note |
|---|---|
| New cPanel dedicated server | AlmaLinux 9/10 and Ubuntu 24.04 are both valid—match your license docs and PHP/LiteSpeed plans |
| Legacy CentOS 7 cPanel | Migrate or ELS; do not greenfield CentOS 7 |
| DirectAdmin / Plesk | Both distros generally supported—check vendor matrix for your version |
| Raw nginx + PHP-FPM (no panel) | Either distro; Ubuntu has more blog tutorials, Alma has more EL hosting runbooks |
For PHP versions newer than the distro default, Alma hosts often use Remi or vendor repos; Ubuntu hosts use Ondřej Surý PPAs or containers—both are extra steps beyond dnf install php / apt install php.
Cloud images, DevOps, and containers
Ubuntu 24.04 LTS is still the default “quick create” OS on AWS, Azure, GCP, and most VPS panels. Vendor Kubernetes marketplaces, GPU guides, and GitHub Actions examples assume Noble or Jammy first.
AlmaLinux images are one click away on the same clouds but rarely the pre-selected default. Choose Alma when your terraform/ansible standard is EL, your EKS/AKS node profile lists RHEL-compatible OS, or compliance docs name AlmaLinux.
For Docker and Kubernetes node roles, both work. Ubuntu Docker CE docs are abundant; AlmaLinux uses EL firewall and SELinux rules you must open for bridge traffic. Neither distro removes the need to pin image digests and upgrade nodes deliberately.
Administration habits that differ in production
| Topic | AlmaLinux | Ubuntu |
|---|---|---|
| Privileged group | wheel (sudo vs wheel) |
sudo group |
| Time sync config | /etc/chrony.conf |
/etc/chrony/chrony.conf (+ sources.d) |
| Network (server) | NetworkManager / legacy ifcfg | Netplan on cloud images |
| NTP/chrony how-to | Chrony setup (paths differ by family) | Same guide—check chrony.conf location |
| List users/groups | getent passwd and /etc/group |
Same layout on both |
systemd unit names for nginx, postgresql, or docker are largely the same; paths and repo package names are not.
Migration and coexistence
| From | Reasonable target | Notes |
|---|---|---|
| CentOS Linux 7 | AlmaLinux 8/9, RHEL, or reinstall | No in-place to Ubuntu |
| CentOS Linux 8 | AlmaLinux 8/9 | almalinux-deploy style tooling |
| RHEL (licensed) | AlmaLinux | Compatibility testing still wise |
| Ubuntu 22.04 | Ubuntu 24.04 LTS | do-release-upgrade path for LTS→LTS |
| Rocky Linux (cPanel) | AlmaLinux or CloudLinux | Rocky dropped from cPanel support |
You cannot apt dist-upgrade an AlmaLinux box into Ubuntu. Cross-distro moves are reinstall plus restore data, or automation that reprovisions the VM.
AlmaLinux vs Ubuntu: workload guide
| Workload | AlmaLinux | Ubuntu 24.04 LTS |
|---|---|---|
| cPanel / WHM (new 2026 builds) | Strong (9/10) | Strong (24.04) |
| RHEL-certified Oracle / SAP / ISV | Strong | Weak unless vendor lists Ubuntu |
| General VPS + nginx + Let's Encrypt | Good | Excellent docs |
| PostgreSQL / MySQL | Stable EL modules | Newer majors at LTS GA |
| Kubernetes worker | Good when vendor lists EL | Often default image |
| CI runners | EL matrix jobs | Broader public examples |
| Homelab learning Linux servers | Steeper if no RHEL background | Gentler tutorial density |
| ARM cloud (Graviton, Ampere) | Supported on Alma 9/10 | Very common on Ubuntu |
What most comparison articles gloss over
- Rocky vs Alma for cPanel — Rocky is out; Alma and CloudLinux are in. Do not follow 2023 forum threads blindly.
- Ubuntu on cPanel — Ubuntu 24.04 is supported; the “Ubuntu for dev, Alma for hosting” split is softer than it used to be.
dnf≠aptwith different spelling — package names, modules, and SELinux contexts break naive script porting.- Alma 8 vs 9 vs 10 — picking “AlmaLinux” without a major version is meaningless for support and ISV certs.
- Ubuntu interim releases — 25.04/25.10 are not LTS; production servers should be on 24.04 LTS unless you have a short-lived test box.
- Security posture — both are secure when patched; SELinux troubleshooting on Alma is the operational cost, not “lack of security” on Ubuntu.
- Debian is a third path — if you want APT without Canonical’s snap ecosystem, weigh Debian against Ubuntu in the comparison linked in the quick answer above.
Summary
AlmaLinux and Ubuntu are both solid server bases; they optimize for different supply chains. Choose AlmaLinux 9 or 10 when RHEL compatibility, dnf, SELinux, long EL support, and hosting or ISV matrices point at Enterprise Linux. Choose Ubuntu 24.04 LTS when cloud defaults, apt, documentation gravity, and Canonical’s LTS/Pro story fit your team.
Provision one test VM of each on your actual cloud SKU, run your playbook (web stack, database, panel, or agent install), and compare support end dates, package versions, and operator friction—not benchmark charts from generic hosting blogs.
Official references: AlmaLinux Wiki, Ubuntu release cycle, cPanel release notes.









