News
New 1-Click Apps are now available in the Serverspace control panel
DS
Daniel Smith
May 13 2026
Updated May 13 2026

How to Install Ubuntu 26.04 LTS Server on a VPS and Perform Basic Setup

How to Install Ubuntu 26.04 LTS Server on a VPS and Perform Basic Setup

Ubuntu 26.04 LTS was released in April 2026 under the codename Resolute Raccoon. Like any LTS release, it is designed for long-term use — Canonical promises support until 2031, and with an Ubuntu Pro subscription, until 2036. For server infrastructure, that means five years of stable security updates without having to plan annual migrations.

An important nuance: most cloud providers at the time of the 26.04 release offer 24.04 LTS and 25.10 images, but not 26.04 directly. That is normal — Canonical has provided an official upgrade path, and it is well-tested. In this article, we will look at how to upgrade a server from 24.04 LTS or 25.10 to 26.04 LTS, and at the same time perform the basic security setup needed on any fresh or upgraded VPS.

What Is New in Ubuntu 26.04 LTS for Server Tasks

Before moving on to commands, it is worth understanding why upgrade at all. For server environments, 26.04 brought several significant changes.

OpenSSH has been updated to version 10.2p1. Support has been added for the post-quantum key exchange algorithm mlkem768x25519-sha256 — it is enabled by default and protects the connection even if sufficiently powerful quantum computers appear. Support for the weak DSA algorithm has been removed. The PerSourcePenalties option has appeared, which automatically blocks addresses that do not complete authentication. In addition, both service names now work — ssh.service and the alias sshd.service.

Chrony has replaced systemd-timesyncd. The new time synchronization daemon supports NTS (authenticated and encrypted NTP) and uses Ubuntu servers by default. When upgrading from 24.04, it must be installed separately — we will show how.

Key updates to the server stack: PostgreSQL has risen to version 18 with a new I/O subsystem (according to Canonical — up to three times faster when reading from disk), MySQL has been updated to 8.4 LTS, PHP to 8.5, and Django to 5.2 LTS. DocumentDB has appeared — a MongoDB-compatible database based on PostgreSQL. Valkey has been updated to 9.0.

sudo-rs and rust-coreutils. Starting with 26.04, sudo by default is the Rust implementation (sudo-rs), and the basic operating system utilities have also moved to Rust. For most tasks, you will not notice any difference, but it is worth knowing about if something behaves unexpectedly.

Linux kernel 7.0 with support for Intel Core Ultra Series 3, improved virtualization, and — importantly for servers — the real-time kernel is now available in the main archive without an Ubuntu Pro subscription.

cgroup v1 has been removed. If you have old configurations or containers tied to cgroup v1, you need to migrate them to cgroup v2 before upgrading.

Choosing the Starting Point: 24.04 LTS or 25.10

The path to 26.04 depends on which version you currently have. Ubuntu supports upgrading only from the previous release — you cannot jump from 22.04 straight to 26.04 with a single command.

Current version Upgrade path You get changes from Notes
24.04 LTS 24.04 → 26.04 directly 24.10, 25.04, 25.10, 26.04 Recommended path for production
25.10 25.10 → 26.04 directly Only changes in 26.04 Minimal amount of change
22.04 LTS 22.04 → 24.04 → 26.04 All intermediate releases Two stages, more time

If you are creating a VPS from scratch and the provider offers 24.04 — that is an excellent starting point. Canonical considers it the main “source” for upgrading to 26.04.

Step 0: Creating the VPS and First Connection

If you do not yet have a server — create one based on Ubuntu 24.04 LTS or 25.10. On VPS from Serverspace, the image is deployed in minutes: choose the configuration, operating system, set the root password or upload an SSH key — and the server is ready to use.

After startup, connect via SSH:

ssh root@

The system will ask you to confirm the server key fingerprint — type yes. If you are connecting from Windows, use the built-in OpenSSH (available since Windows 10) or PuTTY.

Step 1: Preparing the System Before the Upgrade

Do not rush the upgrade command. A few minutes of preparation will save you from problems during the process.

Update all current packages to the latest versions. Upgrading a system on top of outdated packages is a common cause of conflicts:

apt update && apt upgrade -y && apt autoremove -y

Install the release-upgrade utility if it is not already installed:

apt install update-manager-core -y

Check whether upgrades are configured for LTS releases. Open the configuration file:

cat /etc/update-manager/release-upgrades

The output should contain the line Prompt=lts. If it says Prompt=never — change the value to lts using any text editor.

Take a snapshot or backup. Most providers allow you to create a disk snapshot directly from the control panel. Do this before upgrading — rollback will take minutes, not hours of recovery from backup.

Make sure there is enough disk space. The upgrade requires at least 2–3 GB of free space:

df -h /

If you have less than 3 GB free — clear the package cache with apt clean.

Check compatibility with cgroup v2. In 26.04, cgroup v1 support has been completely removed. Make sure the system is already running on cgroup v2:

stat -fc %T /sys/fs/cgroup

If the answer is cgroup2fs — everything is fine. If you see tmpfs, the system is using cgroup v1 or hybrid mode, and you need to switch before upgrading.

Step 2: Starting the Upgrade to Ubuntu 26.04 LTS

On a VPS, it is best to run the upgrade in screen — if the connection is interrupted, the process will continue in the background:

apt install screen -y
screen -S upgrade

Now start the upgrade wizard:

do-release-upgrade

If the upgrade is not yet available through the standard channel (this can happen in the first weeks after a release), add the -d flag:

do-release-upgrade -d

If the connection drops — reconnect and restore the session:

screen -r upgrade

The wizard will display a list of changes and ask for confirmation. After that, the process is mostly automatic, but it will require several answers about configuration files.

The most common question is — “The configuration file has been changed. Keep the current version or replace it?” For files you have edited (SSH, Nginx, MySQL, etc.), choose N (keep) to preserve your settings. You can view the difference with D directly in the dialogue — this helps you make an informed decision.

At the end, the wizard will ask about rebooting — agree. The server will come back up in a minute or two.

Step 3: Verification After the Upgrade

After reboot, connect via SSH and check the system version:

lsb_release -a

The output should show Ubuntu 26.04 LTS and Resolute Raccoon. Check the kernel:

uname -r

The kernel should be version 7.0 or newer. Make sure there are no “broken” dependencies left:

apt --fix-broken install
apt autoremove -y
apt clean

After upgrading from 24.04, the system will usually offer to remove several dozen obsolete packages — that is normal, confirm it. Also check the logs for errors:

journalctl -p err -b

Step 4: Switching to Chrony (for those who upgraded from 24.04)

In 26.04, Chrony has replaced systemd-timesyncd as the main time synchronization daemon. When upgrading from 24.04, it needs to be installed manually:

apt-mark auto systemd-timesyncd
apt install chrony -y

After installation, make sure synchronization works:

chronyc tracking

The output should contain a Reference ID line with the NTP server address and System time with a small deviation — units of milliseconds are considered normal.

Step 5: Basic Security Setup

Regardless of whether you upgraded the system or created a new VPS — the basic security settings are the same. Let’s go through them step by step.

Creating a User and Setting Up sudo

Working permanently as root is dangerous: any typo in a command is applied immediately and irreversibly. Create a regular user and add it to the sudo group:

adduser deploy
usermod -aG sudo deploy

Check that sudo works — switch to the new user:

su - deploy
sudo whoami

If root is returned — everything is configured correctly. Note: in 26.04, the sudo command is now handled by the sudo-rs implementation, and behavior for standard scenarios is identical to classic sudo.

Setting Up SSH Keys

Passwords for SSH login are a weak point. Keys are more reliable: without the private part, it is impossible to access the server, even knowing the password. If you do not yet have a key pair — generate it on your machine (not on the server):

ssh-keygen -t ed25519 -C "your@email.com
"

The ed25519 algorithm is faster and more secure than old RSA. Copy the public key to the server:

ssh-copy-id deploy@

If ssh-copy-id is unavailable (for example, on Windows) — manually add the contents of the file ~/.ssh/id_ed25519.pub to ~/.ssh/authorized_keys on the server:

mkdir -p ~/.ssh
echo "YOUR_PUBLIC_KEY" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Disabling Password Login and Root Login

As soon as the keys are configured — disable password login. Open the SSH config:

sudo nano /etc/ssh/sshd_config

Find and set the following parameters:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Save the file (Ctrl+O, then Ctrl+X) and restart SSH. In 26.04, both service names work:

sudo systemctl restart ssh

Important: do not close your current session. Open a second terminal and make sure you can log in with the key — only after a successful check can you close the old window.

Configuring the UFW Firewall

First allow SSH, and only then enable the firewall — otherwise you risk locking yourself out:

sudo ufw allow OpenSSH
sudo ufw enable

For a web server, add ports 80 and 443:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Check the status and the list of rules:

sudo ufw status verbose

Step 6: Additional Settings

Two small steps that are often forgotten after an upgrade.

Time zone. By default, the server runs in UTC. If you need Moscow time:

sudo timedatectl set-timezone Europe/Moscow

Hostname. Helps distinguish servers when there are several:

sudo hostnamectl set-hostname my-server

What Else to Configure — Extended Checklist

Task Why it is needed Tool
Automatic security updates Patches are applied without manual intervention unattended-upgrades
Protection against password guessing Blocks IPs after several failed login attempts fail2ban
Resource monitoring Shows what is consuming CPU, RAM, disk htop, glances
Database upgrades PostgreSQL 18, MySQL 8.4 require separate steps for data pg_upgradecluster, official guides
Backups Recovery after failures and mistakes rsync, provider snapshots
Checking System V scripts systemd 259 is the last release with init-script support Conversion to systemd unit files
Checking sudo-rs Make sure it is compatible, especially when using LDAP sudo --version

Practical Use Cases for Ubuntu 26.04 LTS Server on a VPS

Web hosting and CMS. A server with Nginx, PHP 8.5, and a database is the standard stack for WordPress, Drupal, or any other PHP system. PHP 8.5 brought property hooks, the pipe operator, and an improved DOM API, which is noticeable in modern frameworks like Laravel and Symfony.

Backend for a web or mobile application. Python, Node.js, Go — all of this is easy to deploy on Ubuntu. With systemd 259, you can configure autostart and monitoring without additional tools. It is worth noting that systemd 259 in 26.04 is the last release with support for System V init scripts: if you have old init.d scripts, now is the time to convert them into unit files.

Databases. PostgreSQL 18 with the new I/O subsystem is suitable for heavily loaded projects — Canonical reports disk read acceleration of up to three times in some scenarios. MySQL 8.4 LTS, unlike 8.0, is supported long-term. If you need a MongoDB-compatible database — DocumentDB is now available directly from the Ubuntu repository.

AI/ML workloads. In 26.04, NVIDIA CUDA Toolkit and AMD ROCm 7.1.0 have been added to the official Ubuntu archive. If your VPS has a GPU — installing them is now easier than before: sudo apt install cuda-toolkit without additional third-party repositories.

Secure infrastructure. OpenSSL supports post-quantum algorithms (ML-KEM, ML-DSA, SLH-DSA), and OpenSSH uses the hybrid post-quantum key exchange mlkem768x25519-sha256 by default. For projects with higher security requirements, this is a noticeable step forward without any additional configuration on your side.

Common Mistakes and How to Avoid Them

Upgrading without a snapshot. If something goes wrong during the upgrade, reverting to a working state without a snapshot will be long and painful. Create a snapshot through the provider panel before starting — it takes a minute.

Not updating packages before upgrading. do-release-upgrade works better on a fully updated system. Run apt update && apt upgrade -y immediately before starting, even if you did it recently.

Running the upgrade without screen or tmux. An upgrade from 24.04 takes 20–40 minutes. If the SSH connection drops in the middle — the process will stop in an undefined state. Always use screen -S upgrade.

Replacing all configuration files with new versions. When the upgrade wizard offers to overwrite a modified configuration file — for everything you have edited (SSH, Nginx, PHP, MySQL), choose N to keep your version. If you are unsure — press D to view the diff directly in the dialogue.

Ignoring the removal of cgroup v1. Older versions of Docker, LXC, or some systemd units may depend on cgroup v1. Check this before upgrading: the command stat -fc %T /sys/fs/cgroup should return cgroup2fs.

Not configuring Chrony after upgrading from 24.04. After the upgrade, systemd-timesyncd will technically continue to work, but Chrony provides encrypted synchronization via NTS and keeps time more accurately. Installation takes a minute, and the difference is noticeable on servers with heavy network load.

Forgetting to check logs after the upgrade. A few hours after the update is a good time to browse the system journal:

journalctl -p err -b

This command shows only errors since the last boot — fast and to the point.

Conclusion

Upgrading a VPS to Ubuntu 26.04 LTS is not a one-time operation, but a deliberate move to a platform supported until 2031. From 24.04 LTS, the path takes one step: do-release-upgrade in a screen session, a few answers to configuration questions, a reboot — and the server is on the new system.

The key benefits for server tasks are out-of-the-box post-quantum SSH, Chrony with NTS encryption, PostgreSQL 18 with a redesigned I/O subsystem, PHP 8.5, MySQL 8.4 LTS, the real-time kernel without Ubuntu Pro, and official CUDA and ROCm support in the archive. For most projects, these are tangible improvements that come without extra effort after the upgrade.

Deploy Ubuntu 24.04 LTS on a VPS Serverspace — and within an hour you will have a ready-to-use 26.04 server with basic security configured.

Frequently Asked Questions

Can Ubuntu 26.04 be installed directly, without upgrading?
Only if the provider supplied a ready-made 26.04 image. If not — take 24.04 or 25.10 and upgrade with do-release-upgrade. This is the official and well-tested path.
What should I choose as the starting point — 24.04 or 25.10?
For a production server — 24.04 LTS. It is more stable, supported longer, and the upgrade to 26.04 from it is well documented. 25.10 is an intermediate release, used if you need specific packages from a newer snapshot. Support for 25.10 ends in April 2026, so it is not worth staying on it for long.
How long does the upgrade take?
From 25.10 — about 15–20 minutes. From 24.04 LTS — 30–40 minutes, sometimes longer on a slow connection. Most of the time is spent downloading packages; the installation itself is fast.
What is sudo-rs and should I worry about the switch?
sudo-rs is the Rust implementation of sudo, which replaced the classic one by default in 26.04. For most scenarios it is fully compatible. If you used sudo-ldap — note: this package has been removed, and you need to switch to LDAP via PAM.
Do PostgreSQL or MySQL need to be updated separately after the system upgrade?
Yes. The packages will be updated to the new versions, but the data in the database remains in the old format. PostgreSQL requires an explicit run of pg_upgradecluster. MySQL 8.4 starts migration automatically, but for production it is better to make a dump before upgrading the system. Read the official documentation for your DBMS before starting the upgrade.
What should I do if the upgrade ends with an error?
The first step is to check the logs: cat /var/log/dist-upgrade/main.log. Often the problem is “broken” dependencies — apt --fix-broken install fixes them, after which you can repeat do-release-upgrade. If the situation is serious — restore from the snapshot you made before upgrading.

You might also like...

We use cookies to make your experience on the Serverspace better. By continuing to browse our website, you agree to our
Use of Cookies and Privacy Policy.