Polski

Instalacja i zabezpieczenie MongoDB 8.0 na VPS z Ubuntu 24.04

2 min
Hosting VPS/VDS

MongoDB to baza dokumentowa chętnie używana w API, aplikacjach Node.js i analityce. Ubuntu nie zawiera jej w swoich repozytoriach, dlatego instaluje się ją z oficjalnego repozytorium MongoDB. Ten poradnik konfiguruje ją na VPS Linux Infrawire, włącza uwierzytelnianie i ogranicza dostęp.

📋 Wymagania wstępne

  • Serwer VPS z Ubuntu 24.04 (noble) na x86_64 lub ARM64 i dostępem SSH jako root (adres IP i hasło roota znajdziesz w panelu klienta)
  • Procesor udostępniający zestaw instrukcji AVX (wymagany od MongoDB 5.0): grep -c avx /proc/cpuinfo musi zwrócić liczbę większą od 0
  • Zalecane co najmniej 2 GB RAM

1. Dodanie oficjalnego repozytorium

Zaimportuj klucz podpisu i zadeklaruj repozytorium dla Ubuntu 24.04.

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. Instalacja i uruchomienie usługi

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

Metapakiet mongodb-org instaluje serwer (mongod), powłokę (mongosh) i narzędzia. Dane znajdują się w /var/lib/mongodb, a logi w /var/log/mongodb/mongod.log.

3. Utworzenie administratora

Uwierzytelnianie jest jeszcze wyłączone, więc lokalna powłoka łączy się bez danych logowania. Utwórz pierwszego administratora w bazie admin; passwordPrompt() pyta o hasło, dzięki czemu nie trafia ono do historii powłoki.

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

4. Włączenie uwierzytelniania

Edytuj /etc/mongod.conf i dodaj (lub odkomentuj) blok security:

YAML
security: authorization: enabled
Bash
systemctl restart mongod

Od tej chwili każde połączenie musi się uwierzytelnić.

5. Utworzenie użytkownika aplikacji

Aplikacja nigdy nie powinna korzystać z konta administratora. Daj jej użytkownika ograniczonego do jej własnej bazy.

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})

Odpowiedni ciąg połączenia to mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb.

6. Dostęp sieciowy i zapora

Domyślnie MongoDB nasłuchuje wyłącznie na 127.0.0.1, co jest najbezpieczniejszym ustawieniem, gdy aplikacja działa na tym samym VPS. Aby dopuścić inny serwer, dodaj adres VPS w /etc/mongod.conf:

YAML
net: port: 27017 bindIp: 127.0.0.1,VPS_IP

Następnie w zaporze zezwól tylko serwerowi aplikacji i nigdy nie otwieraj portu 27017 dla całego Internetu:

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

✅ Weryfikacja instalacji

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

Ostatnie polecenie pokazuje, na jakim adresie nasłuchuje MongoDB. Nieuwierzytelnione zapytanie, np. db.getUsers(), powinno teraz zakończyć się błędem autoryzacji.

🔧 Rozwiązywanie problemów

mongod nie startuje (Illegal instruction lub kod wyjścia 132) : wirtualny procesor nie udostępnia AVX. Sprawdź grep avx /proc/cpuinfo; bez AVX MongoDB 8.0 nie uruchomi się na tej maszynie.

Start kończy się błędami uprawnień : popraw właściciela plików danych i gniazda poleceniem chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, usuń stary /tmp/mongodb-27017.sock i zrestartuj usługę. Szczegóły znajdziesz w journalctl -u mongod.

Authentication failed : użytkownik został utworzony w konkretnej bazie. Podaj właściwą przez --authenticationDatabase (lub authSource w URI).

Połączenie zdalne kończy się przekroczeniem czasu : sprawdź bindIp, reguły w ufw status oraz czy adres IP klienta zgadza się z dopuszczonym.


🎉 MongoDB 8.0 jest zainstalowane, chronione uwierzytelnianiem i gotowe dla Twojej aplikacji!

Bądź na bieżąco z najnowszymi ofertami, zniżkami i promocjami specjalnymi.

Zobacz promocje

Używamy plików cookie

Używamy plików cookie analitycznych, aby ulepszać nasz serwis. Nie sprzedajemy danych stronom trzecim. Więcej w polityce prywatności.