Der definitive RHEL 10 Guide
Red Hat Enterprise Linux (RHEL)⌗
==Aktualisiert am 25.05.2026==
Übersicht⌗
Seit einigen Jahren ist CentOS kein produktionstauglicher RHEL-Klon mehr. Wer RHEL produktiv nutzen will, aber nicht dafür bezahlen kann, hat die Qual der Wahl: zwischen AlmaLinux, CentOS Stream (nicht für Langzeitnutzung), Oracle Linux, RHEL via Developer Subscription und Rocky Linux. Alle sind mehr oder weniger 1:1 Klone von RHEL.
Die meisten Informationen in diesem Artikel gelten auch für AlmaLinux sowie für die restlichen Klone. Oft beziehe ich mich daher im Text einfach auf RHEL (Red Hat Enterprise Linux), also das zugrundeliegende Original. Es gibt aber auch ein paar feine Unterschiede zwischen dem Original und seinen Klonen.
Red Hat hat RHEL 10 für x86_v3 kompiliert und unterstützt damit nur relativ moderne Intel- und AMD-CPUs. Deswegen läuft RHEL 10 auf älteren Computern nicht mehr! Ein Intel Prozessor ab 6. Generation wird vorausgesetzt, das Weglassen der x86_v2 Mikrocodearchitektur bringt modernen Maschinen ein paar Prozent mehr Leistung. Wer RHEL 10 dennoch auf älteren Maschinen laufen lassen will, hat mit AlmaLinux 10_x86_v2 eine Lösung.
AlmaLinux versus Original (RHEL)⌗
Im Wesentlichen verwendet AlmaLinux den gleichen Quellcode wie RHEL und ist zu diesem vollständig kompatibel. Es gibt aber ein paar feine Unterschiede:
Seit RHEL den Zugang zum Quellcode für die Updates erschwert hat ( siehe hier ), greift AlmaLinux auch auf den Upstream-Quellcode einzelner Projekte zu, führt Bugfixes/Sicherheits-Updates zum Teil früher durch als RHEL und besteht nicht mehr auf eine vollständige Bit-für-Bit- und Bug-für-Bug-Kompatibilität.
AlmaLinux bietet neben der regulären v3-Variante eine v2-Variante an und unterstützt damit auch ältere Hardware. Von der Mikroarchitektur-Unterscheidung zwischen v2 und v3 ist Linus Torvalds auch nicht gerade begeistert .
Der Verzicht auf Bit-für-Bit-Kompatibilität gibt AlmaLinux die Möglichkeit, sich in einigen Details vom Original abzuheben. Das betrifft unter anderem die Unterstützung von Frame Pointers als Debugging-Hilfe sowie die fortgesetzte Unterstützung des Protokolls Spice.
AlmaLinux vs RockyLinux und Oracle Linux⌗
In der Vergangenheit waren alle Klone praktisch gleich. Nun gut, Oracle hat immer einen eigenen »unbreakable« Kernel angeboten, aber davon abgesehen war das gesamte Paketangebot Bit für Bit kompatibel zum Original, kompiliert aus den gleichen Quellen. Die Extrapakete aus der EPEL-Quelle sind sowieso für das Original und seine Klone identisch.
Seit Red Hat 2023 den Zugriff auf den Source-Code aller Updates eingeschränkt bzw. deutlich unbequemer gemacht hat, haben sich AlmaLinux auf der einen und Rocky Linux und Oracle Linux auf der anderen Seite ein wenig auseinander entwickelt. AlmaLinux hat den Anspruch auf Bit-für-Bit-Kompatibilität aufgegeben (siehe oben). Rocky Linux und Oracle Linux beziehen den Quellcode für Updates hingegen nun aus anderen öffentlichen Quellen, unter anderem aus Cloud- und Container-Systemen.
RHEL Developer⌗
Für Entwickler macht Red Hat mit dem Red Hat Developer eigentlich ein attraktives Angebot. Nach einer Registrierung gibt es 16 freie Lizenzen für Tests und Entwicklungsarbeit. Ich habe einen entsprechenden Account, habe RHEL 10 installiert und registriert. Ich werde im Folgenden aufführen, wie wir ein RHEL 10 zu einem produktiven Workstation-System einrichten, an dem wir uns die nächsten 10 Jahre erfreuen können, ohne ständige Änderungen und Neuerungen in Kauf nehmen zu müssen.
Dieser Artikel richtet sich also an alle, denen Fedora (Silverblue) zu hektisch ist und die von großen Updates alle 6 Monate genervt sind.
Wie auch schon im Artikel Der definitive Fedora Silverblue Guide beschrieben, wenden wir gewonnene Erkenntnisse an und nutzen diese mit RHEL. Wir werden also auch hier Flatpaks nutzen und alles im Home-Verzeichnis installieren für einfache Administration, Sicherheit und Backupfähigkeit.
FIRST THINGS FIRST⌗
SUBSCRIPTION AKTIVIEREN⌗
Registriere dich für eine RHEL Developper Subscription und aktiviere dene RHEL Installation kostenlos mit diesem Befehl (passe Passwort und Benutzername natürlich noch an)
sudo subscription-manager register --username BENUTZERNAME --password PASSWORT
COCKPIT AKTIVIEREN⌗
RHEL Cockpit (auch bekannt als RHEL Web-Konsole) ist eine offizielle, webbasierte grafische Verwaltungsoberfläche für Red Hat Enterprise Linux. Es ermöglicht Administratoren und Einsteigern, Server direkt im Webbrowser zu überwachen und zu steuern, ohne komplexe Befehle in das Terminal eingeben zu müssen. Diese kannst du wie folgt aktivieren:
sudo dnf install cockpit
#Den Dienst aktivieren
sudo systemctl enable --now cockpit.socket
#Cockpit in der Firewall freigeben
sudo firewall-cmd --permanent --add-service=cockpit
sudo firewall-cmd --reload
Es gibt auch ein Plugin zum verwalten der VirtManager VMs für Copilot, somit hast du ein “Proxmox light” gleich mit eingebaut.
sudo dnf install cockpit-machines
Erreichber ist die WebUI dann unter Portnummer 9090: https://IP-ADRESSE_DES_SERVERS:9090
RHEL AI LIGHTSPEED⌗
Direkt in Dein RHEL-Betriebssystem integriert, fungiert dieser KI-Assistent als intelligenter Helfer. Er ist direkt über die Befehlszeile (CLI) verfügbar (z. B. aufrufbar durch einfaches Tippen von C gefolgt von Ihrer Frage).
c "Wie kannst du mir Helfen?" oder cla "wie kann ich die Weltherrschaft an mich reißen?"
Installieren kannst du es so:
sudo dnf install command-line-assistant
RHEL DESKTOP⌗
Zunächst sorgen wir für optimale Downloadzeiten bei den Paketinstallationen.
Mit sudo nano /etc/dnf/dnf.conf fügen wir folgende Zeilen der dnf.conf hinzu:
fastestmirror=True
max_parallel_downloads=10
defaultyes=True
==strg== + ==o== zum Speichern, ==strg== + ==x== zum Beenden
Dann aktivieren wir bei Bedarf das Webinterface Cockpit zum Administrieren per Webinterface:
systemctl enable --now cockpit.socket
oder zum Deaktivieren:
systemctl disable --now cockpit.socket
RHEL hat extrem wenig Pakete nach der Standardinstallation verfügbar, beispielsweise ist Syncthing nicht Teil der Standard-Repos. Also aktivieren wir zusätzliche Software-Quellen: EPEL, CRB, Flathub:
The CodeReady Linux Builder repository (nur für RHEL 10, nicht für AlmaLinux etc.!)
subscription-manager repos --enable codeready-builder-beta-for-rhel-10-$(arch)-rpms
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
The CodeReady Linux Builder repository (für AlmaLinux etc.!)
sudo dnf config-manager --set-enabled crb
Aus dem crb-repo kann dann z.B. virt-manager installiert werden:
crb enable
dnf install virt-manager
Flathub und Fedora Flatpak als Benutzer-Repository:
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists fedora oci+https://registry.fedoraproject.org
Flatpak sollte schon installiert sein, wenn nicht muss dieses vorher mit sudo dnf install flatpak installiert werden.
Das Firefox RPM-Paket ersetzen wir nun durch das Firefox-Flatpak:
Achtung: Danach müssen Lesezeichen und Plugins neu eingerichtet werden, also ggf. vorher sichern!
sudo dnf remove firefox
flatpak install flathub org.mozilla.firefox
Dann installieren wir noch essentielle Pakete wie Syncthing, Virt-Manager und ein paar Plugins. Diese Programme können erst nach dem Aktivieren der EPEL- und crb-Repos installiert werden, siehe oben:
sudo dnf install virt-manager libvirt gnome-tweak-tool gnome-shell-extension-dash-to-dock wireguard-tools syncthing
Syncthing⌗
Über Syncthing habe ich schon mal ein Video gemacht. Um Syncthing im Hintergrund zu starten, führe folgende Befehle aus:
systemctl enable syncthing@deinbenutzername.service
systemctl start syncthing@deinbenutzername.service
Passe in den Befehlen ==deinbenutzername== mit deinem ==Benutzernamen== an.
Wenn du willst, dass dein Benutzername automatisch vom System erkannt wird, kannst du direkt diesen Befehl verwenden:
systemctl enable syncthing@$(whoami).service
systemctl start syncthing@$(whoami).service
Das sollte immer funktionieren, da du ja eh angemeldet bist (benutzername@pcname am Anfang des Terminal-Prompts). $(whoami) als Teil des Befehls gibt einfach deinen Benutzernamen aus.
Mit systemctl disable syncthing@$(whoami).service kannst du den Dienst übrigens wieder entfernen.
Fertig!⌗
Nun hast du ein langzeitunterstütztes (10 Jahre) Linux mit modernen Anwendungen, welches dennoch sehr stabil läuft.
Vorschläge⌗
Hier noch eine Auswahl an Flatpaks für den Start:
flatpak install --user flathub org.mozilla.firefox com.mattjakeman.ExtensionManager io.missioncenter.MissionCenter com.github.jeromerobert.pdfarranger com.github.junrrein.PDFSlicer com.github.tchx84.Flatseal com.rawtherapee.RawTherapee com.valvesoftware.Steam de.bund.ausweisapp.ausweisapp2 im.riot.Riot org.audacityteam.Audacity org.audacityteam.Audacity.Codecs org.blender.Blender org.blender.Blender.Codecs org.darktable.Darktable org.freecadweb.FreeCAD org.gimp.GIMP org.gnome.NetworkDisplays org.gnome.SimpleScan org.gnome.Snapshot org.gnome.SoundRecorder org.gnome.gThumb org.gpodder.gpodder org.inkscape.Inkscape org.kde.kdenlive org.kde.krita org.keepassxc.KeePassXC org.libreoffice.LibreOffice org.mozilla.Thunderbird org.videolan.VLC
Automatische Updates ohne Nerverei⌗
Um Flatpaks komplett automatisch zu aktualisieren, legen wir einen Systemd-Timer an, der das in Zukunft für uns erledigt, sodass wir uns nie wieder um Updates kümmern müssen.
Systemd system-unit Dateien sind im Ordner /etc/systemd/user/ – sie können auf alle Nutzer des Systems angewandt werden.
Individuelle user-units finden sich im Ordner ~/.config/systemd/user/ und betreffen nur den jeweiligen Nutzer.
Lege folgende zwei Dateien mit jeweils folgendem Inhalt an:
sudo nano /etc/systemd/user/flatpak-user-update.service
[Unit]
Description=Update user Flatpaks
[Service]
Type=oneshot
ExecStart=/usr/bin/flatpak --user update -y
[Install]
WantedBy=default.target
sudo nano /etc/systemd/user/flatpak-user-update.timer
[Unit]
Description=Update system Flatpaks daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
Wir haben nun die Systemd-Aufgaben und Timer für die Aktualisierung der Flatpaks angelegt. Um die Aufgabe nun vom System ausführen zu lassen, aktivieren wir diese mit dem Befehl:
systemctl --user enable --now flatpak-user-update.timer
Flatpaks updaten nun schon mal selbstständig. Ein System-Update macht ihr übrigens mit sudo dnf update.
VirtManager⌗
Um weiterhin ein Windows für bestimmte Aufgaben zur Verfügung zu haben, nutzen wir die virtuelle Maschine VirtManager. Danach kannst du Windows in einem “Fenster” ausführen. Windows > Fenster, is doch klar :-)
VirtManager haben wir ja nun schon installiert und neu gestartet. Damit VirtManager nun auch funktioniert, startest du einmalig die Dienste und passt die Berechtigungen an mit den folgenden Befehlen:
sudo usermod -aG libvirt,kvm,dialout,input $(whoami)
systemctl enable libvirtd.service
systemctl start libvirtd.service
systemctl enable libvirtd.socket
systemctl start libvirtd.socket
sudo chown deinbenutzername:deinbenutzername /var/run/libvirt/libvirt-sock
Passe im letzten Befehl deinbenutzername mit deinem Benutzernamen an.
Serielle Geräte⌗
Serielle Geräte wie Arduinos, MiniDiscs und PDAs werden von der jeweiligen Anwendungssoftware erst erkannt, wenn du deinem Benutzer die Rechte gibst. Es kann nicht schaden, das zu tun, damit du nicht in diese Probleme hineinläufst, auch wenn du solche Geräte nicht verwendest:
sudo groupadd plugdev
sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER
sudo usermod -a -G plugdev $USER
Dann lege ich noch die Datei /etc/udev/rules.d/01-ttyusb.rules an mit sudo nano /etc/udev/rules.d/01-ttyusb.rules und schreibe diesen Inhalt hinein:
SUBSYSTEMS=="usb-serial", TAG+="uaccess"
Dann lade die udev-Regeln neu:
sudo udevadm control --reload-rules && sudo udevadm trigger
Nach einem Neustart sollte alles funktionieren.
RHEL SERVER⌗
Hier noch eine Kurzanleitung für die Einrichtung eines RHEL 10 Servers mit grundlegenden Sicherheitseinstellungen.
System aktualisieren⌗
# System auf den neuesten Stand bringen
sudo dnf update -y
# Nach Updates neustarten (falls Kernel-Updates)
sudo reboot
Hostname setzen⌗
# Hostname setzen
sudo hostnamectl set-hostname dein-servername
# Hostname in /etc/hosts eintragen
sudo nano /etc/hosts
# 127.0.0.1 localhost localhost.localdomain
# 127.0.1.1 dein-servername
Firewall konfigurieren⌗
# Firewall-Status prüfen
sudo firewall-cmd --state
# Standard-Zone anzeigen
sudo firewall-cmd --get-default-zone
# Verfügbare Zonen anzeigen
sudo firewall-cmd --get-zones
# Service zur Firewall hinzufügen (Beispiel: HTTP und HTTPS)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Port zur Firewall hinzufügen (Beispiel: Port 8080)
sudo firewall-cmd --permanent --add-port=8080/tcp
# Änderungen übernehmen
sudo firewall-cmd --reload
# Aktive Regeln anzeigen
sudo firewall-cmd --list-all
Zusätzliche Repositories einrichten⌗
# EPEL Repository (Extra Packages for Enterprise Linux)
sudo dnf install -y epel-release
# Repository-Liste aktualisieren
sudo dnf update -y
Wichtige Tools installieren⌗
# Entwickler-Tools und nützliche Pakete
sudo dnf groupinstall -y "Development Tools"
# System-Administration Tools
sudo dnf install -y \
vim \
nano \
wget \
curl \
git \
htop \
tmux \
screen \
net-tools \
bind-utils \
traceroute \
tcpdump \
rsync \
unzip \
tar \
bash-completion
# Monitoring Tools
sudo dnf install -y \
sysstat \
iotop \
iftop
SSH absichern⌗
# SSH-Konfiguration bearbeiten
sudo vim /etc/ssh/sshd_config
# Empfohlene Einstellungen:
# PermitRootLogin no
# PasswordAuthentication no # Nach SSH-Key-Setup
# Port 22 # oder einen anderen Port
# SSH-Service neu starten
sudo systemctl restart sshd
Automatische Updates konfigurieren (optional)⌗
# DNF-Automatic installieren
sudo dnf install -y dnf-automatic
# Konfiguration anpassen
sudo vim /etc/dnf/automatic.conf
# apply_updates = yes # Für automatische Installation
# DNF-Automatic aktivieren
sudo systemctl enable --now dnf-automatic.timer
Fail2Ban installieren (Schutz vor Brute-Force)⌗
# Fail2Ban installieren
sudo dnf install -y fail2ban
# Konfiguration erstellen
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
# Fail2Ban aktivieren
sudo systemctl enable --now fail2ban
# Status prüfen
sudo fail2ban-client status
Disk Management⌗
# Disk-Nutzung überprüfen
df -h
# LVM Status prüfen (falls verwendet)
sudo lvdisplay
sudo vgdisplay
sudo pvdisplay
# Filesystem erweitern (falls nötig)
# sudo lvextend -l +100%FREE /dev/mapper/rhel-root
# sudo xfs_growfs /
Backup-Strategie einrichten⌗
# Beispiel: Einfaches Backup-Script
sudo mkdir -p /backup
# Backup-Script erstellen
sudo vim /usr/local/bin/backup.sh
Beispiel-Backup-Script:
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
tar -czf $BACKUP_DIR/etc-backup-$DATE.tar.gz /etc/
find $BACKUP_DIR -name "etc-backup-*.tar.gz" -mtime +7 -delete
# Script ausführbar machen
sudo chmod +x /usr/local/bin/backup.sh
# Cronjob einrichten
sudo crontab -e
# 0 2 * * * /usr/local/bin/backup.sh
Performance-Tuning (optional)⌗
# Tuned installieren und aktivieren
sudo dnf install -y tuned
sudo systemctl enable --now tuned
# Verfügbare Profile anzeigen
sudo tuned-adm list
# Empfohlenes Profil setzen
sudo tuned-adm profile throughput-performance
# Aktives Profil prüfen
sudo tuned-adm active
Docker installieren (optional)⌗
# Docker Repository hinzufügen
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
# Docker installieren
sudo dnf install -y docker-ce docker-ce-cli containerd.io
# Docker aktivieren
sudo systemctl enable --now docker
# Benutzer zur docker-Gruppe hinzufügen
sudo usermod -aG docker $USER
# Docker-Compose installieren
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Abschließende Checks⌗
# System-Informationen anzeigen
hostnamectl
cat /etc/redhat-release
# Laufende Services prüfen
sudo systemctl list-units --type=service --state=running
# Offene Ports prüfen
sudo ss -tulpn
# Disk-Nutzung prüfen
df -h
# RAM-Nutzung prüfen
free -h
# Letzte Logins prüfen
last -n 20
# Security-Updates prüfen
sudo dnf check-update --security
Nützliche Befehle für den Alltag⌗
# Journal-Logs anzeigen
sudo journalctl -xe
sudo journalctl -u servicename -f
# Systemd-Service-Status
sudo systemctl status servicename
# Prozesse anzeigen
ps aux | grep prozessname
htop
# Netzwerk-Verbindungen
sudo netstat -tulpn
sudo ss -tulpn
# Disk I/O
sudo iotop
# System-Load
uptime
top
daswarschonkaputt.de - Podcast⌗
Wir sind ein Laber-Technik-Lebensweisheiten-Podcast, mit News, Retrogeschichten und gelegentlich Popkulturelles. Bob berichtet was er wieder mal kaputt gemacht hat und Jay erklärt warum es kaputt gegangen ist. Technik ist vergänglich, einiges setzt sich nie durch anderes gerät in Vergessenheit. In unserem Podcast erklären wir dir wie man Emails per Post versendet, Podcasts auf Kassette veröffentlicht, mit einem Raumschiff aus Knetmasse zum Mars fliegt und Linux auf einem Toaster installiert. Außerdem sprechen wir über aktuelle News aus der Technikwelt. Klingt abgedreht? Ist es auch. Hör rein dann verpasst du nichts. Wir senden ein mal monatlich etwa ca.2h also 30min die Woche ;-) KEINE WERBUNG, KEINE VERSTECKTEN KOSTEN.