Table of Contents

MongoDB — посібник для початку роботи

MongoDB — документоорієнтована NoSQL-база даних, створена для гнучкості й масштабованості. Замість таблиць і рядків вона зберігає дані як JSON-подібні документи — ідеально для застосунків зі структурою даних, що змінюється. Сервер постачається з повністю налаштованою MongoDB 8.0 і паролем адміністратора, вказаним під час замовлення. Для керування базами через браузер встановлено mongo-express.


Крок 1 — перевірте, що MongoDB працює

IP-адресу сервера й пароль root показано на сторінці Server Details у клієнтській панелі. mongo-express — вебінтерфейс адміністрування MongoDB. Відкрийте http://your.server.ip/mongo-express у браузері, щоб переконатися, що все працює.

Вхід адміністратора MongoDB:

  • Імʼя користувача: admin
  • Пароль: пароль MongoDB Admin Password, вказаний під час замовлення

У mongo-express можна переглядати бази даних, переглядати й редагувати документи, виконувати запити та керувати колекціями без командного рядка.

Серверам баз даних не потрібен публічний доступ з інтернету. Для безпечного доступу розмістіть сервер у приватній мережі за маршрутизатором VyOS і підключайтеся через VPN до MongoDB і mongo-express за приватною IP сервера.


Крок 2 — віддалене підключення до MongoDB

MongoDB налаштовано на приймання віддалених підключень з автентифікацією. Підключатися можна з будь-якого застосунку чи інструмента:

mongosh "mongodb://admin:your_admin_password@your.server.ip:27017/admin"

Параметри підключення для графічних інструментів MongoDB (MongoDB Compass, Studio 3T тощо):

Параметр Значення
Хостyour.server.ip
Порт27017
Імʼя користувачаadmin
ПарольAdmin Password (із замовлення)
База автентифікаціїadmin

Формат рядка підключення:

mongodb://admin:your_admin_password@your.server.ip:27017/admin

Примітка: Порт 27017 — це протокол MongoDB, а не HTTP, тож відкрити його в браузері неможливо. Використовуйте клієнт баз даних або команду вище.


Крок 3 — увімкніть SSL для mongo-express (необовʼязково)

Якщо на сервер спрямовано домен, можна увімкнути HTTPS для mongo-express із безкоштовним сертифікатом Let’s Encrypt. Підключіться через SSH і виконайте:

ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com

Скрипт перевірить DNS, отримає сертифікат і автоматично налаштує Apache для HTTPS. Після завершення mongo-express буде доступний за адресою https://db.yourdomain.com/mongo-express.

Примітка: Перед запуском скрипта переконайтеся, що A-запис домену вказує на IP сервера. SSL необовʼязковий — mongo-express нормально працює через HTTP за IP-адресою.


Керування базами даних

Створення додаткових баз даних і користувачів

Додаткові бази даних і користувачів можна створити через mongo-express або SSH:

mongosh -u admin -p --authenticationDatabase admin

use newdb
db.createUser({
    user: "newuser",
    pwd: "strong_password",
    roles: [{ role: "readWrite", db: "newdb" }]
})

Імпорт і експорт

Через mongo-express: Використовуйте вебінтерфейс для перегляду й редагування окремих документів.

Через командний рядок (рекомендовано для масових операцій):

# Export entire database
mongodump -u admin -p your_admin_password --authenticationDatabase admin -d your_database -o /tmp/backup/

# Import database
mongorestore -u admin -p your_admin_password --authenticationDatabase admin -d your_database /tmp/backup/your_database/

# Export single collection to JSON
mongoexport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection -o collection.json

# Import JSON into collection
mongoimport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection --file collection.json

Після встановлення

Fail2Ban — захист від підбору паролів

Сервер постачається з Fail2Ban , попередньо налаштованим для захисту SSH і mongo-express від підбору паролів.

Правило Макс. спроб Тривалість блокування
SSH5 невдалих входів10 хвилин
mongo-express5 невдалих входів1 година

Корисні команди:

# Check banned IPs
fail2ban-client status mongo-express
fail2ban-client status sshd

# Unban an IP
fail2ban-client set mongo-express unbanip 1.2.3.4

Якщо ви випадково заблокували себе, підключіться через VNC-консоль у клієнтській панелі й розблокуйте свою IP.

Керування сервісами

MongoDB, mongo-express і Apache працюють через systemd. Типові команди:

# Check service status
systemctl status mongod
systemctl status mongo-express
systemctl status apache2

# Restart MongoDB
systemctl restart mongod

# View MongoDB logs
journalctl -u mongod -n 100

Налаштування продуктивності MongoDB

Під час першого завантаження кеш WiredTiger автоматично встановлюється на 50% RAM. Щоб перевірити поточне значення:

mongosh -u admin -p --authenticationDatabase admin --eval "db.serverStatus().wiredTiger.cache"

Щоб змінити вручну, відредагуйте /etc/mongod.conf (у розділі storage.wiredTiger.engineConfig.cacheSizeGB) і перезапустіть MongoDB:

systemctl restart mongod

Облікові дані сервера

Облікові дані MongoDB і mongo-express зберігаються у /root/.mongo_credentials.

Що вже налаштовано

  • Автентифікація: Авторизацію MongoDB увімкнено з SCRAM-SHA-256. Користувач admin має права root
  • Віддалений доступ: MongoDB приймає підключення з будь-якої IP на порту 27017
  • Кеш WiredTiger: Автоматично налаштовується на 50% доступної RAM під час першого завантаження
  • Вебінтерфейс: mongo-express працює за зворотним проксі Apache на /mongo-express

Встановлене ПЗ

Компонент Версія
Ubuntu24.04 LTS
MongoDB8.0 Community
mongoshвходить до MongoDB
mongo-expressОстання
Apache2.4 (зворотний проксі)
CertbotОстання
Fail2Ban1.0

Усунення проблем

Проблема Рішення
Не вдається віддалено підключитися до MongoDB Перевірте, що порт 27017 не блокує файрвол. Переконайтеся, що користувач існує та має правильну authenticationDatabase
mongo-express показує 401 Unauthorized Використовуйте імʼя користувача admin і Admin Password із замовлення. Облікові дані — у /root/.mongo_credentials
Сторінка mongo-express не завантажується Перевірте сервіс: systemctl status mongo-express. Перезапуск: systemctl restart mongo-express
Помилка автентифікації Обовʼязково вкажіть --authenticationDatabase admin. Користувач admin автентифікується в базі даних admin
MongoDB не запускається Перевірте логи: journalctl -u mongod -n 50. Поширена причина — заповнений диск (df -h /) або некоректний YAML у mongod.conf
Забули пароль адміністратора MongoDB Підключіться через SSH і перевірте /root/.mongo_credentials
Заблоковано Fail2Ban Розблокуйте свою IP через VNC-консоль у клієнтській панелі
Забули пароль root Скиньте його через VNC-консоль у клієнтській панелі