Debian Bookworm Enters LTS Soon
Debian 12 Bookworm is about to transition to long-term security support. A practical look at the LTS schedule and how to approach upgrading your LXC containers in Proxmox.
Fig. 1. Trixen B47, WA Maritime Museum, May 2019
Source: Adapted from [1]
Debian 12 Bookworm is about to be moved over to the long term security support team. Now might be a good time to make plans to upgrade.
| Status | Release | Architectures | Support Period |
|---|---|---|---|
| Previous LTS | Debian 6 “Squeeze” | i386, amd64 | June 2, 2014 – February 29, 2016 |
| Previous LTS | Debian 7 “Wheezy” | i386, amd64, armel, armhf | April 26, 2016 – May 31, 2018 |
| Previous LTS | Debian 8 “Jessie” | i386, amd64, armel, armhf | June 17, 2018 – June 30, 2020 |
| Previous LTS | Debian 9 “Stretch” | i386, amd64, armel, armhf, arm64 | July 6, 2020 – June 30, 2022 |
| Previous LTS | Debian 10 “Buster” | i386, amd64, armhf, arm64 | August 1, 2022 – June 30, 2024 |
| Current LTS | Debian 11 “Bullseye” | i386, amd64, armhf, arm64 | August 15, 2024 – August 31, 2026 |
| Future LTS | Debian 12 “Bookworm” | TBD | June 11, 2026 – June 30, 2028 |
| Future LTS | Debian 13 “Trixie” | TBD | August 9, 2028 – June 30, 2030 |
You can view the schedule page below:
Debian Long Term Support (LTS) — wiki.debian.org 🔗
Upgrading
I had about 29 containers still running in my own environment that needed upgrading. Many of these are daily drivers for various services I rely on. I considered wrapping the upgrade process into an Ansible Playbook but opted to do the patching manually this time due to Python 3 complications. The most notable breaking changes I’ve encountered are due to the new venv environments sometimes being required. Not an unexpected barrier, but it’s something to keep in mind if your service depends on it.
Here’s the full upgrade guide if you want to look it over.
Upgrading from Debian 12 (bookworm) — debian.org 🔗
Quick Upgrade LXC Containers
Since I had quite a few to do and I have perpetual backups of the most important data in the environment with a reasonable RTO (Recovery Time Objective), I have chosen to just depend on Proxmox snapshots as a fallback if things go very wrong.
I’ve included the process I settled into below:
First, check the currently installed version if you’re unsure. Always upgrade Debian in order of release. If you see version 11 (Bullseye), don’t skip straight to Trixie. Upgrade to 12 (Bookworm) first, and then to 13 (Trixie).
cat /etc/debian_versionCreate a snapshot from the CLI on your Proxmox host.
Note: replace 100 with your LXC ID to target the proper LXC.
pct snapshot 100 "pre_trixie_upgrade" --description "Manual upgrade to Debian 13"Now let’s be sure we have the latest packages installed for version 12.
sudo apt update && sudo apt upgrade -yNow is also a good time to purge any packages that aren’t in use.
sudo apt autoremove --purge -yCheck for any packages you may have held in place prior with apt, as you may want to handle that differently through the upgrade or take note of it.
sudo apt-mark showholdNow make a backup of the apt sources.
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bakWe can use sed to find and replace “bookworm” with “trixie” in the main Debian sources file. Note that there is a new apt sources format. If you’re a stickler for keeping your configs canonical, it’s worth looking into the new format, but it’s not necessary at this time.
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.listNow do the same thing for any additional sources created in sources.list.d.
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*.listNow we’re ready to check what packages differ between versions. Don’t rush this by tacking on && sudo apt upgrade. We want to make sure none of our sources have a problem with the changes made above. For example, one of my repos didn’t respond well to the “trixie” flag and instead required “all” since that repo covers all modern Debian releases.
sudo apt updateOnce you’ve investigated any source errors and apt update completed successfully, we can move on to the first batch upgrade without pulling in any new packages.
sudo apt upgrade --without-new-pkgs -yYou may get a few prompts during this process. Upgrades will typically ask whether you want to replace configuration files with the maintainer’s new version, or sometimes you’ll get a whiptail prompt asking what type of connection a web server should use. My recommendation during the upgrade process is to always keep the existing configuration unless you have a specific reason not to.
Now reboot the LXC. We want to smooth out any services that need to be restarted after that dramatic event.
Once it comes back to life and things look good, let’s upgrade all the remaining packages we held back earlier.
sudo apt full-upgrade -yPost Install Checks
Check for any failed services.
sudo systemctl list-units --state=failedCheck that the intended service is working as expected and clean up any leftovers.
sudo apt autoremove --purge -y && sudo apt cleanReferences
[1] Michielverbeek, "Trixen B47, WA Maritime Museum, May 2019," *Wikimedia Commons* 2019. [Online]. Available: https://commons.wikimedia.org/wiki/File:Trixen_B47,_WA_Maritime_Museum,_May_2019.jpg Accessed: Apr. 28, 2026.
[2] D. L. Team, "Debian Long Term Support (LTS)," *Debian Wiki* 2026. [Online]. Available: https://wiki.debian.org/LTS Accessed: Apr. 28, 2026.
[3] D. R. Team, "Upgrading from Debian 12 (bookworm)," *Debian.org* 2026. [Online]. Available: https://www.debian.org/releases/stable/release-notes/upgrading.html Accessed: Apr. 28, 2026.