Що встановлено на вашому сервері MERN?
- Проєкт React, створений через Vite, у /home/app/uygulama/istemci
- Express 5 і Mongoose 9 у sunucu/server.js, з маршрутом /api/saglik, що справді пише в MongoDB
- Node.js 26 (репозиторій NodeSource) і PM2
- MongoDB 8.0, що слухає лише 127.0.0.1 і захищена користувачем та паролем
- Caddy, який сам отримує сертифікат HTTPS для адреси sslip.io, тож домен не обов’язковий
- Файл підкачки на 2 ГБ і брандмауер, де відкриті лише порти 22, 80 і 443
Який розмір потрібен для MERN?
Офіційного обсягу RAM для MERN немає. На цьому сервері Node.js, MongoDB і збірки React ділять одну пам’ять, а кеш MongoDB становить 512 МБ за 2 ГБ і 1,5 ГБ за 4 ГБ. Для орієнтиру 2 ГБ — добрий початок для демо чи невеликого проєкту, а 4 ГБ — для проєкту зі справжніми користувачами. Найменший розмір — 2 ГБ RAM, 1 процесор і диск 20 ГБ. RAM і процесор можна збільшувати й зменшувати, диск лише зростає, а дані та IP-адреса лишаються тими самими.
| Використання | Розмір | Ціна | Обрати |
|---|---|---|---|
| Стартовий | 2 GB RAM · 1 vCore · 40 GB NVMe | $4.01/міс. | |
| Середній | 4 GB RAM · 2 vCore · 60 GB NVMe | $6.89/міс. | |
| Потужний | 8 GB RAM · 4 vCore · 120 GB NVMe | $13.62/міс. |
Кому підійде?
- Усі, кому потрібні фронтенд на React і API на Express на одному сервері
- Розробники, що публікують на власному сервері застосунок React, створений за допомогою інструментів ШІ
- Невеликі команди, що випускають демо, першу версію чи внутрішній інструмент
Що буде після замовлення?
- Задайте розмір і завершіть оплату.
- Ваш сервер запускається, а стек MERN встановлюється сам. У наших тестах на справжніх серверах це зайняло близько 4 хвилин.
- Відкрийте «Адресу сайту» на вкладці «Огляд». На сторінці-прикладі написано MongoDB: OK.
- Підключіться через SSH і введіть su - app. Покладіть проєкт у ~/uygulama: React — в istemci, Express — у sunucu.
- Зберіть проєкт із теки istemci: npm run build -- --outDir ../sunucu/public --emptyOutDir
- Виконайте pm2 restart uygulama і перевірте зміну за своєю адресою сайту.
З кожним сервером
- Щоденне резервне копіювання входить у ціну
- Необмежений трафік
- Повний доступ root
- Пізніше можна збільшувати чи зменшувати RAM і CPU, а також збільшувати диск
- Розташування: Istanbul · IST-1.
Корисно знати
- Замовляючи, ви приймаєте умови Server Side Public License (SSPL) від MongoDB.
- Caddy пересилає запити на 127.0.0.1:3000. Слухайте цей порт у власному серверному файлі, а адресу бази даних читайте з MONGO_ADRES у sunucu/.env.
- Змінні, що починаються з VITE_, під час збірки записуються у ваш код і видимі в браузері. Не кладіть у них секрети й перезбирайте проєкт, коли значення змінюється.
- Якщо ваш вхідний файл не server.js, перевизначте процес: pm2 delete uygulama, pm2 start FILE --name uygulama, pm2 save.
- Вузол MongoDB один. Для транзакцій або потоків змін із Mongoose налаштуйте набір реплік.
- Підтримувати Node.js, MongoDB і ваші пакети npm в актуальному стані — ваша відповідальність.
MERN: запитання й відповіді
Як розгорнути проєкт зі стеком MERN?
Перейдіть командою su - app і покладіть код Express у ~/uygulama/sunucu, а код React — у ~/uygulama/istemci. Виконайте npm install в обох теках, зберіть проєкт із istemci командою npm run build -- --outDir ../sunucu/public --emptyOutDir, потім виконайте pm2 restart uygulama.
Скільки RAM потрібно стеку MERN?
Офіційного обсягу RAM для стека MERN немає. Для орієнтиру 2 ГБ — добрий початок для демо чи невеликого проєкту, а 4 ГБ — для проєкту зі справжніми користувачами.
Чи потрібно налаштовувати CORS?
За такої схеми ні. React збирається, Express віддає результат, а API лежить за тією самою адресою, тож фронтенд звертається напряму до шляхів, що починаються з /api. Якщо розміщуєте фронтенд деінде, CORS в Express налаштовуєте самі.
Чи дає React Router помилку 404 під час оновлення сторінки?
Ні. server.js із прикладу повертає index.html для будь-якого невідомого шляху, і далі працює React Router. Якщо пишете власний серверний файл, збережіть цю поведінку й визначайте маршрути API перед нею.
Чи можна підключитися до MongoDB ззовні?
На цьому сервері MERN MongoDB слухає лише всередині сервера. Щоб скористатися Compass, відкрийте тунель SSH командою ssh -L 27017:127.0.0.1:27017 root@IP.
Чи повернеться мій застосунок після перезавантаження?
Так. PM2 працює як служба pm2-app, яка під час запуску відновлює збережений список процесів. Змінивши процеси, збережіть список командою pm2 save.