Upgrading Ubuntu 24.04 to 26.04 LTS: what changes for your server

A companion to upgrading an Ubuntu server safely, which covers the general method.

Ubuntu 26.04 LTS came out in April 2026, and in late September 2026 Ubuntu began offering the upgrade to servers running 24.04 LTS, after the first point release, 26.04.1. If you run 24.04, you will probably see the upgrade offered soon, if you have not already.

This guide is about the specific changes between those two releases that matter on a VPS: new versions of PHP, Python, MySQL and OpenSSH, a new sudo, and a few removed tools that can break third-party software. It gives a checklist for before and after the upgrade. The good news first: there is no rush. Ubuntu 24.04 keeps its standard security updates into 2029, so you can upgrade when it suits you, or simply build your next server on 26.04.

2 GB and 4 GB VPS plans in stock, for a fresh 26.04 server alongside your old one

In stock when this page loaded. See all 6 matching plans

What is in this guide

A few words you will see

TermWhat it means
LTSLong-term support: a release that gets security updates for years.
Point releaseAn update to an LTS release, such as 26.04.1, that bundles fixes.
PHP-FPM poolA group of PHP workers with its own settings, stored in a folder named after the PHP version.
Virtual environmentA private folder of Python packages for one app, tied to one Python version.
sudo-rsA new version of the sudo command, written in the Rust language.
apt-keyAn old tool for adding signing keys for extra package sources. Removed in 26.04.
cgroupThe Linux feature that limits resources for services and containers. Version 1 support is removed.

Upgrade now, later, or rebuild?

OptionGood for
Stay on 24.04 for nowBusy sites, shops before a sale season, and anyone without time to test. 24.04 is supported into 2029
Upgrade in placeSimple servers, test boxes, and servers where you have a tested backup and a quiet window
Build a fresh 26.04 server and move acrossImportant sites, servers with many extra package sources, or anything old and cluttered

For important sites, the fresh build is safest, because the old server keeps running until the new one is proven. RackNerd's control panel lets you reinstall or choose an operating system when you set up a server; check whether Ubuntu 26.04 is offered for your plan. Moving to a new VPS walks through the move. Check your exact support dates on Ubuntu's official release pages.

What changes, at a glance

Versions as published in Ubuntu's 26.04 release notes. The 24.04 versions are those it shipped with.

Component24.0426.04Why it matters
Kernel6.87.0Mostly invisible. Reboot after upgrading
PHP8.38.5Pool files, extensions and old code need checking
Python3.123.14Virtual environments must be rebuilt
MySQL8.08.4 LTSSome old login methods are locked out
PostgreSQL1618Major versions need a data upgrade step
OpenSSH9.610.2DSA keys removed
systemd255259cgroup v1 support removed
sudoClassic sudosudo-rsUnusual sudoers setups may behave differently
Core tools such as lsGNU coreutilsRust coreutils, with GNU still availableScripts relying on unusual options may need checking
APT2.73.1apt-key removed
Time syncsystemd-timesyncdChrony on new installsUpgraded servers can keep the old one

The release notes do not list everything, and MariaDB, nginx and Apache versions also move. After upgrading, apt policy PACKAGE shows the version you now have.

PHP 8.3 to 8.5

This is the change most likely to affect a website. The upgrade installs PHP 8.5, and the PHP 8.3 packages are usually offered for removal as obsolete.

  • Check your app supports PHP 8.5 before upgrading. Update WordPress, its plugins and themes, or your app, to versions that list 8.5 support.
  • Pool files live in a versioned folder. Custom pools in /etc/php/8.3/fpm/pool.d/ need copying to /etc/php/8.5/fpm/pool.d/.
  • Extensions are versioned too. Each php8.3- package needs its php8.5- version, for example php8.5-mysql. Installing the unversioned names, such as php-mysql, picks the current version.
  • Socket paths. If you followed this site's WordPress or cPanel guides, your pool uses a socket named after the site, such as /run/php/mysite.sock, so the web server config does not need to change. If your site uses the default versioned socket, such as /run/php/php8.3-fpm.sock, update it.
  • Custom php.ini settings in /etc/php/8.3/ need copying across by hand.

Python 3.12 to 3.14

Python apps installed in virtual environments almost always break after this upgrade, because each environment is tied to the Python version that made it. The fix is quick: recreate the environment and reinstall the app's packages. For an app in /home/myapp/app, for example:

cd /home/myapp/app
python3 -m venv --clear venv
venv/bin/pip install -r requirements.txt

Run this as the app's user, then restart its service. Check that each package your app uses supports Python 3.14 first. Most well-maintained ones do. Django users get Django 5.2 from Ubuntu's own packages, but apps usually install their own Django in the virtual environment.

MySQL 8.0 to 8.4

This section is for MySQL, the mysql-server package. MariaDB, which this site's guides use, is a separate product and is not affected by this change.

MySQL 8.4 deprecates the old mysql_native_password login method, and accounts that still use it are locked out by default after the upgrade. Older apps often use it. Before upgrading, check in the MySQL shell, opened with sudo mysql:

SELECT user, host, plugin FROM mysql.user WHERE plugin = 'mysql_native_password';

For each account it lists, switch to the newer method, using the account's existing password, which you will find in the app's config file:

ALTER USER 'appuser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'THE_SAME_PASSWORD';

Very old database libraries may not support the newer method. Test the app afterwards. Back up every database before the upgrade regardless, with mysqldump.

PostgreSQL users moving from 16 to 18 should follow Ubuntu's and PostgreSQL's own instructions for moving data between major versions. The old cluster usually keeps running until you upgrade it.

A new sudo and new core tools

  • sudo-rs replaces the classic sudo. It is built to behave the same for normal use, such as a user in the sudo group running admin commands. If you have unusual rules in /etc/sudoers or /etc/sudoers.d/, test them after the upgrade. The original version is still available as sudo.ws.
  • Rust coreutils replace many everyday commands such as ls and cat. The GNU versions remain available with a gnu prefix, such as gnuls, and cp, mv and rm still come from GNU. Scripts using common options are unaffected. Test scripts that rely on unusual options.

Before upgrading, make sure you can reach the server through the console in the VPS control panel, in case a sudo problem locks you out of admin commands.

Third-party repositories and apt-key

The old apt-key command is removed in 26.04. Extra package sources that were added years ago with apt-key, rather than with a signed-by keyring, may stop working. During the upgrade, Ubuntu disables third-party sources anyway.

  • Before upgrading, list your extra sources: ls /etc/apt/sources.list.d/.
  • For each one, check the project's current install instructions supports 26.04. Docker, Node.js, database and control panel repositories each publish their own.
  • After upgrading, add each source back using the project's current instructions, which use a signed-by keyring file.
  • If an install script you rely on still calls apt-key, it will fail on 26.04. Look for an updated version.

OpenSSH changes

  • DSA keys are gone. The server no longer accepts DSA keys and does not create DSA host keys. If you still log in with an old id_dsa key, create an Ed25519 key and add it before upgrading. See how to connect with SSH and set up SSH keys.
  • ~/.pam_environment is no longer read by the SSH server. If you set environment variables that way, move them to your shell's startup file.
  • Your settings in /etc/ssh/sshd_config.d/ carry over. Check them after the upgrade with sudo sshd -T | grep -E "passwordauthentication|permitrootlogin".

4 GB VPS plans in stock, if you are rebuilding on a bigger server

In stock when this page loaded. See every plan

Other changes worth knowing

  • cgroup v1 is gone. 24.04 already used cgroup v2 by default, so this only affects servers where it was switched back, usually for very old container software. Check with stat -fc %T /sys/fs/cgroup: cgroup2fs means you are fine, while tmpfs means the server still uses the old setup and you should find out why before upgrading.
  • Chrony keeps time on new installs. Upgraded servers can keep using systemd-timesyncd. Ubuntu's release notes describe how to switch if you want to.
  • Dracut builds the boot image on new installs. The older tool is still supported.
  • Dovecot, Squid, Samba and OpenLDAP have configuration changes. If you run them, read the release notes' sections on each before upgrading.
  • System V init scripts still work in 26.04 but not after it. If a service of yours uses an old script in /etc/init.d/, plan to replace it with a systemd service.

Checklist before you upgrade

CheckHow
Tested backup, off the serverSee using a storage VPS for backups
Control panel console worksLog in to it once
App supports PHP 8.5App and plugin release notes
List of custom PHP pools and settingsls /etc/php/8.3/fpm/pool.d/
List of Python apps and their requirements filesYour notes, or systemctl list-units --type=service
MySQL accounts using the old login methodThe query in the MySQL section
Extra package sourcesls /etc/apt/sources.list.d/
No DSA keys in useCheck ~/.ssh/authorized_keys for lines starting ssh-dss
Running on cgroup v2stat -fc %T /sys/fs/cgroup
Free disk spacedf -h /, with several GB free

Running the upgrade

The full method, including running inside tmux and the questions you will be asked, is in upgrading an Ubuntu server safely. In short:

sudo apt update && sudo apt full-upgrade
sudo reboot
grep Prompt /etc/update-manager/release-upgrades
tmux new -s upgrade
sudo do-release-upgrade

The grep line should show Prompt=lts, which offers the next LTS release. If no release is offered, Ubuntu may still be rolling the upgrade out in stages. Waiting a few days is better than forcing it.

Checklist after you upgrade

  1. Confirm the release with lsb_release -a, and look for failed services with systemctl --failed.
  2. Copy custom PHP pools and settings to the 8.5 folders, install the matching extensions, then run sudo php-fpm8.5 -t and sudo systemctl restart php8.5-fpm.
  3. Recreate Python virtual environments, then restart each app.
  4. Test each website and app, including logins, forms and uploads.
  5. Check databases start, and that apps can connect.
  6. Check sudo works for your user, and that SSH settings are as you set them.
  7. Add back third-party package sources that support 26.04.
  8. Check scheduled jobs ran, the next day.
  9. Check automatic security updates are still on with systemctl status unattended-upgrades.

Troubleshooting

SymptomLikely causeFix
Website shows a 503 error or raw PHPPHP 8.3 pool removed and not recreated for 8.5Copy the pool file to /etc/php/8.5/fpm/pool.d/ and restart PHP 8.5
PHP errors about missing functions or classesA php8.5- extension is not installedInstall the matching extension and restart PHP
Python app will not startVirtual environment built for Python 3.12Recreate it as shown in the Python section
App cannot log in to MySQLAccount still uses mysql_native_passwordSwitch it as shown in the MySQL section
apt errors about a missing key or sourceA third-party source added with apt-keyRemove it and add it back with the project's current instructions
sudo refuses a rule that used to workAn unusual sudoers settingUse the console to check the rule, or try sudo.ws
Old SSH key no longer acceptedDSA keys removedLog in through the console and add an Ed25519 key
No upgrade offeredPrompt not set to lts, or the staged rollout has not reached youCheck the Prompt line and wait a few days

Limits

  • This guide summarises Ubuntu's published release notes and common server setups. Read the official notes for anything you run that is not covered here.
  • No downgrade. Your backup is your only way back.
  • Every server is different. Old or heavily customised servers are more likely to need extra work, and rebuilding is often quicker.
  • It is your job on a VPS. A RackNerd VPS is unmanaged, so support can help with the server itself, not with your apps after an upgrade.
  • Fair use applies. Unmetered does not mean unlimited, and RackNerd's acceptable use policy covers what you run.

When to step up

A release upgrade is a natural time to rebuild on a fresh, bigger server if the old one was short of memory. You get a clean 26.04 install, room to grow, and the old server as a safety net until the new one is proven. How to read VPS specs helps you choose the size.

6 GB and 8 GB VPS plans in stock, for a fresh start with room to grow

In stock when this page loaded. See all 6 matching plans

To compare what is available now, start with the cheapest RackNerd VPS guide and check the sales page.

More RackNerd guides