15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
18.09.2025
2 +2

Как установить и настроить 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. Предварительные требования
  2. Установка MongoDB на Debian 12 (Bookworm)
  3. Установка MongoDB на Ubuntu LTS (24.04 / 22.04)
  4. Запуск и включение сервиса MongoDB
  5. Создание баз данных и пользователей
  6. Защита вашего экземпляра MongoDB
  7. Резервное копирование и восстановление
  8. Устранение распространенных проблем
  9. Заключительные мысли

1. Предварительные требования {#prerequisites}

Перед началом убедитесь, что выполнены следующие условия:

ТребованиеДетали
Доступ к VPSДоступ по SSH с правами root или 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 предлагают экземпляры Linux VPS с поддержкой SSD на высокопроизводительной инфраструктуре — идеально подходят для запуска production рабочих нагрузок баз данных.

Сначала обновите вашу систему

Всегда начинайте с полностью обновленной системы:

sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl

2. Установка MongoDB на Debian 12 (Bookworm) {#install-debian}

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-org

APT теперь будет загружать последний релиз MongoDB 8.0 непосредственно из официального CDN MongoDB.

3. Установка MongoDB на Ubuntu LTS (24.04 / 22.04) {#install-ubuntu}

Процесс почти идентичен Debian, но URL репозитория отличается в зависимости от кодового имени Ubuntu.

Шаг 1 — Импортируйте ключ подписи MongoDB GPG

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.list

Ubuntu 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-org

4. Запуск и включение сервиса MongoDB {#start-service}

После установки используйте 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 перечитать файлы unit с диска.

Ожидаемый результат

Здоровый сервис MongoDB будет показывать результат, похожий на:

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
     Active: active (running) since ...

Если статус показывает failed или inactive, перейдите в раздел Устранение неполадок.

5. Создание баз данных и пользователей {#create-databases-users}

MongoDB не требует аутентификацию по умолчанию после свежей установки. Это означает, что вы должны создать своих администратора и пользователей приложения перед включением аутентификации — иначе вы рискуете заблокировать себя.

Откройте оболочку MongoDB

Подключитесь к 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()

Выйдите из оболочки:

exit

6. Защита вашего экземпляра MongoDB {#secure-mongodb}

Это наиболее критический раздел руководства. Неправильно настроенные экземпляры MongoDB, открытые для общественного интернета, были ответственны за многочисленные громкие утечки данных. Собственный контрольный список безопасности MongoDB явно гласит: усилите безопасность вашего экземпляра перед открытием его для любой сети.

A) Привяжите MongoDB только к localhost (рекомендуемое по умолчанию)

По умолчанию 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 admin

C) Настройте брандмауэр

Если вам нужно разрешить удаленные соединения (например, с сервера приложений на другой машине), ограничьте порт 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 verbose

D) Используйте SSH туннелирование для безопасного удаленного доступа (лучшая практика)

Самый безопасный способ удаленного доступа к MongoDB — через SSH туннель. Это избегает открытия порта 27017 полностью и шифрует весь трафик в пути.

С вашей локальной машины:

ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IP

Затем подключитесь из вашей локальной оболочки MongoDB, как если бы она была локальной:

mongosh "mongodb://myapp_user:PASS@127.0.0.1:27017/myapp?authSource=myapp"

Этот подход настоятельно рекомендуется для разработчиков, получающих доступ к production базам данных с ноутбуков или удаленных рабочих станций.

Резюме усиления безопасности

Мера безопасностиМесто конфигурацииПриоритет
Привязка только к localhost/etc/mongod.confnet.bindIpКритический
Включение аутентификации/etc/mongod.confsecurity.authorizationКритический
Ограничение порта брандмауэромUFW / iptablesВысокий
SSH туннель для удаленного доступаКонфигурация SSH на клиентеВысокий
Использование пользователей БД с минимальными привилегиямиmongoshdb.createUser()Высокий
Поддерживайте MongoDB в актуальном состоянииapt-get upgrade mongodb-orgСредний

7. Резервное копирование и восстановление {#backup-restore}

Регулярные резервные копии являются обязательными для любой production базы данных. 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 AM:

0 2 * * * mongodump --username admin --password PASS --authenticationDatabase admin --archive=/root/backups/mongo-$(date +%F).archive --gzip

> Профессиональный совет: Для внесайтовой избыточности рассмотрите синхронизацию архивов резервных копий во внешнее хранилище с помощью rsync или rclone. Никогда не сохраняйте единственную резервную копию на том же сервере, что и ваша база данных.

8. Устранение распространенных проблем {#troubleshooting}

Проверьте журналы сервиса

Первое место для поиска, когда MongoDB не запускается или ведет себя не

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать