Кладёшь папку в репо — через минуту она живёт на своём поддомене. Серт, DNS, из РФ открывается — под капотом. Руками не трогаешь ничего.
lab.aimindset.org
01 ЗАЧЕМ
Сайты расползлись по Netlify.
bio, context, health, ivanov, osokin, textpalette, дашборды… — у каждого свой аккаунт, свои настройки, свой бардак. Два больных места:
Из РФ не открываетсяNetlify и CF-proxy режут российский трафик. Студент из Москвы жмёт ссылку — смотрит в пустоту. Из-за этого ai-native уже уехал на наш сервер.
Каждый сайт — рукамиНовый лендинг = deploy-key, systemd-timer, vhost в конфиге, DNS-запись. Пять шагов вручную, всё на одном человеке. Не масштабируется.
Надоело. Собрали фабрику: один раз настроил — дальше само.
02 КАК ВЫЛОЖИТЬ САЙТ
1
Клонируешь общий репо.
# один раз
git clone git@github.com:ai-mindset-org/lab-sites.git
Решает не поддомен, а для кого сайт. Единственное, что держишь в голове — и агент, который деплоит, тоже.
Тип
Куда смотрит
Кто откроет
внешнее
публичный IP
кто угодно: студенты, гости, весь мир. Из РФ — тоже.
внутреннее
Tailscale, внутренний
только команда в нашей сети. Наружу не торчит.
Преза студентам или лендинг — внешнее. Сервис для своих (CRM, инспектор сессий, контент-календарь) — внутреннее. Передумал — переключается одной записью.
04 ПОД КАПОТОМ
Один хостВыделенная VM в Нидерландах. Изолирована от прод-сайта и от личных машин.
Caddy + Let's EncryptTLS-серты сами выпускаются и продлеваются, через DNS. Wildcard на весь *.lab — новый сайт серта не ждёт.
DNS-only для РФНикакого проксирования, которое режет Россию. Домен указывает прямо на наш IP.
Git — источник правдыЧто в репо, то на проде. Откат = git revert. История правок сохраняется.
05 ЧТО ЕЩЁ НЕ ДОКРУЧЕНО — ЧЕСТНО
Прямой публичный IP под lab. Второй IP сервера капризничает (специфика провайдера) — пока внешний вход идёт через рабочий узел. Работает, но дожму до чистой схемы.
Динамика (*.app). Статику фабрика держит. Для сервисов-докеров движок ещё выбираем командой — отдельный разговор.