Як створити екземпляр MongoDB на VPS

Розгортання MongoDB на віртуальному виділеному сервері (VPS ) дає вам повний контроль над інфраструктурою вашої бази даних – ідеальний варіант для розробників, стартапів та організацій, для яких пріоритетами є продуктивність, гнучкість та суверенітет даних. У цьому посібнику ви дізнаєтеся, як встановити, налаштувати, захистити та оптимізувати MongoDB на VPS.

🛠️ Крок 1: Оновлення системи

sudo apt update && sudo apt upgrade -y

Встановіть ім’я хоста і часовий пояс:

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

крок 2: Встановіть MongoDB

1. Імпортуйте 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. Додайте репозиторій 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

Примітка: Замініть focal на jammy або вашу версію, якщо ви використовуєте Ubuntu 22.04.

3. Встановіть MongoDB

sudo apt update
sudo apt install -y mongodb-org

крок 3: Запуск та увімкнення MongoDB

sudo systemctl start mongod
sudo systemctl enable mongod

Перевірте статус:

sudo systemctl status mongod

крок 4: Захистіть ваш сервер MongoDB

За замовчуванням MongoDB прив’язується до 127.0.0.1. Якщо вам потрібен віддалений доступ:

1. Відредагуйте конфігурацію

sudo nano /etc/mongod.conf

Знайдіть рядок bindIp у розділі net: і змініть його:

bindIp: 127. 0.0.1,0.0.0.0

2. Увімкніть автентифікацію

У розділі security: додайте

security:
authorization: enabled

Перезапустіть MongoDB:

sudo systemctl restart mongod

крок 5: Створення користувача адміністратора

Увійдіть в оболонку MongoDB:

mongosh

Створіть користувача admin:

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

Вийдіть за допомогою exit, потім виконайте тестовий вхід:

mongosh -u admin -p --authenticationDatabase admin

🛡️ Крок 6: Захистіть VPS і MongoDB

1. Брандмауер UFW

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

Для віддаленого доступу з одного IP:

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

2. Fail2Ban (захист по SSH)

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

⚙️ Крок 7: Розширена оптимізація (необов’язково)

1. Набір реплік для високої доступності

Змініть /etc/mongod.conf:

replication:
replSetName: "rs0"

Ініціалізуйте:

mongosh
rs.initiate()

2. Стратегія резервного копіювання

Використовуйте mongodump для створення резервних копій:

mongodump --out /var/backups/mongodb/$(дата %F)

Автоматизуйте за допомогою cron:

crontab -e
# Щодня о 2 годині ночі
0 2 * * * * /usr/bin/mongodump --out /var/backups/mongodb/$(дата \%F)

3. Використання TLS/SSL для зашифрованих з’єднань

Згенеруйте сертифікати і налаштуйте розділ net.ssl в mongod.conf. Це вимагає додаткових налаштувань і довіреного центру сертифікації (ЦС).

крок 8: Перевірте своє розгортання

Ви можете протестувати віддалене підключення:

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

Замініть your-server-ip на IP-адресу вашого VPS або ім’я домену.

крок 9: Моніторинг MongoDB

Розглянемо такі інструменти як:

  • MongoDB Atlas Monitoring Agent (необов’язково)

  • Prometheus Grafana з експортерами

  • Кастомні сповіщення за допомогою cron та logwatch

Ви також можете переглядати логи безпосередньо:

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

✅ Фінальний чек-лист

  • MongoDB встановлено та запущено

  • Віддалений доступ захищено

  • Ввімкнено автентифікацію адміністратора

  • Налаштовано брандмауер

  • Створені резервні копії

  • Увімкнено додатковий моніторинг

🧩 Висновок

Запуск MongoDB на VPS дає вам неперевершену гнучкість, але вимагає ретельної уваги до безпеки, резервного копіювання та продуктивності. Дотримуючись цього посібника, ви створили безпечний і готовий до роботи екземпляр MongoDB, готовий до масштабування в міру зростання вашого додатку.