Diese Anleitung beschreibt das Upgrade eines Ubuntu Servers von Ubuntu 22.04 LTS auf Ubuntu 24.04 LTS.
Stand: 2026-05-09
Upgrade eines bestehenden Ubuntu Servers von Ubuntu 22.04 LTS auf Ubuntu 24.04 LTS.
Besonderheiten dieses Servers:
Vor dem Upgrade muss ein funktionierendes Backup vorhanden sein.
Ein Release Upgrade kann Paketquellen, Dienste, Konfigurationsdateien und Abhängigkeiten verändern. Besonders bei Docker, Nextcloud, Apache, SSH und Firewall Regeln muss vorsichtig gearbeitet werden.
Das Upgrade sollte möglichst in einem Wartungsfenster durchgeführt werden.
Wenn möglich, zusätzlich zur SSH Verbindung eine Konsole des Providers, eine VM Konsole, IPMI, iLO oder eine andere Notfallkonsole bereithalten.
Das Upgrade sollte in tmux oder screen gestartet werden, damit es bei einer unterbrochenen SSH Verbindung weiterläuft.
Nicht verwenden:
sudo do-release-upgrade -d
Der Parameter -d ist für Entwicklungs oder vorgezogene Upgrade Pfade gedacht und sollte auf produktiven Servern nicht verwendet werden.
lsb_release -a uname -r hostnamectl
Erwartet vor dem Upgrade:
Ubuntu 22.04.x LTS Codename: jammy
Vor dem Upgrade muss ein vollständiges und geprüftes Backup vorhanden sein.
Mindestens sichern:
sudo tar -czf /root/backup-etc-$(date +%F).tar.gz /etc
Pfad zum Docker Compose Projekt prüfen:
cd /pfad/zum/docker-compose-verzeichnis pwd ls -la
Beispiel Backup:
sudo tar -czf /root/backup-docker-compose-$(date +%F).tar.gz /pfad/zum/docker-compose-verzeichnis
docker ps docker ps -a docker volume ls docker network ls docker compose version docker version
Bei Nextcloud unter Docker müssen besonders gesichert werden:
Datenbankcontainer anzeigen:
docker ps
Beispiel für einen Datenbankdump bei MariaDB oder MySQL:
docker exec -it DATENBANK_CONTAINER_NAME mysqldump -u root -p --all-databases > /root/backup-mysql-$(date +%F).sql
Hinweis: Containername, Datenbankbenutzer und Datenbankname müssen zur eigenen Installation passen.
grep -E "PubkeyAuthentication|AuthorizedKeysFile|PasswordAuthentication" /etc/ssh/sshd_config
Wenn vorhanden:
sudo cp /etc/ssh/sshd_config /root/backup-sshd_config-$(date +%F)
systemctl status ssh systemctl status ssh.socket
Während des Upgrades kann ein zusätzlicher SSH Port 1022 verwendet werden. Der Ubuntu Release Upgrader bietet diesen Port häufig als Notfallzugang an.
sudo ufw allow 1022/tcp sudo ufw status numbered
SSH Status prüfen:
systemctl status ssh --no-pager ss -tlnp | grep -E ':22|:1022'
sudo apt install tmux
tmux starten:
tmux
Das Upgrade danach innerhalb der tmux Sitzung starten.
sudo apt update
Bestehende Ubuntu 22.04 Installation vollständig aktualisieren:
sudo apt dist-upgrade -o APT::Get::Always-Include-Phased-Updates=true
Nicht mehr benötigte Pakete entfernen:
sudo apt autoremove --purge
Falls Pakete zurückgehalten werden:
apt list --upgradable apt-mark showhold
Paketstatus prüfen:
sudo apt --fix-broken install sudo dpkg --audit apt-mark showhold
df -h df -h / /boot /var
test -f /run/reboot-required && echo "Reboot erforderlich"
sudo reboot
Nach dem Reboot erneut anmelden und prüfen:
lsb_release -a uname -r systemctl --failed
sudo apt install update-manager-core
cat /etc/update-manager/release-upgrades
Dort muss stehen:
Prompt=lts
Falls nicht, Datei bearbeiten:
sudo nano /etc/update-manager/release-upgrades
Oder per Befehl setzen:
sudo sed -i 's/^Prompt=.*/Prompt=lts/' /etc/update-manager/release-upgrades
ls -la /etc/apt/sources.list.d/ grep -R "^deb " /etc/apt/sources.list /etc/apt/sources.list.d/
Typische Drittquellen:
Der Release Upgrader deaktiviert Drittanbieterquellen häufig automatisch. Nach dem Upgrade müssen sie für noble wieder korrekt aktiviert werden.
lsb_release -cs
Vor dem Upgrade sollte hier stehen:
jammy
Nach dem Upgrade sollte hier stehen:
noble
Docker Compose Verzeichnis öffnen:
cd /pfad/zum/docker-compose-verzeichnis
Status prüfen:
docker compose ps
Optional Container stoppen:
docker compose down
Nur stoppen, wenn ein Backup vorhanden ist und klar ist, wie die Dienste wieder gestartet werden.
sudo do-release-upgrade
Bei manuell angepassten Diensten wie Apache, SSH, UFW, Docker oder Fail2Ban im Zweifel zuerst Unterschiede anzeigen lassen.
Nach Abschluss des Upgrades neu starten:
sudo reboot
Danach Version prüfen:
lsb_release -a uname -r hostnamectl
Erwartet:
Ubuntu 24.04.x LTS Codename: noble
sudo apt update
grep -R "^deb " /etc/apt/sources.list /etc/apt/sources.list.d/
Es sollten keine alten jammy Quellen aktiv sein, außer bewusst und begründet.
grep -R "jammy" /etc/apt/sources.list /etc/apt/sources.list.d/
ls -la /etc/apt/sources.list.d/ cat /etc/apt/sources.list.d/docker.list 2>/dev/null
Docker Quelle muss nach dem Upgrade auf noble zeigen, nicht auf jammy.
sudo apt update sudo apt upgrade sudo apt autoremove --purge sudo apt clean
systemctl --failed
journalctl -p 3 -xb
sudo dpkg --audit sudo apt --fix-broken install
systemctl status ssh --no-pager systemctl status ssh.socket --no-pager ss -tlnp | grep -E ':22|:1022'
Neue SSH-Verbindung in separatem Terminal testen BEVOR Port 1022 geschlossen wird
diff /root/backup-sshd_config-$(date +%F) /etc/ssh/sshd_config
Ab Ubuntu 24.04 kann SSH über systemd Socket Activation laufen. Deshalb zusätzlich ssh.socket prüfen.
sudo ufw delete allow 1022/tcp sudo ufw status numbered
sudo ufw status verbose
Typische erlaubte Ports:
22/tcp 80/tcp 443/tcp
Falls temporär verwendet:
1022/tcp
Regeln prüfen:
sudo ufw status numbered
sudo apache2ctl configtest
Apache Status prüfen:
systemctl status apache2 --no-pager
Apache neu laden:
sudo systemctl reload apache2
sudo apache2ctl -S
apache2ctl -M
Wichtige Module für Reverse Proxy:
Prüfung:
apache2ctl -M | grep -E "proxy|ssl|rewrite|headers"
snap list
sudo certbot certificates
sudo certbot renew --dry-run
systemctl list-timers | grep -i certbot systemctl list-timers | grep -i snap
docker version docker compose version
systemctl status docker --no-pager
docker ps docker ps -a
Falls Container vor dem Upgrade gestoppt wurden:
cd /pfad/zum/docker-compose-verzeichnis docker compose up -d
docker compose logs --tail=100
docker ps
docker logs --tail=100 NEXTCLOUD_CONTAINER_NAME
docker exec -u www-data -it NEXTCLOUD_CONTAINER_NAME php occ status
docker exec -u www-data -it NEXTCLOUD_CONTAINER_NAME php occ maintenance:mode
docker exec -u www-data -it NEXTCLOUD_CONTAINER_NAME php occ integrity:check-core
Hinweis: Containername und Benutzer können je nach Image abweichen.
ip addr ip route
resolvectl status
ping -c 4 1.1.1.1 ping -c 4 ubuntu.com
ss -tulpen
Alle fehlgeschlagenen Dienste anzeigen:
systemctl --failed
Wichtige Dienste einzeln prüfen:
systemctl status ssh --no-pager systemctl status apache2 --no-pager systemctl status docker --no-pager systemctl status ufw --no-pager
Logs prüfen:
journalctl -p 3 -xb journalctl -u apache2 -n 100 --no-pager journalctl -u docker -n 100 --no-pager journalctl -u ssh -n 100 --no-pager
Installierte Kernel anzeigen:
dpkg -l | grep linux-image
Nicht mehr benötigte Pakete entfernen:
sudo apt autoremove --purge
System bereinigen:
sudo apt clean
Folgende Punkte müssen erfolgreich sein:
Befehle:
lsb_release -a uname -r sudo apt update systemctl --failed journalctl -p 3 -xb sudo apache2ctl configtest sudo certbot renew --dry-run docker ps sudo ufw status verbose
Falls Port 1022 nur für das Upgrade geöffnet wurde:
sudo ufw delete allow 1022/tcp sudo ufw status numbered
Falls das Upgrade fehlschlägt:
Wichtige Logs:
/var/log/dist-upgrade/ /var/log/apt/ /var/log/syslog
Anzeigen:
ls -la /var/log/dist-upgrade/ less /var/log/dist-upgrade/main.log less /var/log/dist-upgrade/apt.log
sudo ufw allow 1022/tcp sudo apt update sudo apt dist-upgrade -o APT::Get::Always-Include-Phased-Updates=true sudo apt autoremove --purge sudo reboot sudo apt install update-manager-core \\ cat /etc/update-manager/release-upgrades sudo do-release-upgrade sudo reboot lsb_release -a \\ sudo apt update \\ systemctl --failed \\ journalctl -p 3 -xb \\ sudo apache2ctl configtest \\ sudo certbot renew --dry-run \\ docker ps \\ sudo ufw status verbose \\
Nach erfolgreichem Abschluss läuft der Server auf:
Ubuntu 24.04 LTS Noble Numbat
Alle produktiven Dienste wurden geprüft.