Debian 13 “trixie” has been out for about a year, so I finally upgraded my small server from Debian 12 “bookworm”. Short version: boring, which is exactly what you want from Debian.

These are my notes, not a replacement for the official release notes. Read those first.

Before

# fully up to date on bookworm first
sudo apt update && sudo apt full-upgrade
# anything held or not from Debian?
apt-mark showhold
apt list '?narrow(?installed, ?not(?origin(Debian)))'

I also took a backup (restic, see this post) and a disk snapshot, and made sure I could reach the machine through a console in case SSH didn’t come back.

The upgrade

Switch the sources from bookworm to trixie:

sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list /etc/apt/sources.list.d/*.list

Then upgrade in two steps, as the release notes recommend:

sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade

For config files I’d changed (sshd_config, mostly), I looked at the diff and kept my version where the change was only mine.

After

sudo reboot
cat /etc/debian_version
sudo apt autoremove

trixie ships APT 3.0, which can convert old one-line .list files to the newer deb822 .sources format:

sudo apt modernize-sources

Then I checked that every service I care about was running:

systemctl --failed
journalctl -p err -b

systemctl --failed was empty, and the only errors in the journal were from a service I’d forgotten existed, which I removed.

Total time

About 40 minutes, most of it reading and preparing. The actual upgrade took less than ten.