Быстрый старт

Первое окружение поднимается за несколько команд: опишите его во flake и отправьте через mev — платформа создаст изолированный контейнер с маршрутизацией по HTTPS, постоянным хранилищем и автоматическим засыпанием.

Что нужно заранее

Шаг 1. Описать окружение

Создайте каталог myenv/ с файлом flake.nix:

{
description = "Моё окружение на maximaster.dev";

# Входов нет: spec — это только данные, поэтому flake вычисляется
# под --pure-eval --restrict-eval.
outputs = _: {
mev = {
name = "alice/myenv"; # <owner>/<slug>
domains = {
"alice-myenv.dev.maximaster.ru" = { port = 80; };
};
users = [ "alice" ];
idle = "30m";
quota = "10G";
};
};
}

Поле name задаёт явный <owner>/<slug>. Владелец (alice) должен быть в списке users и совпадать с именем того SSH-ключа, которым вы подключаетесь. Числовой идентификатор платформа выдаёт сама — указывать его во flake не нужно.

Полное описание опций — в справочнике окружения.

Шаг 2. Отправить flake

mev ./myenv --host dev.maximaster.ru

mev упаковывает каталог в tar-архив и передаёт его на хост по SSH. Там mevd проверяет схему, авторизует запрос и запускает согласование: выделяет id, создаёт ZFS-датасет с квотой, собирает образ контейнера через extra-container и регистрирует маршруты в Traefik.

Окружение создаётся остановленным (autoStart = false). Повторный mev push применяет изменения, не трогая данные.

Шаг 3. Открыть окружение по HTTPS

Сделайте первый HTTP-запрос к объявленному домену:

curl -fsS https://alice-myenv.dev.maximaster.ru/

Traefik направит запрос на активатор пробуждения, который:

  1. Сверится с реестром (/var/lib/env-wake/registry.json).
  2. Запустит systemctl start container@env<id>.
  3. Дождётся готовности приложения.
  4. Проксирует запрос на адрес контейнера (100.64.x.x:<port>).

Первый запрос идёт медленнее — это холодный старт. Дальше окружение отвечает мгновенно, пока снова не заснёт.

Шаг 4. Доступ по SSH

К любому окружению ведёт единый диспетчер хоста. Добавьте в ~/.ssh/config:

Host *.dev.maximaster.ru
ProxyCommand ssh proxy@dev.maximaster.ru %h
User alice

User — ваше имя в реестре ключей платформы. Без него ssh подставит имя локального пользователя, и диспетчер откажет во входе.

Затем:

ssh alice-myenv.dev.maximaster.ru

Если окружение спит, диспетчер разбудит его через управляющий сокет активатора ещё до установки соединения.

Шаг 5. Засыпание и пробуждение

Окружение засыпает само после простоя (idle, по умолчанию 30m). Любой HTTP-запрос или SSH-подключение будит его незаметно.

Проверить состояние:

mev status alice/myenv

Посмотреть все свои окружения:

mev list

Дальше