Получилось реализовать запуск процессов на сервере на основе блоков кода из документа. Все работает так, как хотелось. После сохранения документа в локальную базу знаний он автоматически синхронизируется и анализируется на сервере. Каждый блок кода запускается на сервере в изолированном окружении под управлением Ubuntu.
На данный момент документ выглядит так:

«DevOps Notebook» for axonaCloud
Поскольку вся разметка, кроме блоков кода, игнорируется, документ можно использовать как обычную статью или заметку.
Блоки кода можно сопровождать подписями и поясняющим текстом. Их также можно группировать по темам с помощью заголовков.
База знаний монтируется внутрь docker-контейнера в каталог /base
и доступна для запускаемых скриптов в режиме только чтения.
Мне больше не нужно подключаться к серверу — так как логи хранятся в базе знаний, они автоматически доступны на локальной машине.

Файлы с журналами запусков процессов в облаке axonaCloud доступны в базе знаний локально
Docker образ, в котором будет запущен скрипт можно указать явно с помощью атрибута dockerImage:
=begin code :id<reset> :dockerImage<'docker:27-cli'>
#!/bin/sh
echo " - Docker: $(docker --version 2>/dev/null || echo 'Not available')"
echo " - Docker: $(docker system prune -f 2>/dev/null || echo 'Not available')"
=end code
Каждый блок кода с атрибутом cron запускается по расписанию, а без атрибута - один раз при старте сервера или перезапуске процесса.
Например вот как публикуется сайт zag.im
:
=begin code :id<publish-zag.im> :cron("20 7-21 * * *") :dockerImage<'podlite/podlite-web:v0.2.9'>
#!/bin/sh
# prepare ENV
export SITE_URL="https://zag.im"
export SITE_ARGS="./pub -s ${SITE_URL} --preset pubdate -i ./pub/digitalGarden/03-zag.im-site/index.pod6"
echo "Running publish for ${SITE_URL}"
# skip a piece of real code because it's just an example
# publish website
( cd /base/cloud/secure && bash publish.zag.im.bash )
=end code
Из-за проблем с атрибутами для блоков кода в markdown
(их просто нет 🥴) для Markdown разметки доступен только однократный запуск в Ubuntu контейнере. Записал себе в планы этот вопрос проработать.
Планирую пожить с новой системой какое-то время и посмотреть, как всё это работает. А также подумать, в каком направлении можно дальше развивать идею self-hosted облака поверх локальной базы знаний.