Benutzer-Werkzeuge

Webseiten-Werkzeuge


ubuntu:ubuntu_24.04_1

Dies ist eine alte Version des Dokuments!


Ubuntu Server 22.04 LTS auf 24.04 LTS upgraden

Diese Anleitung beschreibt das Upgrade eines Ubuntu Servers von Ubuntu 22.04 LTS auf Ubuntu 24.04 LTS.

Stand: 2026-05-09

Ziel

Upgrade eines bestehenden Ubuntu Servers von Ubuntu 22.04 LTS auf Ubuntu 24.04 LTS.

Besonderheiten dieses Servers:

* Ubuntu Server
* SSH-Zugriff
* UFW Firewall
* Apache als Reverse Proxy
* Let's Encrypt und Certbot via Snap
* Docker
* Docker Compose
* Nextcloud unter Docker

Wichtige Hinweise

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.

Offizielle Quellen

1. Aktuelle Systemversion prüfen

\\
lsb_release -a\\
uname -r\\
hostnamectl\\

Erwartet vor dem Upgrade:

\\
Ubuntu 22.04.x LTS\\
Codename: jammy\\

2. Backup erstellen

Vor dem Upgrade muss ein vollständiges und geprüftes Backup vorhanden sein.

Mindestens sichern:

* /etc
* Docker Compose Verzeichnisse
* .env Dateien
* Docker Volumes
* Datenbanken
* Nextcloud Datenverzeichnis
* Apache Konfiguration
* Certbot und Let's Encrypt Konfiguration
* wichtige eigene Skripte
* Cronjobs
* UFW Regeln

2.1 /etc sichern

\\
sudo tar -czf /root/backup-etc-$(date +%F).tar.gz /etc\\

2.2 Docker Compose Verzeichnisse sichern

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\\

2.3 Docker Status prüfen

\\
docker ps\\
docker ps -a\\
docker volume ls\\
docker network ls\\
docker compose version\\
docker version\\

2.4 Nextcloud Backup prüfen

Bei Nextcloud unter Docker müssen besonders gesichert werden:

* Nextcloud Datenverzeichnis
* Nextcloud config.php
* Datenbank
* Docker Compose Datei
* .env Datei
* eventuell externe App Daten

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.

3. SSH Zugriff absichern

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.

Port 1022 in UFW erlauben:

\\
sudo ufw allow 1022/tcp\\
sudo ufw status numbered\\

SSH Status prüfen:

\\
systemctl status ssh --no-pager\\
ss -tlnp | grep -E ':22|:1022'\\

tmux installieren:

\\
sudo apt install tmux\\

tmux starten:

\\
tmux\\

Das Upgrade danach innerhalb der tmux Sitzung starten.

4. System vollständig aktualisieren

Paketlisten aktualisieren:

\\
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\\

Paketstatus prüfen:

\\
sudo apt --fix-broken install\\
sudo dpkg --audit\\
apt-mark showhold\\

Freien Speicherplatz prüfen:

\\
df -h\\
df -h / /boot /var\\

Falls Pakete zurückgehalten werden:

\\
apt list --upgradable\\
apt-mark showhold\\

Zurückgehaltene Pakete zuerst bewusst prüfen und beheben.

5. Reboot vor dem Release Upgrade

Prüfen, ob ein Reboot erforderlich ist:

\\
test -f /run/reboot-required && echo "Reboot erforderlich"\\

Server neu starten:

\\
sudo reboot\\

Nach dem Reboot erneut anmelden und prüfen:

\\
lsb_release -a\\
uname -r\\
systemctl --failed\\

6. Upgrade Tool vorbereiten

update-manager-core installieren:

\\
sudo apt install update-manager-core\\

Konfiguration prüfen:

\\
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\\

7. Drittanbieter Paketquellen prüfen

Vor dem Upgrade alle zusätzlichen Paketquellen prüfen:

\\
ls -la /etc/apt/sources.list.d/\\
grep -R "^deb " /etc/apt/sources.list /etc/apt/sources.list.d/\\

Typische Drittquellen:

* Docker
* Google
* Microsoft
* NodeSource
* PostgreSQL
* MariaDB
* Grafana
* sonstige PPAs

Der Release Upgrader deaktiviert Drittanbieterquellen häufig automatisch. Nach dem Upgrade müssen sie für noble wieder korrekt aktiviert werden.

Aktuellen Ubuntu Codename prüfen:

\\
lsb_release -cs\\

Vor dem Upgrade sollte hier stehen:

\\
jammy\\

Nach dem Upgrade sollte hier stehen:

\\
noble\\

8. Optional Docker und Nextcloud vor dem Upgrade stoppen

Bei produktiven Diensten Wartungsfenster einplanen.

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.

9. Release Upgrade starten

Upgrade starten:

\\
sudo do-release-upgrade\\

Während des Upgrades:

* Fragen aufmerksam lesen
* keine Paketentfernungen blind bestätigen
* bei Konfigurationsdateien bewusst entscheiden
* Unterschiede anzeigen lassen, wenn lokale Änderungen vorhanden sind
* bei SSH Hinweis Port 1022 offen lassen
* bei Aufforderung zum Neustart bestätigen

Typische Frage bei Konfigurationsdateien:

* lokale Version behalten
* Paketbetreuer Version installieren
* Unterschiede anzeigen

Bei manuell angepassten Diensten wie Apache, SSH, UFW, Docker oder Fail2Ban im Zweifel zuerst Unterschiede anzeigen lassen.

10. Reboot nach dem Upgrade

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\\

11. Paketquellen nach dem Upgrade prüfen

Paketquellen prüfen:

\\
sudo apt update\\

Alle Quellen kontrollieren:

\\
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.

Nach alten Einträgen suchen:

\\
grep -R "jammy" /etc/apt/sources.list /etc/apt/sources.list.d/\\

Falls Docker Quelle deaktiviert wurde:

\\
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.

12. System nachbereinigen

Paketstatus prüfen:

\\
sudo apt update\\
sudo apt upgrade\\
sudo apt autoremove --purge\\
sudo apt clean\\

Fehlerhafte Dienste anzeigen:

\\
systemctl --failed\\

Fehler im aktuellen Boot anzeigen:

\\
journalctl -p 3 -xb\\

Pakete mit Problemen prüfen:

\\
sudo dpkg --audit\\
sudo apt --fix-broken install\\

13. SSH nach dem Upgrade prüfen

Status prüfen:

\\
systemctl status ssh --no-pager\\
systemctl status ssh.socket --no-pager\\
ss -tlnp | grep -E ':22|:1022'\\

Ab Ubuntu 24.04 kann SSH über systemd Socket Activation laufen. Deshalb zusätzlich ssh.socket prüfen.

Falls SSH funktioniert und Port 1022 nicht mehr benötigt wird:

\\
sudo ufw delete allow 1022/tcp\\
sudo ufw status numbered\\

14. UFW Firewall prüfen

Status anzeigen:

\\
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\\

15. Apache Reverse Proxy prüfen

Apache Konfiguration testen:

\\
sudo apache2ctl configtest\\

Apache Status prüfen:

\\
systemctl status apache2 --no-pager\\

Apache neu laden:

\\
sudo systemctl reload apache2\\

Aktive Virtual Hosts prüfen:

\\
sudo apache2ctl -S\\

Aktive Module prüfen:

\\
apache2ctl -M\\

Wichtige Module für Reverse Proxy:

* proxy
* proxy_http
* headers
* ssl
* rewrite

Prüfung:

\\
apache2ctl -M | grep -E "proxy|ssl|rewrite|headers"\\

16. Let's Encrypt und Certbot prüfen

Snap prüfen:

\\
snap list\\

Certbot Zertifikate prüfen:

\\
sudo certbot certificates\\

Renewal Test durchführen:

\\
sudo certbot renew --dry-run\\

Timer prüfen:

\\
systemctl list-timers | grep -i certbot\\
systemctl list-timers | grep -i snap\\

17. Docker nach dem Upgrade prüfen

Docker Version prüfen:

\\
docker version\\
docker compose version\\

Docker Dienst prüfen:

\\
systemctl status docker --no-pager\\

Container prüfen:

\\
docker ps\\
docker ps -a\\

Falls Container vor dem Upgrade gestoppt wurden:

\\
cd /pfad/zum/docker-compose-verzeichnis\\
docker compose up -d\\

Logs prüfen:

\\
docker compose logs --tail=100\\

18. Nextcloud nach dem Upgrade prüfen

Docker Container prüfen:

\\
docker ps\\

Nextcloud Logs prüfen:

\\
docker logs --tail=100 NEXTCLOUD_CONTAINER_NAME\\

Nextcloud Status per occ prüfen:

\\
docker exec -u www-data -it NEXTCLOUD_CONTAINER_NAME php occ status\\

Maintenance Mode prüfen:

\\
docker exec -u www-data -it NEXTCLOUD_CONTAINER_NAME php occ maintenance:mode\\

Core Integrität prüfen:

\\
docker exec -u www-data -it NEXTCLOUD_CONTAINER_NAME php occ integrity:check-core\\

Hinweis: Containername und Benutzer können je nach Image abweichen.

19. Netzwerk prüfen

IP Adressen prüfen:

\\
ip addr\\
ip route\\

DNS prüfen:

\\
resolvectl status\\

Erreichbarkeit prüfen:

\\
ping -c 4 1.1.1.1\\
ping -c 4 ubuntu.com\\

Offene Ports prüfen:

\\
ss -tulpen\\

20. Dienste prüfen

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\\

21. Alte Kernel und Pakete prüfen

Installierte Kernel anzeigen:

\\
dpkg -l | grep linux-image\\

Nicht mehr benötigte Pakete entfernen:

\\
sudo apt autoremove --purge\\

System bereinigen:

\\
sudo apt clean\\

22. Abschlussprüfung

Folgende Punkte müssen erfolgreich sein:

* Server startet ohne Fehler
* SSH funktioniert
* UFW Regeln passen
* Apache Konfiguration ist gültig
* HTTPS Zertifikate funktionieren
* Docker läuft
* Nextcloud ist erreichbar
* keine fehlgeschlagenen systemd Dienste
* keine alten jammy Paketquellen aktiv
* apt update läuft fehlerfrei
* journalctl zeigt keine kritischen neuen Fehler

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\\

23. Temporäre Freigaben entfernen

Falls Port 1022 nur für das Upgrade geöffnet wurde:

\\
sudo ufw delete allow 1022/tcp\\
sudo ufw status numbered\\

24. Rollback

Falls das Upgrade fehlschlägt:

* nicht weiter blind reparieren
* Fehlermeldungen sichern
* Logs sichern
* Backup prüfen
* bei VM Snapshot zurückspielen
* bei Bare Metal Restore aus Backup planen

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\\

25. Kurzfassung

\\
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\\

Ergebnis

Nach erfolgreichem Abschluss läuft der Server auf:

\\
Ubuntu 24.04 LTS Noble Numbat\\

Alle produktiven Dienste wurden geprüft.

ubuntu/ubuntu_24.04_1.1778315297.txt.gz · Zuletzt geändert: von franz

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki