IT-бункер

2022-07-16

Пост задумывался, как рассказ о моей личной домашней инфраструктуре. Как и зачем всё работает, однако, всё пошло не по плану :).
Поэтому, скорее всего, через недельку-другую будет продолжение с конкретными примерами. А сейчас – просто о ситуации.

Итак, имеем следующее:

  • Озалупливаение пользователей из РФ зарубежными сервисами продолжается (хотя и бандеровские тряпки много где поснимали).
  • Docker ввел лимиты на pull образов, правда давно и с прошлым пунктом никак не связано.
  • Риск блокировок если не “ихними”, то “нашими” по прежнему высок.

Тут подробнее – вопрос к пидорасам с макбуками в наклейках – что вы все будете делать, когда github, bitbucket, gitlab решат вас отменить? Откуда будете черпать фреймворки? Как будете кодить в кофейнях?
Что будет, если вы не сможете “скачать библиотеку”, которая “обрезает пробелы”, допустим, в строке. А, сучата-зумеры? Сами же написать не в силах, да и никогда не были.

Продолжим.

  • Чудеса с NPM, когда во время сборки чего-либо вам в лучшем случае напишут пару лозунгов, а в худшем – зашифруют к хренам диск.
  • Чебурнет? Это уже даже не шутка.

Короче, время для того, чтобы немного пересмотреть отношение к своей собственной деятельности – оно настало. Причём давно.

Что может пойти не так ?

Извечный вопрос, который мы задаем себе довольно часто. Ответ очевиден – всё, что угодно.

Представьте себе это самое современное IT, в котором нет GitLab, StackOverflow, Google Drive…
Представьте себе, что привычных инструментов, которыми вы пользовались всю сознательную жизнь – больше нет.

Выживают только параноики. Рассчитывать стоит только на собственные силы.
Есть хорошие новости – кое-что можно сделать уже сейчас. И это даже не потребует особых финансовых вложений. Построим собственную инфраструктуру с блекджеком и шлюхами!

Арсенал

Gitlab ? Какой гитлаб ?

Рассмотрим простой пример. Вы счастливый пользователь GitLab (github, bitbucket), куда на потеху публике (ну или чСта для себя) выкладываете на регулярной основе тонны говнокода на PHP.
Так вот, чтоб в один прекрасный день не оказаться без аккаунта и кучи репозиториев, которые успели наплодить – стоит рассмотреть пару вариантов.

Self-hosted gitlab

Сию трихимундию можно поставить “у себя”. Гитлаб позволяет это сделать. Причем, чтоб не мучиться с разного рода запчастями – всё это уже заботливо завёрнуто в образы Docker.
Правда, как показала практика – это поделие довольно прожорливо и требует довольно большого количества ресурсов. Но если есть потребность в привычном интерфейсе, то почему бы и нет.
Ещё потребуется мигрировать проекты, но это дело отлично задокументировано.
Мне лично эта идея кажется вполне жизнеспособной. Но, во-первых, нас ещё не до конца забанили, чтоб переключаться на селф-хостед, а во-вторых GitLab имеет вражеские корни. Поэтому имеет смысл рассмотреть другой вариант.

Gitea

Это один из лучших продуктов, которые мне удалось “потрогать”. Да, это “обёртка” над GIT, который вполне может работать и сам по себе. Но с ней как-то лучше =).

  • Продукт вполне рабочий – проверено в деле.
  • Написан на Go, причем вдумчиво.
  • Требует мало ресурсов и взлетит даже на Raspberry Pi 3 и выше (хотя с 1 гб ОЗУ лучше не рассчитывать на чудо).
  • Самое важное (для меня лично) – Gitea умеет создавать mirror-репозитории. То есть вы точно также работаете с любимым сервисом, а она тихонько тащит к себе изменения, хоть каждый час.
  • У нее реально работает бэкап и восстановление, ну почти как описано в доках.
  • Развесистый API – почти каждую функцию можно вызвать снаружи через API.
  • В будущих стабильных версиях обещали функционал хранилища артефактов – OCI (open container initiative), PIP, NPM, Ruby Gems

Впрочем, последний пункт требует глубокого изучения. Не уверен, что там будет функционал проксирования, но если будет – то и Nexus (о котором ниже) можно будет тупо выкинуть.

Все чудеса тут

Повторюсь и особо отмечу – отличная функциональность интеграции с этими вашими GitHub’ами и Bitbucket. Вы коммитите код в привычные места, но если “что-то случилось” – все ваши поделия будут заботливо сохранены в предварительно настроенных зеркалах ваших репозитариев.
Нет, конечно же, можно отлично использовать GIT правильно и держать все проекты на десктопе/ноуте в виде рабочих копий, но почему бы и не попробовать Gitea ?
И да, у проекта корни из поднебесной. И есть ощущение, что софт писался не только в качестве менеджера Git, но и для того, чтоб подтягивать изменения из чужих проектов, то есть тупо пиздить код :).

Хранилище артефактов

Довольно часто в ежедневной работе вы просто пользуете утилиты pip, npm, да тот же docker pull для скачивания свежих образов. Мало кто задумывается откуда это всё “приезжает”.
Так вот представьте, что у вас исчерпался лимит на pull с dockerHub (увлеклись, бывает). Ну или не работает NPM центральный репозиторий. Ну, или для тех, кто поумнее – Maven Central.
На этот случай вполне можно поднять собственное хранилище артефактов с функцией кэширования.

Sonatype Nexus

Ну для меня лично тут вариант пока один – Sonatype Nexus. В Gitea обещана функциональность, но на данный момент я использую версию 1.16.7, в которой оной пока нет. Да и за проксирование не уверен.
Так вот, Nexus 3 – это локальное хранилище артефактов с функцией кэширования. Несмотря на то, что он написан на богомерзкой Java – продукт вполне рабочий и управляемый.

Я лично его использую для кэширования:

  • Docker images
  • NPM
  • PIP
  • Maven

И это только то, что используется в данный момент для кэша.
Помимо этого продукт умеет быть и APT-прокси, и go-прокси и просто хранилищем объектов.
Конечно, проекты придётся немножко перепиливать для работы с прокси, но дело того стоит. Во-первых, это отлично документировано, во-вторых, достаточно сделать это один раз и потом просто повторять.
Не уверен, что это лучший вариант, но подождем, когда объявленная функциональность появится в Gitea – потом можно будет сравнить.

“Воблочное” хранилище

Ну тут всё просто и не стоит даже растекаться мыслью по древу – NextCloud даёт всю нужную функциональность, которая может понадобиться.
Я не так давно в рамках обновления домашней инфраструктуры мигрировал с OwnCloud на NextCloud, особых проблем не выявлено.
В принципе, можно даже выкинуть Google Account, ибо там есть и календарь, и контакты.

Kubernetes

Вполне вероятно, что кто-то разрабатывает “что-нибудь” для kubernetes. И вполне вероятно, использует для этого какие-то публичные сервисы, типа того же Google Cloud, ну или там AWS.
Сюрприз! У вас могут кончиться деньги, либо вас просто выпиздят оттуда по политическим причинам. Но и тут есть варианты, как подстраховать себя.

MicroK8s

Недавно открыл для себя microk8s – вариант кубера для локального (и не очень) использования. Вариантов его установки – миллион. Я лично водрузил всю конструкцию в кластер из одноплатников.
Кластер, кстати, не совсем этот, обновлен, отрастил гигабит, уменьшился в размерах. Это тема для отдельной публикации, пока что многое не проверено и делать огульные заявления рановато, но прогноз очень хороший.
Да, и это чудо-изделие умеет ставиться в режиме оффлайн (что бы это не значило).

Остальное

Нам всем весьма комфортно искать и находить “нужную информацию” в этих ваших интернетах. Но бывает так, что страничка недоступна, ну или там поисковый запрос выдает уже не то, что раньше.
Обидно, правда? Ситуацию можно немножко исправить.

ArchiveBox

ArchiveBox изобрели замечательные люди, которые весьма страдали от проблем, описанных выше.

Что она делает ? Тупо сохраняет желаемые странички в нескольких форматах – тут и PDF, и архив для Chrome и скриншот. Реклама и всякий мусор, правда, тоже попадают, но задача выполняется на “отлично”.
Увы, у меня не заработал вариант Docker (там какие-то проблемы с chromium), вполне может быть что проблема уже решена. Самое важное – настроить один раз и завести привычку сохранять важное.

Мобильность

Всё описанное выше отлично работает в домашних условиях, но несмотря на гибель travel-индустрии в РФ бывает так, что нужно куда-то уехать. И надо организовать доступ извне.
Это возможно. И для этого совершенно необязательно иметь выделенный IP-адрес – достаточно арендовать VPS за небольшую сумму и начать игры с туннелированием ваших сервисов.
У меня для этих целей используется Wireguard, хотя возможны варианты. Кто-то обходится только ssh/autossh.

Этот пассаж немного неокончен, дело в том, что доступ к домашнему компьютеру или вообще сети организовать можно разными способами. Дело удобства, целей и вкуса.

Оргвыводы

DO NOT PANIC.
Во всех своих проблемах виноваты лично вы – ни в коем случае не политики, и не владельцы “сервисов”, которые решили отвесить вам поджопник, т.к. вы паспортом не вышли.
Ведь завтра в этой ситуации окажется какая-нибудь другая страна, и всё начнется сначала.

Список полезных привычек

  • Прежде чем подписаться на какой-либо “сервис”, подумайте, что будет, когда он перестанет работать.
  • Оценивайте риски.
  • Заботливо сохраняйте то, чем пользуйтесь.
  • Старайтесь пользоваться тем, что вы контролируете.
  • Не верьте “компаниям”. Когда что-то бесплатно – товар - Вы. Ни одна из “услуг” не стоит 100% доверия
  • Сделайте Google Takeout. Там много интересного.
  • Не переставайте учиться. Никто не знает, когда и что пригодится.

В массы

В трубу