Jak utworzyć instancję MongoDB na VPS

Wdrożenie MongoDB na Wirtualnym Serwerze Prywatnym (VPS) daje pełną kontrolę nad infrastrukturą bazy danych – idealne dla programistów, startupów i organizacji, które priorytetowo traktują wydajność, elastyczność i suwerenność danych. Ten przewodnik przeprowadzi Cię przez zaawansowane kroki instalacji, konfiguracji, zabezpieczania i optymalizacji MongoDB na VPS.

🛠️ Krok 1: Zaktualizuj swój system

sudo apt update && sudo apt upgrade -y

Ustaw swoją nazwę hosta i strefę czasową:

hostnamectl set-hostname mongodb-server
timedatectl set-timezone UTC

📦 Krok 2: Zainstaluj MongoDB

1. Importuj klucz GPG MongoDB

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg

2. Dodaj repozytorium MongoDB

echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

Uwaga: Zastąp focal jammy lub swoją wersją, jeśli używasz Ubuntu 22.04.

3. Zainstaluj MongoDB

sudo apt update
sudo apt install -y mongodb-org

🧪 Krok 3: Uruchom i włącz MongoDB

sudo systemctl start mongod
sudo systemctl enable mongod

Sprawdź status:

sudo systemctl status mongod

🔐 Krok 4: Zabezpiecz swój serwer MongoDB

Domyślnie MongoDB wiąże się z 127.0.0.1. Jeśli chcesz zdalny dostęp:

1. Edytuj konfigurację

sudo nano /etc/mongod.conf

Znajdź linię bindIp pod net: i zmodyfikuj:

bindIp: 127.0.0.1,0.0.0.0

2. Włącz uwierzytelnianie

W sekcji security: dodaj:

security:
authorization: enabled

Uruchom ponownie MongoDB:

sudo systemctl restart mongod

👤 Krok 5: Utwórz użytkownika administratora

Uzyskaj dostęp do powłoki MongoDB:

mongosh

Utwórz użytkownika administratora:

use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

Wyjdź z exit, a następnie przetestuj logowanie:

mongosh -u admin -p --authenticationDatabase admin

🛡️ Krok 6: Zabezpiecz VPS i MongoDB

1. Zapora UFW

sudo ufw allow OpenSSH
sudo ufw allow 27017/tcp
sudo ufw enable

Dla zdalnego dostępu z jednego adresu IP:

sudo ufw allow from YOUR.IP.ADDRESS to any port 27017

2. Fail2Ban (ochrona SSH)

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

⚙️ Krok 7: Zaawansowana optymalizacja (opcjonalnie)

1. Zestaw replik dla wysokiej dostępności

Zmodyfikuj /etc/mongod.conf:

replication:
replSetName: "rs0"

Zainicjuj:

mongosh
rs.initiate()

2. Strategia kopii zapasowych

Użyj mongodump do tworzenia kopii zapasowych:

mongodump --out /var/backups/mongodb/$(date +%F)

Automatyzuj za pomocą cron:

crontab -e
# Daily at 2 AM
0 2 * * * /usr/bin/mongodump --out /var/backups/mongodb/$(date +%F)

3. Użyj TLS/SSL do szyfrowanych połączeń

Generuj certyfikaty i skonfiguruj sekcję net.ssl w mongod.conf. Wymaga to dodatkowej konfiguracji oraz zaufanego urzędnika certyfikacyjnego (CA).

🧪 Krok 8: Przetestuj swoje wdrożenie

Możesz przetestować zdalne połączenie:

mongosh "mongodb://admin:StrongPassword123!@your-server-ip:27017/admin"

Zastąp your-server-ip swoim adresem IP VPS lub nazwą domeny.

📊 Krok 9: Monitoruj swoje MongoDB

Rozważ narzędzia takie jak:

  • Agent monitorujący MongoDB Atlas (opcjonalnie)

  • Prometheus + Grafana z eksportami

  • Niestandardowe powiadamianie za pomocą cron i logwatch

Możesz również bezpośrednio przeglądać logi:

sudo tail -f /var/log/mongodb/mongod.log

✅ Ostateczna lista kontrolna

  • MongoDB zainstalowane i działa

  • Zdalny dostęp zabezpieczony

  • Wymuszone uwierzytelnianie administratora

  • Zapora skonfigurowana

  • Kopie zapasowe w miejscu

  • Opcjonalne monitorowanie włączone

🧩 Podsumowanie

Uruchomienie MongoDB na VPS daje niezrównaną elastyczność, ale wymaga starannej uwagi na bezpieczeństwo, kopie zapasowe i wydajność. Postępując zgodnie z tym przewodnikiem, stworzyłeś bezpieczną i gotową do produkcji instancję MongoDB, gotową do skalowania w miarę rozwoju aplikacji.