Сервер установки: развёртывание сайта и установка с него
Понадобятся базовые навыки из Азбуки: SSH, домен и A-запись.
Сайт документации из каталога site/ — это одновременно сервер установки:
привязав к нему домен, вы ставите mitdev на любой новый сервер одной
командой:
curl -fsSL https://mitdev.example.com/get | sudo bash
Ниже — полный путь от пустого сервера до рабочей схемы.
Шаг 1. Подготовьте сервер для сайта
Подойдёт самый маленький VPS (1 ГБ RAM достаточно — сайт статический). Проще всего подготовить его этим же фреймворком:
git clone https://github.com/your-org/mitdev.git
cd mitdev
sudo ./install.sh
# компоненты: Nginx, Certbot, UFW, Fail2Ban (Node/Docker не обязательны)
Шаг 2. Привяжите домен
В DNS-панели создайте A-запись на IP сервера:
mitdev.example.com. A 203.0.113.10
Проверка: dig +short mitdev.example.com должен вернуть IP сервера.
Шаг 3. Соберите сайт
На рабочей машине (нужен Node.js ≥ 18; на веб-сервере Node не нужен):
cd mitdev/site
npm install
node build.mjs --url https://mitdev.example.com # ваш домен!
Домен запекается в скрипт /get и примеры команд — не пропускайте --url.
Результат — каталог site/public/:
| Файл | Что это |
|---|---|
index.html, *.html, assets/ |
сайт документации |
get |
скрипт установки одной командой |
mitdev.tar.gz |
дистрибутив (его скачивает get) |
Шаг 4. Выложите сайт на сервер
# с рабочей машины:
rsync -av site/public/ [email protected]:/tmp/mitdev-docs/
# на сервере:
sudo mkdir -p /var/www/mitdev-docs
sudo rsync -a --delete /tmp/mitdev-docs/ /var/www/mitdev-docs/
sudo chown -R www-data:www-data /var/www/mitdev-docs
Конфигурация nginx — /etc/nginx/sites-available/mitdev-docs.conf:
server {
listen 80;
listen [::]:80;
server_name mitdev.example.com;
root /var/www/mitdev-docs;
index index.html;
location / {
try_files $uri $uri.html $uri/ =404;
}
# Установочные артефакты не должны кэшироваться прокси/CDN —
# иначе /get будет ставить устаревшую версию.
location ~ ^/(get|mitdev\.tar\.gz|version\.txt)$ {
add_header Cache-Control "no-store";
}
}
Используете CDN (Cloudflare и т.п.)? После каждой перезаливки очищайте его
кэш для /get, /mitdev.tar.gz, /version.txt — или создайте правило
«не кэшировать» для этих путей. Проверка, что сайт отдаёт свежую версию:
curl -s https://mitdev.example.com/version.txt
Включение и SSL:
sudo ln -s /etc/nginx/sites-available/mitdev-docs.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo mitdev ssl mitdev.example.com # Let's Encrypt + redirect на https
Шаг 5. Проверьте
curl -fsSL https://mitdev.example.com/get | head -5 # скрипт отдаётся
curl -fsSLo /dev/null -w '%{http_code}\n' \
https://mitdev.example.com/mitdev.tar.gz # 200
Откройте https://mitdev.example.com в браузере — главная страница
с командой установки и вся документация.
Шаг 6. Устанавливайте новые серверы
На каждом новом сервере (Ubuntu 22.04, от root):
curl -fsSL https://mitdev.example.com/get | sudo bash
Скрипт скачает дистрибутив с вашего домена, распакует в /opt/mitdev-src
и запустит обычный TUI-инсталлятор — дальше всё как при ручной установке
(выбор компонентов, пользователь, SSH и т.д.). TUI работает и при запуске
через pipe: скрипт сам подключает терминал.
Скачивание с другого хоста (например, staging-копии сайта):
MITDEV_URL=https://staging.example.com bash <(curl -fsSL https://staging.example.com/get)
Обновление сайта и дистрибутива
HTML руками не редактируется. Цикл обновления:
# 1. правите docs/*.md или код проекта
# 2. пересборка (обновляет и mitdev.tar.gz):
cd site && node build.mjs --url https://mitdev.example.com
# 3. перезаливка:
rsync -av --delete public/ [email protected]:/var/www/mitdev-docs/
Новые серверы сразу получают свежую версию; уже установленные обновляются
через git pull в /opt/mitdev или повторный curl …/get | sudo bash
(установка идемпотентна).
Замечания по безопасности
- Сайт полностью статический — ни PHP, ни базы, атаковать нечего;
держите систему обновлённой (
mitdev update) и UFW включённым. mitdev.tar.gzсодержит только код фреймворка — никаких секретов в него не попадает (пароли генерируются на целевом сервере при установке).- Практика «curl | bash» требует доверия к домену: используйте только HTTPS
(шаг с
mitdev sslобязателен) и не размещайте сайт на серверах, к которым есть доступ у посторонних. - При желании ограничьте доступ на уровне nginx:
allow <ваши-IP>; deny all;внутриlocation— документация и установка станут приватными.