Большое руководство: от нуля до работающего проекта

Это пошаговый учебник для человека, который никогда не настраивал серверы. Каждый сценарий — законченный: скопируйте команды по порядку, отвечайте на вопросы на экране — и получите работающий результат.

Совсем не знакомы с серверами? Сначала прочитайте Азбуку (10 минут): что такое VPS и где его арендовать, как подключиться по SSH с Windows/macOS, как вводить команды и редактировать файлы, что такое домен и A-запись, словарик терминов. Здесь мы считаем, что вы это уже знаете.

Руководство разбито на три коротких части, чтобы читать по мере надобности:

Часть 1 — Начало (эта страница):

  1. Что такое mitdev и как он устроен
  2. Подготовка: свой сервер установки
  3. Первый сервер за 10 минут
  4. Развернуть свой проект (сайт/API) с доменом и HTTPS

Часть 2 — Дальше: свой nginx-конфиг · Docker · Kubernetes · отказоустойчивый кластер PostgreSQL.

Часть 3 — Эксплуатация: бекапы и восстановление · повседневный уход · что делать при сбоях.

Готовые сценарии популярных стеков (Next.js, NestJS, Laravel, HA на 3 VPS) — отдельно в Рецептах.


1. Что такое mitdev

mitdev — это два инструмента:

Философия: вы указываете данные — mitdev делает всё руками за вас. Пароли генерируются и сохраняются в /root/.mitdev-credentials (файл читает только root). Любую установку можно запустить повторно — это безопасно.

Что понадобится: сервер(ы) с Ubuntu Server 24.04 (любой VPS от 1 ГБ RAM), root-доступ по SSH и, для доменов, доступ к DNS-панели.

2. Свой сервер установки

Один раз разверните сайт документации — он же сервер установки. После этого любой новый сервер настраивается одной командой. Полная инструкция — SITE.md; краткая версия:

# на рабочей машине (нужен Node.js):
cd mitdev/site && npm install
node build.mjs --url https://mitdev.top        # ваш домен!
# содержимое site/public/ загрузите на веб-сервер, привяжите домен, включите SSL

Проверка: откройте https://mitdev.top в браузере — увидите эту документацию.

3. Первый сервер

Возьмите чистый VPS с Ubuntu 24.04, зайдите по SSH под root и выполните:

curl -fsSL https://mitdev.top/get | sudo bash

Инсталлятор проверит сервер (диск, память, интернет) и начнёт задавать вопросы. Что отвечать в типовом случае:

Вопрос Что ответить
Выбор компонентов оставьте отмеченное по умолчанию (Node, Docker, Nginx, PM2, Certbot, UFW, Fail2Ban)
Имя пользователя Enter (будет deploy — под ним живут ваши проекты)
Пароль пользователя придумайте и введите дважды
SSH-ключ вставьте ваш публичный ключ (строка ssh-ed25519 …); если нет — Enter
Порт SSH Enter (22) или свой
Запретить root по SSH / отключить пароли пока учитесь — «Нет»; в бою — «Да»

Дальше — прогресс-бар. В конце — сводка с IP, версиями и статусами. Проверьте: mitdev doctor — все строки должны быть зелёными.

Что произошло: сервер обновлён, стоит весь стек, файрвол пропускает только SSH/80/443, Fail2Ban банит перебор паролей, у вас есть пользователь deploy с каталогами ~/apps (проекты), ~/backups, ~/logs, ~/scripts.

4. Развернуть проект

Ваш проект лежит в git (GitHub/GitLab). В DNS-панели домена создайте A-запись: myapp.example.com → IP сервера. Затем на сервере:

sudo mitdev app

Вопросы:

Вопрос Пример ответа Пояснение
Имя приложения myapp имя каталога и процесса
URL git-репозитория https://github.com/you/myapp.git приватный — используйте deploy-token в URL
Домен myapp.example.com пусто — без nginx (доступ только по порту)
Порт приложения 3000 порт, который слушает ваш код внутри сервера
Свой nginx-конфиг Enter см. часть 2 → nginx
Выпустить SSL? «Да» сертификат Let's Encrypt + редирект на https

Что mitdev сделает сам: клонирует репозиторий в /home/deploy/apps/myapp, создаст .env из .env.example (не забудьте вписать свои значения: sudo nano /home/deploy/apps/myapp/.env), поставит зависимости (сам поймёт — npm/pnpm/yarn по lock-файлу), поднимет docker compose, если он есть, настроит nginx «домен → ваш порт» и выпустит сертификат. Продление сертификата автоматическое — systemd-таймер certbot проверяет его дважды в день, вам делать ничего не нужно (контролируется в mitdev doctor).

Если проект — Node без Docker, запустите его через PM2 (менеджер процессов, который переживает перезагрузки):

sudo -u deploy -H bash -lc 'cd ~/apps/myapp && pm2 start npm --name myapp -- start && pm2 save'

Обновление после git push — одна команда:

sudo mitdev deploy myapp     # pull → зависимости → build → рестарт

Дальше

Базовый сервер и первый проект работают. Продолжайте по мере надобности: