Начал смотреть проекты для запуска GitHub Actions локально, например https://github.com/nektos/act. Потом прикинул, что мне на самом деле нужно выполнять одну команду: docker build -f Dockerfile .. Поэтому я упростил себе задачу: перенёс эту команду на Raspberry Pi и настроил запуск каждые 4 часа.

С первого раза публикацию запустить не получилось: падала при сборке этого блога. Начал уже думать, что проблема из‑за архитектуры, но всё оказалось проще: на Raspberry Pi 4ГБ ОЗУ, а для сборки нужно около 8ГБ. 😬

Вспомнились резидентные программы на ассемблере, которые я писал в тетради, а потом раз в неделю переносил на компьютер и отлаживал — каждый регистр был на счету, как впрочем и компьютеры, доступные для программирования. Кстати, в новых Raspberry Pi уже есть 16ГБ — за 120$. Я обошёлся бесплатным решением: подключил swap.

Итак публикация базы знаний запускается на self-hosted "облаке" (до свидания GitHub Actions!) и работает около часа. Способов ускорить много, но сейчас это не так важно. Мне важнее получить первые впечатления от работы self-hosted решения.

Вот они:

  • поскольку log-фалы записываются в базу знаний, которая синхронизируется с моей рабочей машиной, я могу следить за ходом публикации в реальном времени с помощью tail -F logfile;

  • если нужно скопировать какой-то скрипт на Raspberry Pi, я просто копирую его в базу знаний — через мгновение он уже на сервере;

  • ура, первое приложение на axonaCloud!

Дальше хочу спроектировать систему, которая будет конфигурироваться и запускать приложения поверх базы знаний без необходимости подключаться через SSH и ручной настройки cron.

Хочу, чтобы всё работало как сейчас с публикацией статей: нажал «Сохранить» — и дальше все само опубликовалось. То же самое с приложениями: сохранил файл в редакторе — в моём личном "облаке" автоматически запустилась команда или процесс. Или чтобы процесс остановился, если я удалил файл или перезапустился, если я его изменил. Как-то так.

Пусть там будет «докер в докере», «утка в зайце» или ещё какая магия — главное, чтобы управлять приложениями в личном "облаке" было просто.