Чему учит постоянная релокация (или её ожидание) в контексте персональной инфраструктуры

TL;DR Автор рассказывает, как разовая релокация поселила в нём неуверенность в будущем, страх постоянных переездов и как это отразилось на его пет-проектах и сопутствующей инфраструктуре.
Дисклеймеры
Общий дисклеймер • О личности автора • Отказ от ответственности • Об использовании нейросетей
Аннотация
Данная статья рассказывает о причинах выбора схемы инфраструктуры, которая не зависит от постоянного местонахождения хозяина. Методика подбора решений сделана с учетом реалий, когда тебя могут выселить откуда угодно и взамен заселить в места не столь отдалённые, а твои бесконечные серверы и сервисы должны год-два самостоятельно работать, пополняться и не ломаться.
В публикации нет срыва покровов, просто очевидные истины. Каждый параграф говорит сам за себя, вам нужно лишь пройтись по их заголовкам. Рассматривайте статью как приглашение к обсуждению моей парадигмы жития-бытия в айтишном мире.
Статья рассматривает подстройку окружения исключительно в контексте вещей, связанных с ИТ. К сожалению, ввиду отсутствия личной жизни у автора нет ни желания, ни компетенций рассматривать социальную сторону в данном вопросе.
Введение
Кем я был до февраля 2022 года? Домосед с лёгким налётом синдрома Плюшкина. Как и полагается айтишнику и прожаренному эникею лёгкого вызова, дома было всё, что нажито непосильным трудом — от набора выживальщика в бетонных джунглях:
Как пример, моя гордость до сих пор



— до всяких проводов, железа, книг — в общем, все атрибуты базового накопительства. Не прям чтоб сталактиты вещей росли до потолка, но два-три шкафа были до отказа заполнены своим барахлом.
Так вышло, что в один момент из моей жизни исчезло примерно всё — от привычного окружения и людей до инструментов. Я уж было грешным делом подумал, что живу в коматозном сне Жириновского. А ещё я понял, что жизнь есть везде, не только в твоей малой родине. Ценность, которые я придавал своим эникеевским и программистским вещам, упала до нуля. Шок, стресс, трепет, смена картины мира и отказ от старых парадигм — помните это чувство?
Не сказать, что я за свою жизнь вообще никуда не ездил — годовая стажировка в Корее, валяние с кокосами на пляжах Паттайи и ночёвки в офисе Microsoft на Крылатских вполне могли считаться за длительные поездки (особенно по причине отсутствия финансовой возможности приехать обратно), только с той разницей, что я точно знал, что я в конце всегда приеду в свой дом и увижу своё любимое барахло — в хорошем смысле. А вот в ситуации с 2022-м годом, вы знаете, никто этого гарантировать не мог.
Но если гора блокирует для Магомеда свои сервисы — Магомед едет в неподсанкционное место поближе к горе и получает там ВНЖ. Я, например, настолько привязался ко всем этим «б-гомерзким» западным сервисам, которые сейчас в стране заблокированы с той или с этой стороны, и я настолько задолбался обходить одно, чтобы лицом встретить грабли от чего-то другого, что для меня выбор был более-менее очевиден. Поехали! В этой статье вы отвяжетесь от условного legacy, неактуального для релокантов.
Условия следующие: вы так или иначе постоянно перемещаетесь, за вашей спиной есть рюкзак с ноутбуком, при себе два-три смартфона с десятком eSIM разных стран и два-три паспорта (к сожалению, пока что только одной страны). Арендованная квартира вам не принадлежит. Чувство своего дома пропало, наверное, навсегда. Уверенности в работодателе нет. Карманного друга из местных вы так и не завели по причине своего аутичного поведения. Доверять некому, кругом враги и товарищи майоры. Есть только вы и ваша слегка барахлящая 80-килограммовая тушка.
Задача: спроектировать методику в создании собственной инфраструктуры так, чтобы она в случае вашего внезапного оффлайна на день, неделю или навсегда проработала хотя бы год без серьёзных последствий. Всё должно быть спроектировано так, чтобы требовало вашего минимального участия, и всё должно исходить лишь от гарантий или от максимально надежного варианта.
1. Облако — твой друг
Понимайте этот заголовок буквально. Нет, вы, конечно, можете настроить NAS и даже проксировать его в Интернет… до первого Чебурнета на несколько часов. А где гарантии, что это продлится не часы, а дни? Или, например, как в Беларуси, доступ извне будет закрыт? Если никто вам не даст таких гарантий — и даже если даст кто-то должностью ниже президента страны — то NAS в таком случае для вас потерян навсегда.
Я смирился с этим и продал его, даже удалять почти ничего не стал. Пусть коллекции нажитого контента в любительском формате несут дофамин любому, кто получит к нему доступ, но уже без моей аффилиации.
А как быть взамен? Статья не о приватности и конфиденциальности, поэтому, если хранить что-то приемлемое, то пойдет тот же Яндекс — он от 2 до 10 терабайт даёт. Или Microsoft — до 6 терабайт даст тебе. Лишь бы вы денюжку платили. Я фанат обоих стульев, поэтому взял оба. Нашим — одно православное, вашим — то же самое, но более скрепно-американское, своим — и то, и это.
Тем, кого волнует вопрос хранения 40-100 терабайт, в которые вложен смысл жизни и жизни нескольких человек (желательно, по-питерски, по частям), включая две-три статьи уголовного кодекса, то рекомендую в таком случае, действительно, пользоваться своим хранилищем и грамотно проксировать доступ к нему. Просто потому что аналогичные облачные мощности горячего хранилища сильно ударят по финансам. Вам придётся смириться с постоянным страхом его потери, ибо обслуживание, пожарная и ракетная безопасность и угроза сетевых проблем будет нарастать из года в год. Как вы будете организовывать доступ к своему NAS в эпоху балканизации Интернета (например, из Таиланда очень туго открываются веб-ресурсы СНГ) — задача будет тоже на вас. Я, к примеру, долго думал и мысленно эти проблемы решить не смог.
Преимущества облака в моём случае очевидны — распределённость инфраструктуры в случае ракетных ударов, высокая доступность в случае повреждений кабелей, интеграция в ОС на приемлемом уровне. Более высокая стабильность по сравнению с любыми self-hosted решениями, которые я когда-либо поднимал. Да и вряд ли я стану настолько крутым политиком, которому придётся беспокоиться о конфиденциальности данных настолько строго, что вернусь снова к личному NAS.
Касательно сравнения с self-hosted — извините меня, любые проекты в ИТ не существуют в вакууме. Они интегируются с чем-то, сами дают площадку для других и связаны так или иначе с десятками тысяч других проектов самыми разными способами на сотнях контрактов, парадигм и методик. Чтобы шагать в ногу со временем, всё это хозяйство так или иначе обновляется, изменяется и эволюционирует, зачастую просто потому, что зависимости диктуют правила, и поддержка легаси становится дороже по затратам. И если вы до сих пор пользуетесь RSA-128, SHA-1, SMB v1 и HTTP v1 20 лет подряд просто потому, что оно работает — это не значит, что всем остальным требованиям оно удовлетворяет, и что оно будет вообще хоть с чем-то совместимо. Ну, разве я не прав? Разверните современную инфраструктуру сейчас и попробуйте её хотя бы 10 лет не обновлять, а потом в итоге попробуйте обновиться — захлебнётесь где-нибудь в 99% случаев, обещаю. Регулярное обновление всего вашего добра тоже отнимает внимание, иногда нервы и время. А в облаке за приятными абстракциями за этим следит хорошо натренированный (будем мыслить оптимистично) условный индиец, который всё это сделает за вас.
Точно так же действуем в отношении почтового сервера, менеджера задач, заметок и прочего, что обычно идёт в комплекте. В общем, по-полной вендор-лочимся, но для особо мнительных не забываем бекапить все данные, пользуясь GDPR или API. К счастью, в моём случае всё и так было в облаке.
В случае с кодовой базой всё безоговрочно отдаём облаку. Делаем бекапы на ПК, где и разрабатываем. Иногда fetch’им, потому что я не всегда пишу на нём — иногда пользуюсь GitHub Codespaces на планшете, благо до сих пор есть студенческая подписка.
В общем, суть этого параграфа — по-максимуму сбросить услуги по обслуживанию хранилища кому-то ещё, за счёт своего кошелька.
2. Self-hosted — твой… ну, не враг, а «вынужденное зло»
Давайте начистоту. Не всегда что-то облачное будет 100% подходящим, учитывая, что вы — айтишник. У вас явно будут свои серверы, на которых крутятся свои решения. Тот же RSS, который я организовал как единую ленту для всего в моей жизни, требует часть сервисов хостить у себя.
Хостить самостоятельно, админить, играться с конфигами — да, весело, прикольно. Как строить что-то из советского железного конструктора. А как взрослеешь, и настаёт время это поддерживать — тут зачастую руки опускаются.
Поэтому, чтобы персональное костылеводство не отнимало у вас слишком много времени, обращайтесь к проверенным и, главное, готовым решениям, у которых:
-
Большая финансовая поддержка;
-
Несколько сопровождающих;
-
Есть крупная технологическая компания, которая является ключевым спонсором продукта;
-
История в несколько лет активной разработки;
-
Репутация индустриального стандарта;
-
Элементарно больше звёзд на GitHub;
-
Если решение — форк, оно должно активно синхронизировать или развиваться параллельно мейнстриму.
Решение может не соответствовать одну-двум-всем критериям, но должно просто быть просто лучше всех в плане стабильности работы, разработки и развития. Вот такие у меня понятия после 6 лет в кровавом энтерпрайзе.
Поэтому я:
-
ставлю на серверы ОС Ubuntu;
-
для хостинга в основном выбираю что-то из этого:
-
или аналогичные ультрадешёвые хостинги с более-менее внятным железом.
-
выбрал веб-серверы Caddy и NGINX;
-
FRP в качестве прокси;
-
WireGuard для связи между серверами.
Все эти сервисы крутятся в контейнерах Docker в пользовательской среде, запускаемых с docker-compose для воспроизводимости.
И таких серверов у меня с полтора десятка. Раскатывает конфигурации и в целом настраивает VPS — Ansible. Ещё XPipe для визуального отображения и сопровождения своей инфры. Всё это дело мониторит на одном из серверов Prometheus + Grafana + всякие node exporter, blackbox exporter, mongodb exporter, cAdvisor, экспортеры специально для Caddy, FRP, WG, Fail2Ban… Ну, не умею я в Кубер и в Traefik, но со своим сетапом пока не жалею.
Сервер я настраиваю таким образом, чтобы заходить через SSH в него можно было только по ключам и откуда угодно — попросту нельзя гарантировать, где я могу находиться в момент входа на сервер. Поэтому ограничение входа на сервер по IP-адресам мне не подходит. Я стремлюсь к упрощению сетевой архитектуры, поэтому единый сервер-шлюз, через который я могу «прыгать» на другие свои машины, мне тоже не подходит — появится очередная точка отказа. Таких централизаций «где не надо» быть в идеале не должно.
Fail2Ban следит наплывом желающим и футболит мамкиных хацкеров.
Советую так же изучить Ansible — в условиях, когда вам надо админить десятки серверов по всему миру, эта штука позволяет держать их в единообразии. К Ansible я пришёл сам как раз в поисках решения по автоматизации управления серверами — тупо надоело бегать между вкладками терминала и выполнять одно и то же раз к разу. Теперь я могу развернуть любой сервер разной направленности всего за десять минут!
В общем, посыл вы поняли. Ставлю я не то, что нравится (вообще, я душой за NixOS — конфиг и декларативность всему голова!), а то, что мне понравится обслуживать. Обслуживать мне не нравится совсем, поэтому я почти всегда е́ду на чужом горбу, имея минимум своих проектов и отсебятины. В общем, устанавливаю то, что обслуживать практически не нужно, ну, или хотя бы у чего широкая поддержка — не пропадёт та штука, в которую влиты миллиарды американских рублей и/или ужасных мясных механизмов под названием «человекочасы».
3. Автопродление из подконтрольных карт
Об этом сто раз говорили, и я повторю снова — если делаете автопродление с карты, то используйте для этого отдельную банковскую карту с чётко определённым запасом средств. Так рассчитывается гарантия расходования средств, выделенных только для поддержания работы инфраструктуры.
4. Своё железо исключительно для второстепенных целей
Одной из таких второстепенных целей я считаю бекап. Бекап настроен за счёт restic REST server и autorestic. Учил и набивал шишки в них в усиленном режиме 4-5 дней.
Что я для бекапа взял? Два дешевых ноутбука по цене похода в ресторан.
Ставил я Ubuntu на ноутбук за пару косарей прямо в МакДаке


Пробросил ноутбуки с помощью FRP наружу, в Интернет. Так как FRP есть на каждом моём хосте, я волен выбирать любой — подключил, и туда бекапятся все остальные хосты со всего Интернета.
Бекапы — это прикольно. Проверять я их, конечно, не буду

Так как бекап в моей картинке мира (сильно зашакаленной JPG) является исключительно второстепенным и легко масштабируемым методом, и ноутбуки мне не особо жаль бросать, то считаю задачу выполненной — работает, и ладно. Не работает — ну, не жили хорошо, нечего и бекапить.
5. Клиенты к проксирующим или виртуальным частным сетям — только на персональных устройствах
Актуально не только для РФ. Ну, вот нужно вам организовать такое, чтобы человек получил доступ к веб-сайту, который недоступен ему по какой-то причине (сам веб-сайт это сделал, государство или левый сапог генерала — неважно).
Иные это делают прямо на роутере (раз, два), кто-то — на одноплатнике, но истина в том, что сеть, через которую вы выходите в Интернет, изменчива. Дома у вас роутер и провайдер, в дороге — мобильный Интернет, на работе вы сталкиваетесь с корпоративной сетью. В таких условиях единственное, что более-менее надёжно работает (но не всегда надёжно сопровождается) — это решение на клиенте, который вы держите в руках. Просто потому что именно клиентское устройство в виде смартфона всегда у вас с собой, и оно перемещается между всеми этими сетями. Да и, мало ли, куда ещё нужно будет вынужденно переместиться в нашем странном мире, где правят одни старики…
В следующий раз, когда будете задумываться об установке чего-то подобного на роутер или одноплатник — помните, что роутер и одноплатник вы с собой каждый день носить не будете. И роутеров на все ваши сре́ды обитания не хватит. Поэтому приоритет в настройке клиентов прокси я делаю именно на смартфоны и ПК.
6. Бери от жизни и узбеков на рынке минимум
Получилось примерно как в этом меме

Приехали на новое место? Поздравляю, правильно войдите в хату, рассчитайтесь со смотрящим. И теперь грамотно обустройте жилплощадь.
Грамотно ≈ дешево.
Дело в том, что вам когда-нибудь, скорее всего, нужно будет оттуда съезжать на веки вечные. Гарантировать, что это «когда-нибудь» наступит примерно никогда, никто не может. Мебель, даже купленная на свои кровные — штука не совсем движимая. С собой её лучше не брать, а оставить на месте. Иногда даже на срочную продажу времени не хватит, особенно если она вам не принадлежит. В таком случае хотелось бы, чтобы ценность мебели стремилась к нулю.
В моём случае нужен был стол. У меня компьютерный сетап состоит из трёх IPS Full HD 27″ мониторов (почему именно их — читайте в следующем параграфе), для него нужен стол длиной минимум 1.8 метра. Такой я нашёл, но даже б/у он стоил непомерно дорого. Что-то в районе 7-10 тысяч рублей.
Что делаем? Я решил, по-моему, очень грамотно, и потому до сих пор горжусь этим решением и привожу его в пример:
-
Купил складной стол 70×50 см.;
-
Нашёл на помойке ножовку;
-
У узбеков на оптовом рынке, которые проводили ремонт в одном из помещений, взял два бруска. Позже у заброшенного советского элеватора нашёл похожие бруски, взял штук 5 про запас;
-
Купил столешницу 2.5×1.5 метра, поставил на маленький стол сверху;
-
Подпёр по бокам отрезанными ножовкой брусками, закрепил уголками. Неотёсанность брусков хоть вначале и подарила пару глубоких заноз, но сыграла положительную роль — об них трётся собака. Прикольное.
Вот что получилось в итоге


Точно так же я, например, чиню кровать, ламели (поперечные рейки) которой не выдерживают мою массу тела. И кресло взял самое дешёвое, просто потому что они в целом все одинаковые.
7. Покупайте такие вещи, которые не жалко бросить в любой момент
Философия тут такая: я не покупаю дорогих вещей, которые не смогу купить в любой другой момент времени в тех же количествах вдобавок к существующему. Исключение: системные блоки ПК с начинкой, недвижимость, автомобили. Исходя из этого, я беру максимально дешевые вещи, которые удовлетворяют моим требованиям.
В предыдущем параграфе я упомянул мониторы. Минимально комфортный сетап — это 30 Гц с минимальным вредом для глаз. Full HD с матрицей IPS идеально подходят, а 27″ — неплохая диагональ. Те, кто говорит, что на таком работать не будет — просто боятся, и я их понимаю. Я специально не привыкаю к крутым 2K/4K-мониторам с 0.5 мс. отклика и 499 fps, так как полюблю их с первого взгляда, но даже один такой монитор я куплю за слишком большие деньги — а таких мне нужно три минимум. Поэтому берём с ближайшего компьютерного ломбарда три HP’шки, доплачиваем сотку за гарантию в два года, радуемся. Агрессивно и насильно радуемся, чтобы затмить ощущения кайфа от ультраширокого самсунговского моника в 500 кадров/секунду… да, это было что-то.
Кто-то может обвинить меня, что я следую ультраправой идеологии разумного потребления и радикальной неовеганской политике отказа от пластика… но, на самом деле, я готов покупать дорогие вещи — просто где гарантии, что я смогу через 2, 5, 10 лет купить такие же дорогие штуки? Где гарантии, что я смогу осилить покупку дорогих часов или, скажем, трусов Calvin Klein, хотя бы на следующий день? А Full HD IPS 27″ мониторы как были 10 лет назад, так и остались. Нет ничего в мире более постоянного, чем Full HD IPS 27″ мониторы и цен на них — всегда около 10К рублей в любой момент времени.
А ещё — эти мониторы легко бросить! Вы не привязываетесь к дешману. Сдайте в тот же ломбард или сбудьте по бросовой цене на доске объявлений. Переезжаем в другую страну, берем те же самые мониторы — и все довольны.
В общем, вывод такой: искусственно занижайте свои требования к технике и мебели, довольствуйтесь минимально необходимым комфортом. В принципе, есть где спать, жрать и с*ать — и на том спасибо. Остальное найдете в мусорке или на рынке.
8. Только проверенные билды, LTS и гарантии в виде миллиардов денег
Тут всё просто. Ставьте и берите то, у чего больше сообщество, чьи детские болезни вы знаете и что проверено годами и желательно нехитрое в настройке: Ubuntu, Docker, WireGuard, FRP, NGINX/Caddy. Я об этом уже писал в параграфе №2. Важно не то, что вы стоите душой за любимый инструмент — важно, чтобы и через 5-10-15 лет этот инструмент был жив. А где найти лучшие гарантии, чем не благословение от Microsoft корпорации Canonical в виде партнёрства? Уж постабильней слова президента будет. Поэтому я выбрал Ubuntu. Условный Rocky/Arch/CentOS/Nix десять раз помрёт, форкнется и переродится, сломав совместимость, бренд и веб-сайт, а Ubuntu как будто всегда был всю мою жизнь…
9. Резервируйте себя и подготовьте документацию на случай… ну, вы поняли, какой
Вы не вечны. Радует, что сильные мира сего ещё более не вечны, учитывая средний возраст лидеров мира. Гарантий всё равно никто не даёт. Казалось бы, вот ты состоишь из миллиардов клеток — и, опа, вот ты уже другой человек с другим набором клеток через 5-6 лет. Парадокс корабля Тесея решён, вы — не тот, кем себя выдаёте, вы биологический самозванец, каждая клетка вашего тела это подтвердит. А, может, вам и не суждено будет вот так страшно мутировать…
Поэтому берём знакомого надёжного человека с бэкграундом в айтишке, учим топологии своей инфраструктуры, на draw.io рисуем схему всей инфры, чутка приплачиваем за обновление знаний раз в полгода. В случае года отсутствия в инфополе даём доступ к ящику (у Google есть такая автоматическая опция). В письме указываем, что и куда смотреть.
Создайте небольшой цифровой квест для получения всех сид-фраз нужным людям — в конце концов, вряд ли они вам пригодятся в безвыходной ситуации, а другим пусть послужат. Если вы всё же выберетесь, а цифровые активы кто-то проел или прое**л, то вы можете в буквальном смысле свести счёты, хех.
Небольшой квест для получения 2FA/MFA-кодов TOTP тоже пригодится. Их, как правило, в итоге нужно получить в основном тому, кто будет следить за вашей инфраструктурой.
10. Всегда ожидайте переезд, выезд, побег или эвакуацию в любой момент времени
Был переезд один раз, случится во второй и в третий. Начинайте специально загонять себя в стресс, подпрыгивайте от неожиданного звонка в дверь, на сильный стук готовьте дробовик мгновенно седейте. Документы в отдельном фольгированном пакете (схватил — и беги!), загранпаспортов обязательно минимум два, нотариально заверенные копии (в том числе бумажные) должны быть для каждой страны, где вы были. Нострификация (юридическое признание) дипломов должна быть произведена по возможности в каждой стране-мечте, просто на всякий.
Всегда держите и регулярно обслуживайте минимальный набор для побега — повербанк, два-три телефона. Для пограничников создавайте фейковые приложения наподобие Telegram-partisan, их и показывайте. Всегда держите наготове приложение с арендой eSIM для мобильного Интернета, чтобы по прибытию в незнакомую страну не терять связи.
Выводы
Только что мы рассмотрели десять наиболее основных пунктов, по которым автор живёт после релокации (не сказать, чтобы исключительно добровольной). Благодаря использованию в первую очередь облачных решений удалось сохранить мобильность и доступ откуда угодно, а отсутствие привязки к вещам (за счёт их дешевизны) позволит бросить обжитую нору в любой (не)удобный момент. Частично рассмотрены критерии выбора тех или иных инструментов и рекомендации по их настройке.
Вещи я копить перестал — нет смысла, если их сотрёт очередной возможный переезд. Коллекции лично собранного барахла в родном городе хотел было раздать, но почему-то почти никто в городе не хотел брать, например, HDMI-кабели, за небольшие деньги. Теперь моё барахло лежит в условном «холодном» хранилище, дожидаясь моего приезда.
Жизнь — сложная штука, а к сложным штукам нужно и готовиться соответствующе. Может, кто-то и скажет, что мне крышу снесло, но ведь лучше быть готовым ко всему крышесносным чудиком, чем неготовым здоровым человеком, верно? Поэтому поделился своими мыслями в этой заметке. Однажды серьёзный стресс в детстве привёл к перманентному выпадению волос, а стресс от переезда избавил меня от синдрома Плюшкина и выпадению доверия ко всему в этой жизни — и к жизни вообще. Надеюсь, следующий большой стресс не приведён к выпадению прямой кишки…
Автор: Kenya-West