Як встановити та налаштувати MongoDB на VPS (Повний посібник 2024)
MongoDB — один з найбільш широко використовуваних NoSQL баз даних у світі — і не без причини. Його гнучка модель документів, висока пропускна здатність читання/запису та вбудована горизонтальна масштабованість роблять його основним вибором для сучасних API, SaaS платформ, CRM, e-commerce рушіїв та додатків, інтенсивних за даними. На відміну від керованих хмарних сервісів баз даних, запуск MongoDB на власному VPS Hosting дає вам повний контроль над налаштуванням продуктивності, посиленням безпеки та довгостроковими витратами.
Цей посібник проведе вас через встановлення MongoDB Community Edition 8.0 виробничого рівня на Linux VPS — охоплюючи налаштування офіційного репозиторію для Debian 12 та Ubuntu LTS, управління сервісом, створення користувачів та баз даних, посилення безпеки (аутентифікація, прив’язка мережі, правила брандмауера), стратегії резервного копіювання та поширені кроки усунення неполадок. Незалежно від того, чи ви запускаєте свій перший додаток чи переносите існуюче навантаження, цей посібник забезпечує надійну роботу MongoDB з першого дня.
1. Передумови
Перед початком переконайтеся, що виконані такі умови:
| Вимога | Деталі |
|---|---|
| Доступ до VPS | Root або SSH-доступ на рівні sudo |
| Операційна система | 64-розрядна Debian 12 (Bookworm) або Ubuntu 22.04/24.04 LTS |
| RAM | Мінімум 1 GB; 2 GB+ рекомендується для production |
| Сховище | SSD-підтримане сховище настійно рекомендується |
| Брандмауер | UFW або iptables доступні |
> Важливо: MongoDB 8.0 офіційно підтримує Debian 12 та Ubuntu LTS версії. Завжди встановлюйте з офіційних репозиторіїв MongoDB — ніколи не використовуйте пакет mongodb, що входить до вашого дистрибутива Linux, оскільки він застарілий, не підтримується та може конфліктувати з офіційним пакетом mongodb-org.
Якщо у вас ще немає сервера, плани VPS Hosting AlexHost пропонують SSD-підтримані Linux VPS екземпляри на високопродуктивній інфраструктурі — ідеальні для запуску production робіт з базами даних.
Спочатку оновіть вашу систему
Завжди починайте з повністю оновленої системи:
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl2. Встановлення MongoDB на Debian 12 (Bookworm)
MongoDB недоступна в стандартних репозиторіях Debian, тому вам потрібно вручну додати офіційний репозиторій MongoDB APT.
Крок 1 — Імпортування ключа підпису MongoDB GPG
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc |
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpgЦе завантажує та зберігає ключ GPG, який використовується для перевірки цілісності пакетів. Без цього кроку APT відмовиться встановлювати пакети з репозиторію MongoDB.
Крок 2 — Додавання офіційного репозиторію MongoDB
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg]
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list > /dev/nullКрок 3 — Встановлення MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-orgAPT тепер витягне найновіший випуск MongoDB 8.0 безпосередньо з офіційної CDN MongoDB.
3. Встановлення MongoDB на Ubuntu LTS (24.04 / 22.04)
Процес майже ідентичний Debian, але URL-адреса репозиторію відрізняється за кодовою назвою Ubuntu.
Крок 1 — Імпортування ключа GPG підписування MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc |
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmorКрок 2 — Додавання репозиторію для вашої версії Ubuntu
Ubuntu 24.04 (Noble Numbat):
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" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.listUbuntu 22.04 (Jammy Jellyfish):
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ]
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.listКрок 3 — Встановлення MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-org4. Запуск та включення служби MongoDB
Після встановлення використовуйте systemctl для запуску MongoDB та налаштування його автоматичного запуску при перезавантаженні сервера.
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod --no-pagerЧому daemon-reload?
Офіційна документація MongoDB спеціально рекомендує запустити systemctl daemon-reload перед запуском служби. Якщо ви пропустите цей крок і побачите помилку "Unit mongod.service not found", спочатку запустіть daemon-reload — це змушує systemd перечитати файли модулів з диска.
Очікуваний результат
Здорова служба MongoDB покаже результат, подібний до:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
Active: active (running) since ...Якщо статус показує failed або inactive, перейдіть до розділу Усунення несправностей.
5. Створення баз даних та користувачів
MongoDB не вимагає аутентифікацію за замовчуванням після свіжого встановлення. Це означає, що ви повинні створити своїх адміністратора та користувачів додатків перед увімкненням аутентифікації — інакше ви ризикуєте заблокувати себе.
Відкрийте MongoDB Shell
Підключіться до MongoDB локально на VPS:
mongoshКрок 1 — Створення адміністративного користувача
Перейдіть до бази даних admin та створіть привілейований адміністративний обліковий запис:
use admin
db.createUser({
user: "admin",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
})> Порада безпеки: Замініть STRONG_PASSWORD_HERE на випадково згенерований пароль довжиною не менше 20 символів. Використовуйте менеджер паролів або запустіть openssl rand -base64 24 на вашому сервері, щоб згенерувати один.
Крок 2 — Створення бази даних додатку та користувача
Створіть виділену базу даних та користувача з мінімальними привілеями, обмеженого лише цією базою даних:
use myapp
db.createUser({
user: "myapp_user",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "readWrite", db: "myapp" }
]
})Це дотримується принципу найменших привілеїв — ваш додаток має доступ на читання/запис лише до своєї власної бази даних, а не до всього екземпляра MongoDB.
Крок 3 — Перевірка створення користувачів
use admin
db.getUsers()Вийдіть з оболонки:
exit6. Захистіть вашу MongoDB Instance
Це найбільш критичний розділ посібника. Неправильно налаштовані MongoDB instances, відкриті для публічного інтернету, були причиною численних високопрофільних витоків даних. Власний контрольний список безпеки MongoDB є явним: посиліть вашу instance перед тим, як відкривати її для будь-якої мережі.
A) Прив’яжіть MongoDB до Localhost Only (Рекомендована за замовчуванням)
За замовчуванням MongoDB може слухати на всіх мережевих інтерфейсах. Обмежте її до localhost, якщо у вас немає конкретної, обґрунтованої потреби у віддаленому доступі.
Відредагуйте /etc/mongod.conf:
net:
bindIp: 127.0.0.1Застосуйте зміну:
sudo systemctl restart mongodЦе забезпечує, що MongoDB доступна лише з самого сервера — не з публічного інтернету.
B) Увімкніть аутентифікацію
Без увімкненої аутентифікації будь-який локальний процес може підключитися до MongoDB без пароля. Відредагуйте /etc/mongod.conf:
security:
authorization: enabledПерезавантажте сервіс:
sudo systemctl restart mongodТепер перевірте, що аутентифікація застосовується:
mongosh -u admin -p --authenticationDatabase adminC) Налаштуйте брандмауер
Якщо вам потрібно дозволити віддалені з’єднання (наприклад, з сервера додатків на іншій машині), обмежте порт 27017 лише на конкретну надійну IP-адресу. Ніколи не відкривайте порт 27017 для 0.0.0.0/0.
Використовуючи UFW:
sudo ufw allow from YOUR.TRUSTED.IP.ADDRESS to any port 27017 proto tcp
sudo ufw enable
sudo ufw statusПеревірте, що правило активне:
sudo ufw status verboseD) Використовуйте SSH Tunneling для безпечного віддаленого доступу (найкраща практика)
Найбезпечніший спосіб отримати віддалений доступ до MongoDB — це SSH tunnel. Це уникає відкриття порту 27017 взагалі і шифрує весь трафік під час передачі.
З вашої локальної машини:
ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IPПотім підключіться з вашої локальної MongoDB shell, як якби вона була локальною:
mongosh "mongodb://myapp_user:PASS@127.0.0.1:27017/myapp?authSource=myapp"Цей підхід настійно рекомендується для розробників, які отримують доступ до виробничих баз даних з ноутбуків або віддалених робочих станцій.
Резюме посилення безпеки
| Заходи безпеки | Місце розташування конфігурації | Пріоритет |
|---|---|---|
| Прив’язка до localhost only | /etc/mongod.conf → net.bindIp | Критично |
| Увімкнення аутентифікації | /etc/mongod.conf → security.authorization | Критично |
| Обмеження порту брандмауером | UFW / iptables | Високий |
| SSH tunnel для віддаленого доступу | Конфігурація SSH на клієнті | Високий |
| Використання користувачів БД з мінімальними привілеями | mongosh → db.createUser() | Високий |
| Оновлення MongoDB | apt-get upgrade mongodb-org | Середній |
7. Резервне копіювання та відновлення
Регулярне резервне копіювання є обов’язковим для будь-якої виробничої бази даних. MongoDB включає mongodump та mongorestore як частину пакета MongoDB Database Tools.
Створення стиснутого архіву резервної копії
mongodump
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipЦе створює один стиснутий файл архіву, що містить логічний дамп усіх баз даних.
Відновлення з архіву резервної копії
mongorestore
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipАвтоматизація резервного копіювання за допомогою Cron
Планування щоденного резервного копіювання за допомогою cron:
crontab -eДодайте наступний рядок для запуску резервної копії щодня о 2:00 ранку:
0 2 * * * mongodump --username admin --password PASS --authenticationDatabase admin --archive=/root/backups/mongo-$(date +%F).archive --gzip> Порада професіонала: Для позасайтової надмірності розгляньте можливість синхронізації архівів резервних копій у зовнішнє сховище за допомогою rsync або rclone. Ніколи не зберігайте єдину резервну копію на тому ж сервері, що й ваша база даних.
8. Усунення типових проблем
Перевірка журналів служби
Перше місце для пошуку, коли MongoDB не запускається або поводиться неочікувано:
sudo journalctl -u mongod --no-pager -n 200Це показує останні 200 рядків журналу systemd MongoDB — зазвичай достатньо для визначення основної причини.
Перевірка того, що MongoDB прослуховує очікуваний порт
sudo ss -lntp | grep 27017Очікуваний результат, якщо MongoDB запущена та прив’язана до localhost:
LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* users:(("mongod",...))Якщо немає результату, MongoDB не запущена або прив’язана до іншого інтерфейсу.
Перевірка встановленої версії MongoDB
mongod --versionТипові повідомлення про помилки та їх вирішення
| Помилка | Ймовірна причина | Вирішення | |
|---|---|---|---|
Unit mongod.service not found | systemd не завантажив файл модуля | Запустіть sudo systemctl daemon-reload | |
Address already in use | Порт 27017 займає інший процес | Запустіть `sudo ss -lntp | grep 27017` для визначення конфлікту |
Authentication failed | Неправильні облікові дані або неправильний authSource | Перевірте ім’я користувача, пароль та authenticationDatabase | |
Connection refused | MongoDB не запущена або прив’язана до неправильної IP | Перевірте bindIp у mongod.conf та статус служби | |
mongod.conf permission denied | Проблема з дозволами файлів | Запустіть sudo chmod 600 /etc/mongod.conf |
9. Заключні думки
Запуск MongoDB на VPS — це перевірений, економічно ефективний підхід для виробничих навантажень, які вимагають гнучкості, продуктивності та повного контролю над інфраструктурою. Дотримуючись цього посібника, ви встановили MongoDB 8.0 з офіційних репозиторіїв, налаштували автентифікацію та прив’язку мережі, створили користувачів бази даних з мінімальними привілеями, встановили правила брандмауера та організували процедуру резервного копіювання.
Кілька ключових моментів, які варто пам’ятати:
- Завжди включайте автентифікацію — неавтентифікований екземпляр MongoDB — це критична вразливість безпеки.
- Ніколи не відкривайте порт 27017 в публічний інтернет — використовуйте SSH туннелювання або обмежте доступ до конкретних надійних IP-адрес.
- Тримайте MongoDB в актуальному стані — регулярно запускайте
sudo apt-get upgrade mongodb-orgдля отримання патчів безпеки. - Тестуйте ваші резервні копії — резервна копія, яку ви ніколи не відновлювали, — це резервна копія, якій ви не можете довіряти.
Для команд, які потребують надійної, високопродуктивної основи для розгортання MongoDB, VPS Hosting AlexHost забезпечує SSD NVMe сховище, повний root доступ та гнучке масштабування ресурсів. Якщо ваше навантаження зростає понад можливості одного VPS, Dedicated Servers пропонують виділені CPU та RAM ресурси без ефекту шумного сусіда — ідеально для високонавантажених MongoDB replica sets або sharded clusters.
Потрібен повний стек хостингу? Поєднайте ваш VPS бази даних з Shared Web Hosting для вашого фронтенду або статичних активів та захистіть трафік вашого додатку за допомогою SSL Certificate для захисту даних під час передачі між вашими користувачами та вашими серверами.
*Останнє оновлення для MongoDB Community Edition 8.0 на Debian 12 (Bookworm) та Ubuntu 22.04/24.04 LTS.*
на всіх хостингових послугах