Цифровая автаркия


Как жить, если отключат интернет
Утро, кофе, вы садитесь работать, а интернета нет. Не на пять минут, а насовсем. pip install — ошибка. docker pull — таймаут. GitHub не открывается. Что из вашей работы переживёт этот день? А месяц?
Цифровая автаркия — это инфраструктура, которая позволяет разрабатывать, собирать и запускать софт без доступа к интернету. По сути, полная копия интернета. Точнее, та его часть, которой программисту достаточно, чтобы написать любую программу, не беспокоясь о внешних потрясениях.
К автаркии стремится каждая крупная IT-компания. Не из паранойи, а из опыта. Вендор внезапно меняет цены. Патентный тролль подаёт в суд. Репозиторий «прекращает работу в вашей стране». Санкции веером отключают целые регионы. Гиганту можно выключить интернет. Он проживёт вечность на своих зеркалах и сборочных конвейерах. А где такая автаркия для всех остальных?
Это не гипотеза. Это наше время.
В ночь с 7 на 8 октября 2026 года дата-центр «Яндекса» в Сасово был серьёзно повреждён атакой БПЛА. 9 октября удар пришёлся по дата-центру в Калуге. А уже 10 «Яндекс» включил атаки беспилотников в перечень форс-мажоров во всех своих сервисах.
Возможна ли автаркия дома?
Чтобы ответить, нужно поместить себя в нулевое состояние, когда не было вообще ничего. Представьте: злой волшебник отправил вас на пять тысяч лет назад. Как восстановить математику? Человечеству понадобилось три тысячи лет, чтобы изобрести отрицательные числа, и ещё шестьсот, чтобы додуматься до ноля. Современный школьник открывает для себя всё это за один урок. Три с половиной тысячи лет сжимаются в сорок пять минут, потому что знание уже добыто и записано. Если знание сохранено, цивилизация восстанавливается в кратчайшие сроки.
В софте роль знания играет исходный код. Это единственный источник правды. Пакеты, бинарники и образы — его производные: их всегда можно создать заново. А потерянный код придётся снова открывать с нуля. Значит, если есть полная копия GitHub, то автаркия готова? Не спешите. Дьявол кроется в деталях.
Проблема курицы и яйца
Копия GitHub — это как инструкция по сборке стола из IKEA в руках человека, стоящего в чистом поле. Ни отвёртки, ни болтов, ни дерева. Или так: я стою в поле с большой кулинарной книгой и хочу торт. Знания есть, у меня в руках все рецепты мира. Надо лишь яйца, муку, масло… и духовку, разогретую до 200 градусов. Получается, что пока я одомашниваю курицу и выращиваю пшеницу, надо ещё построить мельницу и изобрести духовку. Листаю энциклопедию и понимаю: ради духовки придётся поднять целую промышленность. До торта сотни лет…
С кодом та же история. Возьмём PyTorch и попробуем собрать из исходников. Смотрим зависимости: numpy, ninja, cmake, pyyaml… У каждой свои зависимости, а у тех свои. Строим дерево, собираем по порядку. Стоп. На чём собирать? Нужен компилятор. Системные пакеты. Сама операционная система. А её на чём? Чтобы собрать что-то, нужно уже иметь всё. И выход из этого тупика кажется невозможным.
Почему в софте это всё-таки возможно
В физическом мире духовка не сделана из рецептов. Но цифровой мир работает по-другому, в нём можно применить математическую теорему и срезать тысячелетия. Первыми всерьёз к этому подошли Nix и Guix двадцать лет назад. Задача у них была другая, но знакомая: пакет, собранный на одной машине, отказывался работать на другой. Виновата «пожившая» среда сборки: она незаметно вносила свои зависимости в результат. Не всегда, что бесит сильнее всего: плавающую ошибку ловить в разы дольше. Решение взяли из функционального программирования и объявили сборку чистой функцией. Одинаковые исходники дают байт-в-байт одинаковый результат на выходе. Всегда, на любой машине, хоть через сто лет.
Guix отшлифовал всё до предела. Вся система вырастает из бинарного файла размером 357 байт, его можно проверить вручную, глазами. Из него собирается крошечный ассемблер, из него — интерпретатор Mes, из него — TinyCC, из него — старый GCC, из него — современный, а дальше что угодно, вплоть до PyTorch. Ни одного бинарника, которому приходится верить на слово.
В nixpkgs сегодня больше 100 000 инструкций воспроизводимой сборки. Эти инструкции тоже код, лежат в обычном git-репозитории. Функциональное программирование говорит: всё есть функция. Цифровая автаркия добавляет: всё есть код. Надо только это разглядеть. Значит, если скопировать нужное и уметь правильно прочитать, дома можно собрать любой пакет, любой бинарник и любой образ. Автаркия возможна. И состоит она из четырёх слоёв.
Слой 1. Исходный код
GitHub и GitLab знают все. Менее известен Software Heritage — это не хранилище, а архив в библиотечном смысле: он непрерывно обходит публичные репозитории и сохраняет их навсегда. Даже если разработчик удалит проект, код останется, как книга в национальной библиотеке после того, как тираж сожгли.
Для собственного контура достаточно лёгких self-hosted зеркал: Forgejo или Gitea. Поднимаются за вечер на скромном железе, умеют автоматически зеркалировать нужные репозитории.
Слой 2. Сборка
Nix или Guix превращают код в работающие программы, скрывая сложный процесс сборки в своей изящной архитектуре. Пересобирать всё из 357 байт при каждом запуске не придётся. Собранные узлы дерева зависимостей попадают в кэш и ускоряют следующие сборки. Честность при этом не страдает: в основе чистая функция, значит любой узел из кэша байт в байт совпадает с тем, что собиралось бы с самого начала.
Слой 3. Хранение и раздача
Пакеты, бинарники и образы собраны, но как их раздавать? Каждая экосистема изобрела свой индекс: Python — PyPI, JavaScript — npm, Rust — crates.io, Debian и Ubuntu — apt-репозитории, а контейнеры хранятся на Docker Hub. У каждого свой формат, свой протокол, свои подписи. Обычный проект тянет зависимости из трёх-пяти таких индексов одновременно. Отключите интернет, и pip install умрёт первым, ещё до того как вы заметите пропажу GitHub.
Закрывают вопрос два проекта. Harbor — хранилище для контейнерных образов и Helm-чартов. И универсальный Pulp, который умеет зеркалировать и раздавать pip, npm, apt и maven из одной коробки.
Слой 4. Запуск
Для обычных пользователей существует множество сервисов с красивым UI: Cloudron, CasaOS, Umbrel, Runtipi, Coolify, CapRover, Dokploy. Кому нужен полный контроль — Ansible + Docker. Для масштабных систем — Kubernetes.
На этих сервисах держится весь современный DevOps. Но без первых трёх слоёв это лишь вершина айсберга. Кнопка «установить» тянет образы из Docker Hub, те собраны из пакетов PyPI, а те — из кода на GitHub. Обрыв любого звена ниже ведёт к сбоям и остановке личных проектов. Именно поэтому «развернуть у себя» и «автаркия» не одно и то же: разворачивать умеют все, переживать отключение — единицы.
Пояса цифровой автаркии
Собирать автаркию можно по частям, а зрелость измерять поясами, как в единоборствах.
Белый пояс. Своя инфраструктура плюс прокси-кэш: всё, что однажды скачали, остаётся у вас. Работает, пока работает интернет, но монополист уже не диктует цены: стоимость ваших сервисов — розетка плюс железо.
Коричневый пояс. Локальное зеркало всех транзитивных зависимостей для личных проектов. Всё выращено и разложено по Harbor и Pulp. Отключение интернета вы заметите из новостей, а не из терминала.
Чёрный пояс. Автономная инфраструктура, способная воспроизводить всю цепочку создания программ — от исходного кода и компилятора до готового контейнера. Полная история выбранных репозиториев, зафиксированные зависимости, локальные зеркала и проверяемая цепочка bootstrap. Интернет можно выключать.
Что в итоге
Все слои решения лежат в открытом доступе, осталось их собрать. Корпорации собрали это для себя. Очередь за всеми остальными.
Я начал с собственной инфраструктуры: поднял почту, Git, CI/CD, SSO, VPN, постепенно собираю остальные компоненты. До полной автаркии ещё далеко. Сейчас разбираюсь с Nix и Guix, изучаю зеркалирование зависимостей и проверяю, что действительно можно перенести на свой компьютер. Если вы уже строили что-то подобное, очень интересно узнать ваш путь и ваше устройство цифровой автаркии.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.