Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Datenbanken 15.06.2026 · 10 min Lesezeit

RabbitMQ nativ auf Ubuntu installieren und absichern: APT-Repo, VHosts und Management-Plugin

RabbitMQ 4.4 nativ auf Ubuntu oder Debian installieren: offizielles APT-Repository von Team RabbitMQ, passendes Erlang, systemd-Dienst, Benutzer und VHosts, Management-Plugin, Firewall und abgesicherte Grundkonfiguration ohne Docker.

Geprüft am 22.10.2026 · für rabbitmq-server 4.4.0

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

RabbitMQ nativ auf Ubuntu mit APT-Repository, VHosts und Management-Plugin installieren

RabbitMQ ist ein quelloffener Message-Broker für AMQP. Dienste tauschen darüber asynchron Nachrichten aus, etwa bei Hintergrundjobs oder Microservices. Diese Anleitung zeigt, wie Sie RabbitMQ 4.4 auf Ubuntu 22.04, 24.04 oder 26.04 bzw. Debian 11 bis 13 als systemd-Dienst betreiben: mit dem offiziellen APT-Repository von Team RabbitMQ, passendem Erlang aus derselben Quelle, abgesicherter Grundkonfiguration, VHosts, Benutzern und dem Management-Plugin. Der Weg eignet sich für einen eigenen Broker-Server ohne Container.

Voraussetzungen

  1. Ubuntu 22.04 (Jammy), 24.04 (Noble) oder 26.04 (Resolute), alternativ Debian 11 (Bullseye), 12 (Bookworm) oder 13 (Trixie), jeweils amd64
  2. Root- bzw. sudo-Zugriff auf den Server
  3. Internetverbindung zu keys.openpgp.org, deb1.rabbitmq.com und deb2.rabbitmq.com
  4. Mindestens 512 MB RAM (1 bis 2 GB empfohlen für Produktionsbetrieb)
  5. Mindestens 4 GB freier Plattenplatz (Pakete, Logs, Queue-Daten und die 2-GB-Reserve aus Schritt 8)
  6. Grundkenntnisse in der Linux-Kommandozeile und systemd

Erlang- und RabbitMQ-Versionen im Überblick

Eine unpassende Erlang-Version ist die häufigste Fehlerquelle. Die Standardquellen von Ubuntu und Debian liefern oft ein zu altes Erlang. Das Repository von Team RabbitMQ stellt passende Pakete bereit. Stand Oktober 2026 laut Kompatibilitätsmatrix:

RabbitMQ-VersionMin. ErlangEmpfohlenHinweis
4.4.0 (aktuell, Oktober 2026) und 4.3.727.027.x bis 29.xErlang 29 neu unterstützt; wer gleichzeitig auf Erlang 28 oder neuer wechselt, aktualisiert laut Release Notes zuerst auf 4.3.7
4.3.627.027.x / 28.xErlang 29 nicht unterstützt, Erlang 26 wird nicht mehr unterstützt
4.3.3 bis 4.3.5, 4.2.9 bis 4.2.1127.027.xErlang 28 nur für neue Cluster, Erlang 29 nicht unterstützt
4.0.4 bis 4.3.226.226.x / 27.xVor dem Update auf 4.4 zuerst Erlang 27 installieren
3.13.x und älter26.026.2.xOhne Community-Support, auf 4.x aktualisieren

Schritt 1: Abhängigkeiten und GPG-Schlüssel einrichten

Installieren Sie die Hilfspakete und importieren Sie den Signaturschlüssel von Team RabbitMQ. Damit prüft APT die Paketsignaturen.

sudo apt-get update -y
sudo apt-get install curl gnupg apt-transport-https -y

Laden Sie den Schlüssel von keys.openpgp.org und legen Sie ihn als Keyring ab:

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" \
  | sudo gpg --dearmor \
  | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null

Verifizieren: gpg --show-keys /usr/share/keyrings/com.rabbitmq.team.gpg zeigt den Fingerabdruck 0A9AF2115F4687BD29803A206B73A36E6026DFCA.

Schritt 2: APT-Repository einrichten

Das Beispiel gilt für Ubuntu 24.04 (Noble) und trägt beide Spiegel deb1 und deb2 ein. Für Ubuntu 22.04 ersetzen Sie noble durch jammy. Ubuntu 26.04 nutzt laut Dokumentation das noble-Repository unverändert; im Test lief RabbitMQ 4.4.0 auf Ubuntu 26.04 genau mit diesem Block. Für Debian ersetzen Sie ubuntu/noble noble durch debian/bookworm bookworm (bzw. bullseye, trixie).

sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Team RabbitMQ: Erlang-Pakete
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] \
  https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] \
  https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/noble noble main

## Team RabbitMQ: RabbitMQ Server
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] \
  https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] \
  https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/noble noble main
EOF

Wichtig: Die alten Adressen ppa1.rabbitmq.com und ppa2.rabbitmq.com sind seit November 2025 abgeschaltet. Das Repository liefert nur amd64-Pakete; für ARM64 unter Ubuntu verweist die offizielle Dokumentation auf die Erlang-Pakete von Team RabbitMQ auf Launchpad.

Verifizieren: sudo apt-get update lädt die Paketlisten von deb1.rabbitmq.com und deb2.rabbitmq.com ohne Fehler, und apt-cache policy rabbitmq-server nennt dieses Repository als Quelle.

Schritt 3: Erlang und RabbitMQ installieren

Installieren Sie Erlang zuerst und geben Sie die Module einzeln an wie in der offiziellen Dokumentation. Das Metapaket erlang zieht zusätzliche Pakete und unter Umständen eine unpassende Version.

sudo apt-get update -y

# Erlang mit allen von RabbitMQ benötigten Modulen
sudo apt-get install -y erlang-base erlang-asn1 erlang-crypto \
  erlang-eldap erlang-ftp erlang-inets erlang-mnesia erlang-os-mon \
  erlang-parsetools erlang-public-key erlang-runtime-tools erlang-snmp \
  erlang-ssl erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

# RabbitMQ Server selbst
sudo apt-get install rabbitmq-server -y --fix-missing

Verifizieren: erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell gibt "27" aus, weil das Repository derzeit Erlang 27.3 liefert (im Test 27.3.4.19). dpkg -l rabbitmq-server zeigt die installierte RabbitMQ-Version, im Test 4.4.0-1.

Schritt 4: systemd-Dienst aktivieren und starten

Das Paket startet den Dienst in der Regel bereits bei der Installation. Stellen Sie Autostart und Laufzustand sicher:

sudo systemctl enable --now rabbitmq-server
sudo systemctl status rabbitmq-server

Verifizieren: Der Status zeigt Active: active (running). Startet der Dienst nicht, zeigt sudo journalctl -u rabbitmq-server -n 50 die Ursache.

Schritt 5: Management-Plugin aktivieren

Das Management-Plugin stellt eine Weboberfläche und eine HTTP-API auf Port 15672 bereit. Es wird im laufenden Betrieb aktiviert, ohne Neustart des Brokers. Beschränken Sie den Port vorher per Firewall (Schritt 9) oder direkt danach per Konfiguration (Schritt 8) auf 127.0.0.1.

sudo rabbitmq-plugins enable rabbitmq_management

Verifizieren: sudo rabbitmq-plugins list markiert rabbitmq_management mit [E*] (aktiviert, läuft).

Schritt 6: Admin-Benutzer anlegen und Guest-User entfernen

Der Standardbenutzer guest mit dem Passwort guest darf sich nur über localhost anmelden. Da die Zugangsdaten allgemein bekannt sind, ersetzen Sie ihn durch einen eigenen Admin. Übergeben Sie Passwörter in einfachen Anführungszeichen, damit die Shell Zeichen wie $ oder ! nicht auswertet.

# Admin anlegen, Passwort ersetzen
sudo rabbitmqctl add_user 'admin' 'IHR_ADMIN_PASSWORT'

# Administrator-Tag setzen
sudo rabbitmqctl set_user_tags admin administrator

# Vollzugriff auf den Standard-VHost "/" vergeben
sudo rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*"

# Standard-Guest-User entfernen
sudo rabbitmqctl delete_user guest

Die drei Rechteparameter von set_permissions sind jeweils reguläre Ausdrücke für: configure (Ressourcen anlegen/löschen), write (Nachrichten senden) und read (Nachrichten empfangen). .* bedeutet Vollzugriff auf alle Ressourcen im jeweiligen VHost.

Verifizieren: sudo rabbitmqctl list_users zeigt admin mit dem Tag administrator, aber keinen Eintrag guest.

Schritt 7: VHosts und Applikationsbenutzer einrichten

VHosts sind die logischen Mandanten in RabbitMQ: Jeder VHost hat seine eigenen Exchanges, Queues, Bindings und Berechtigungen. Legen Sie für jede Anwendung einen eigenen VHost mit eigenem Benutzer an. So liest keine Anwendung versehentlich Queues einer anderen.

# Anwendungs-VHost anlegen
sudo rabbitmqctl add_vhost myapp

# Applikationsbenutzer anlegen
sudo rabbitmqctl add_user 'myapp_user' 'IHR_APP_PASSWORT'

# Berechtigungen NUR für den eigenen VHost setzen
sudo rabbitmqctl set_permissions -p "myapp" "myapp_user" ".*" ".*" ".*"

# Übersicht prüfen
sudo rabbitmqctl list_users
sudo rabbitmqctl list_vhosts
sudo rabbitmqctl list_permissions -p myapp

Wichtig: Ein neu angelegter VHost hat zunächst keinerlei Benutzerberechtigungen. Verbindungsversuche scheitern mit der Fehlermeldung „access to vhost refused“, bis explizit Berechtigungen gesetzt werden.

Verifizieren: sudo rabbitmqctl list_permissions -p myapp zeigt myapp_user mit den drei .*-Mustern.

Schritt 8: Grundkonfiguration für den Produktionsbetrieb

Die Datei /etc/rabbitmq/rabbitmq.conf nutzt das Format schlüssel = wert; Einstellungen im Erlang-Format gehören in advanced.config. Ohne Angabe lauscht RabbitMQ auf Port 5672 an allen Schnittstellen. Ersetzen Sie 10.0.0.5 durch die interne Adresse des Servers:

# /etc/rabbitmq/rabbitmq.conf

# AMQP nur an die interne Adresse binden
listeners.tcp.1 = 10.0.0.5:5672

# Management-Oberfläche nur lokal
management.tcp.ip = 127.0.0.1
management.tcp.port = 15672

# Memory-Alarm bei 70 % RAM (Standard: 60 %)
vm_memory_high_watermark.relative = 0.7

# Plattenalarm unter 2 GB frei (Standard 50 MB)
disk_free_limit.absolute = 2GB

# Log-Level
log.file.level = info

# Heartbeat-Intervall in Sekunden
heartbeat = 60

Starten Sie den Dienst nach Änderungen neu:

sudo systemctl restart rabbitmq-server

Verifizieren: sudo ss -ltnp | grep -E ':(5672|15672)' zeigt 5672 nur auf der internen Adresse und 15672 nur auf 127.0.0.1.

Schritt 9: Firewall-Regeln mit ufw

Geben Sie Port 5672 nur für interne Netze frei. Die Management-Oberfläche erreichen Sie per SSH-Tunnel. Die Clusterports 4369 (EPMD) und 25672 bleiben nach außen gesperrt. Erlauben Sie SSH vor dem Aktivieren von ufw, sonst sperren Sie sich auf einem entfernten Server aus.

# SSH zuerst erlauben
sudo ufw allow OpenSSH

# AMQP nur für das interne Netz (Beispiel 10.0.0.0/8)
sudo ufw allow from 10.0.0.0/8 to any port 5672 proto tcp

sudo ufw default deny incoming
sudo ufw enable
sudo ufw status verbose

# Management-Oberfläche vom eigenen Rechner per SSH-Tunnel:
# ssh -L 15672:127.0.0.1:15672 benutzer@server

Verifizieren: sudo ufw status verbose zeigt OpenSSH und 5672 nur für das interne Netz; eine bestehende SSH-Sitzung bleibt verbunden.

PortProtokoll / ZweckTLS-PendantExtern erreichbar?
5672AMQP 0-9-1 / 1.0 (Clients)5671Je nach Anwendungsfall
15672HTTP Management UI + API15671Nein, nur intern oder per SSH-Tunnel
25672Inter-Node + CLI-ToolskeinsNein, nur intern
4369EPMD Peer DiscoverykeinsNein, nur intern
1883MQTT Clients (Plugin)8883Optional
15692Prometheus Metrics (Plugin)15691Nur intern

Schritt 10: Dienststatus und Diagnose

RabbitMQ bringt eigene Diagnosewerkzeuge mit:

# Umfassender Broker-Status
sudo rabbitmq-diagnostics status

# Aktive Konfigurationswerte ausgeben
sudo rabbitmq-diagnostics environment

# Live-Logs beobachten
sudo journalctl -u rabbitmq-server -f

# VHosts, Benutzer und Verbindungen auflisten
sudo rabbitmqctl list_vhosts
sudo rabbitmqctl list_users
sudo rabbitmqctl list_connections

Verifizieren: sudo rabbitmq-diagnostics status beginnt mit Status of node rabbit@<hostname> ... und meldet keine Alarme. Die Oberfläche unter http://localhost:15672 (per Tunnel) akzeptiert die Anmeldung mit admin.

Troubleshooting / Typische Fehler

Erlang-Version inkompatibel

Bricht rabbitmq-server beim Start ab, passt oft die Erlang-Version nicht. Prüfen Sie sie mit dem Befehl aus Schritt 3. RabbitMQ 4.4.0 braucht Erlang 27 bis 29. Prüfen Sie mit apt-cache policy erlang-base, dass Erlang aus dem Repository von Team RabbitMQ stammt.

„access to vhost refused" beim Verbindungsaufbau

Dem Benutzer fehlen Rechte im Ziel-VHost. Prüfen Sie mit sudo rabbitmqctl list_permissions -p <vhostname> und setzen Sie die Rechte mit set_permissions.

Repository-Fehler bei apt-get update

Meldet APT Fehler für rabbitmq.com, stehen meist noch die alten Adressen ppa1/ppa2 in /etc/apt/sources.list.d/rabbitmq.list. Ersetzen Sie die Einträge wie in Schritt 2.

Dienst startet nach Konfigurationsänderung nicht

Meist enthält rabbitmq.conf Einträge im Erlang-Format; diese gehören in /etc/rabbitmq/advanced.config. Die fehlerhafte Zeile nennt sudo journalctl -u rabbitmq-server -n 100.

Memory-Alarm: Publishing wird gebremst

Blockiert RabbitMQ Publisher, ist ein Speicher- oder Plattenalarm aktiv. Der Standard liegt bei 60 % RAM bzw. 50 MB freiem Plattenplatz. sudo rabbitmq-diagnostics alarms zeigt den Alarm. Arbeiten Sie Queues ab, erweitern Sie RAM oder Platte oder passen Sie die Werte aus Schritt 8 an.

Sonderzeichen in Passwörtern

Zeichen wie !, & oder $ wertet die Shell aus. Setzen Sie Passwörter in rabbitmqctl-Befehlen in einfache Anführungszeichen.

Häufige Fragen

Muss ich nach dem Aktivieren des Management-Plugins neu starten?

Nein, rabbitmq-plugins enable wirkt im laufenden Betrieb.

Kann ich den Standard-VHost „/" für Produktionsanwendungen nutzen?

Möglich, aber nicht empfohlen. Ein VHost und ein Benutzer je Anwendung trennen die Daten sauber.

Was ist der Unterschied zwischen rabbitmqctl und rabbitmq-diagnostics?

rabbitmqctl verwaltet Benutzer, VHosts, Policies und Cluster. rabbitmq-diagnostics liefert Status, Health-Checks und Umgebungsdaten, ohne etwas zu ändern.

Wie aktualisiere ich RabbitMQ auf eine neue Version?

Prüfen Sie vorher Release Notes und Erlang-Matrix. Laut Upgrade-Dokumentation müssen vor dem Update alle stabilen Feature Flags aktiv sein, sonst kann es scheitern: sudo rabbitmqctl enable_feature_flag all. Sichern Sie dann die Definitionen (Benutzer, VHosts, Rechte, Queues) mit sudo rabbitmqctl export_definitions /var/lib/rabbitmq/definitions-vor-update.json und aktualisieren Sie mit sudo apt-get update && sudo apt-get install --only-upgrade rabbitmq-server. Das Zielverzeichnis muss für den Benutzer rabbitmq beschreibbar sein, denn rabbitmqctl läuft unter diesem Benutzer. Ein Ziel unter /root scheitert mit No permissions to write to file /root/rabbitmq-definitions.json or its parent directory. Im Test lief das Update von 4.3.6 auf 4.4.0 mit diesen Befehlen ohne Rückfrage durch: Der Dienst startete selbst neu, VHosts, Benutzer, Rechte und je eine persistente Nachricht in einer Classic Queue und einer Quorum Queue blieben erhalten. Danach meldete sudo rabbitmqctl list_feature_flags name state das neue Flag rabbitmq_4.4.0 als disabled; aktivieren Sie es nach dem Update ebenfalls mit sudo rabbitmqctl enable_feature_flag all. Die Sicherung spielt sudo rabbitmqctl import_definitions /var/lib/rabbitmq/definitions-vor-update.json wieder ein; im Test stellte das einen gelöschten VHost samt Benutzer und Rechten wieder her. Ab 4.4 schreibt RabbitMQ Classic-Queue-Daten in einem neuen Dateiformat (.sqs), ein Downgrade auf 4.3 ist danach laut Release Notes nicht mehr möglich. Bei Sprüngen über mehrere Release-Serien (z. B. 3.x auf 4.x) sind Zwischenschritte nötig. Wer Versionen kontrolliert einspielen will, hält Pakete mit sudo apt-mark hold rabbitmq-server erlang-base fest.

Wie sichere ich das Management-UI per HTTPS ab?

Setzen Sie in rabbitmq.conf management.ssl.port = 15671 und die Zertifikatspfade (management.ssl.cacertfile, management.ssl.certfile, management.ssl.keyfile) und entfernen Sie die management.tcp.*-Zeilen. Für den internen Betrieb genügt der SSH-Tunnel.

Wie prüfe ich die installierte Erlang-Version?

Mit dem Befehl aus Schritt 3 oder im laufenden Broker mit sudo rabbitmq-diagnostics erlang_version.

Fazit

Mit dem offiziellen Repository von Team RabbitMQ erhalten Sie RabbitMQ und ein passendes Erlang als systemd-Dienst. Für den sicheren Betrieb entscheidend sind: guest löschen, eigene Admins und VHosts je Anwendung, AMQP nur intern, Management-Oberfläche nur lokal und Speicher- sowie Plattenlimits. Für die Langzeitüberwachung empfiehlt das RabbitMQ-Team Prometheus und Grafana mit dem Plugin rabbitmq_prometheus.

Weiterführende Anleitungen und Quellen

  1. PostgreSQL nativ installieren und absichern (Ubuntu/Debian, ohne Docker)
  2. MongoDB nativ installieren und absichern (Ubuntu/Debian, ohne Docker)
  3. MariaDB / MySQL installieren und absichern
  4. VPS absichern und härten: Anleitung mit UFW, SSH-Keys und Fail2Ban
  5. systemd-Service selbst erstellen und verwalten
  6. Linux-Server absichern: UFW-Firewall und Fail2ban
  7. Docker und Docker Compose auf Linux installieren (Ubuntu/Debian)
  8. RabbitMQ: Installing on Debian and Ubuntu (offizielle Dokumentation)
  9. RabbitMQ: Access Control: Benutzer und Berechtigungen
  10. RabbitMQ: Management Plugin
  11. RabbitMQ: Virtual Hosts
  12. RabbitMQ: Networking und Ports
  13. RabbitMQ: Erlang-Versionsanforderungen
  14. RabbitMQ: Upgrade (Feature Flags vor dem Update)
  15. RabbitMQ: Definitionen exportieren und importieren
  16. RabbitMQ 4.4.0: Release Notes