Deutsch

MongoDB 8.0 auf einem Ubuntu-24.04-VPS installieren und absichern

2 min
VPS/VDS-Hosting

MongoDB ist eine dokumentenorientierte Datenbank, die häufig für APIs, Node.js-Anwendungen und Analysen eingesetzt wird. Ubuntu liefert sie nicht in den eigenen Paketquellen mit, daher installieren Sie sie aus dem offiziellen MongoDB-Repository. Diese Anleitung richtet sie auf einem VPS Linux Infrawire ein, aktiviert die Authentifizierung und beschränkt den Zugriff.

📋 Voraussetzungen

  • Ein VPS mit Ubuntu 24.04 (noble) auf x86_64 oder ARM64 und SSH-Root-Zugang (IP und Root-Passwort stehen in Ihrem Kundenbereich)
  • Eine CPU mit AVX-Befehlssatz (ab MongoDB 5.0 erforderlich): grep -c avx /proc/cpuinfo muss eine Zahl größer 0 liefern
  • Empfohlen sind mindestens 2 GB RAM

1. Offizielles Repository hinzufügen

Importieren Sie den Signaturschlüssel und tragen Sie das Repository für Ubuntu 24.04 ein.

Bash
apt update && apt install -y curl gnupg curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor echo 'deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse' > /etc/apt/sources.list.d/mongodb-org-8.0.list

2. Dienst installieren und starten

Bash
apt update apt install -y mongodb-org systemctl enable --now mongod systemctl status mongod --no-pager

Das Metapaket mongodb-org installiert den Server (mongod), die Shell (mongosh) und die Werkzeuge. Die Daten liegen in /var/lib/mongodb, die Logs in /var/log/mongodb/mongod.log.

3. Administrator anlegen

Die Authentifizierung ist noch aus, die lokale Shell verbindet sich daher ohne Zugangsdaten. Legen Sie den ersten Administrator in der Datenbank admin an; passwordPrompt() fragt das Passwort ab, sodass es nie in Ihrer Shell-Historie landet.

Bash
mongosh
JavaScript
1use admin 2db.createUser({ 3 user: 'admin', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, 'readWriteAnyDatabase' ] 6})

4. Authentifizierung aktivieren

Bearbeiten Sie /etc/mongod.conf und fügen Sie den Block security hinzu (oder entkommentieren Sie ihn):

YAML
security: authorization: enabled
Bash
systemctl restart mongod

Ab jetzt muss sich jede Verbindung authentifizieren.

5. Anwendungsbenutzer anlegen

Ihre Anwendung sollte niemals das Administratorkonto verwenden. Geben Sie ihr einen Benutzer, der auf die eigene Datenbank beschränkt ist.

Bash
mongosh -u admin -p --authenticationDatabase admin
JavaScript
1use appdb 2db.createUser({ 3 user: 'appuser', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'readWrite', db: 'appdb' } ] 6})

Die passende Verbindungszeichenfolge lautet mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb.

6. Netzwerkzugriff und Firewall

Standardmäßig lauscht MongoDB nur auf 127.0.0.1. Das ist die sicherste Einstellung, wenn die Anwendung auf demselben VPS läuft. Um einen weiteren Server zuzulassen, tragen Sie die Adresse des VPS in /etc/mongod.conf ein:

YAML
net: port: 27017 bindIp: 127.0.0.1,VPS_IP

Erlauben Sie in der Firewall anschließend nur den Anwendungsserver und öffnen Sie Port 27017 niemals für das gesamte Internet:

Bash
ufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod

✅ Installation prüfen

Bash
mongod --version mongosh --eval 'db.runCommand({ ping: 1 })' mongosh -u appuser -p --authenticationDatabase appdb appdb --eval 'db.test.insertOne({ ok: true })' ss -ltnp | grep 27017

Der letzte Befehl zeigt, auf welcher Adresse MongoDB lauscht. Eine nicht authentifizierte Abfrage wie db.getUsers() muss jetzt mit einem Autorisierungsfehler scheitern.

🔧 Fehlerbehebung

mongod startet nicht (Illegal instruction oder Exit-Code 132) : Die virtuelle CPU stellt AVX nicht bereit. Prüfen Sie grep avx /proc/cpuinfo; ohne AVX läuft MongoDB 8.0 auf diesem System nicht.

Start schlägt mit Berechtigungsfehlern fehl : Korrigieren Sie den Besitzer der Daten- und Socket-Dateien mit chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, entfernen Sie eine veraltete /tmp/mongodb-27017.sock und starten Sie neu. Details stehen in journalctl -u mongod.

Authentication failed : Der Benutzer wurde in einer bestimmten Datenbank angelegt. Geben Sie die richtige mit --authenticationDatabase an (oder authSource in der URI).

Remote-Verbindung läuft in ein Timeout : Prüfen Sie bindIp, die Regeln in ufw status und ob die Client-IP mit der freigegebenen übereinstimmt.


🎉 MongoDB 8.0 ist installiert, durch Authentifizierung geschützt und bereit für Ihre Anwendung!

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.