В тексте использование набора разрозненных инструментов не по прямому назначению, а для: 

  • Хранилища заметок

  • Канбан доски

  • Бэкенд android виджета

Когда возникла необходимость в VPN я решил арендовать под это дело отдельный VPS сервер. Мощности были взяты с небольшим запасом для разных экспериментов и личных мини проектов. Обычно для небольших веб приложений я использовал github pages, но у него есть очевидные минусы: некоторые вещи не хочется светить в паблике, иногда нужен полноценный сервер, а не простая статичная html страница. Для сервера были попытки использовать яндекс облако (есть  бесплатные лимиты), но разбираться с инфраструктурой лямбд, апи гэтвэев, s3 хранилищ и прочим оказалось довольно накладно, особенно когда что то надо поправить раз в месяц, а то и раз в год. 

Исходя из этих предпосылок после настройки VPN на сервере, туда же был поставлен gitea. Ресурсов gitea жрёт минимум, ставится и настраивается элементарно. Вначале я хотел попробовать использовать встроенный вики движок как простую альтернативу github pages. Гит сервер мне всё равно был нужен, а монструозные cms ставить совсем не хотелось (из соображений простоты и ресурсов VPS). Немного поигравшись с вики и поняв, что функционала простых md файлов мне не достаточно (да и js цеплять туда проблематично), я вернулся к html + js страничкам. Что бы это было похоже на github pages, я доставил на сервер nginx и настроил гит хуки для деплоя статики. Теперь у меня имелся git сервер с веб мордой для быстрого редактирования и создания файлов. И простейший автодеплой по коммиту. Чем не простейшая cms, да ещё и с версионированием контента? А ещё я хотел предоставлять контролируемый доступ другим пользователям до файлов репозитория. 

У gitea кроме функционала собственно гита (с веб редактором) и вышеупомянутого вики движка есть ещё и трекер задач. Тут видим стандартный функционал: у задач можно назначать исполнителя, дату выполнения, писать комментарии, цеплять изображения, объединять задачи в проекты с выводом на канбан доску (всё примерно как в gitlab). В качестве младшего сотрудника в gitea была добавлена жена и заведён небольшой список семейных дел (планов) на длинные выходные. В целом всё тоже самое можно сделать в trello или гугл документах, но тут точно не выносим семейное в чужое облако со случайным доступом. На практике, именно как инструмент для todo списков или планирования, канбан доска не слишком себя оправдала, но это больше вопрос к практике использования, а не инструменту.

Канбан доска
Канбан доска

Теперь стоит сделать небольшой шаг в сторону и объяснять, какие записи (заметки) я использую в повседневной жизни. Система ведения заметок ещё в процессе формирования, но пока получается так:

  • Оперативные заметки - бумажный блокнот, заметки в телефоне, отдельный гугл документ.

  • Список дел на сегодня или ближайшие пару дней - снова бумажный блокнот.

  • Напоминалки - календарь в телефоне.

  • Совместные семейные дела или планы - гугл документы с совместным доступом.

  • Записи по личным проектам или какие то долговременные записи - локальная система для ведения заметок (mindforger) + бэкап в яндекс диск.

Для ведения заметок я выбрал достаточно минималистичный mindforger который не умеет в облака, в синхронизацию и не имеет мобильного клиента. Тут gitea пригодилась для доступа до заметок на мобильном устройстве. 

В какой то момент ещё зародилась идея перекидываться цифровыми записками с женой, но не просто смсками или сообщениями в мессенджере, а так, чтобы текст был постоянно на главном экране телефона. Идеально для небольших напоминаний или намёков второй половине. Гугление вывело на замечательную программу widgetify. Работает она предельно просто - на экран телефона помещает виджет, внутри которого отображается скриншот любого сайта. Есть минимально необходимые настройки: урл, частота обновления виджета, авторизация, разные http настройки. Виджет умеет в push уведомления, но так как работает со скринами сайта, то уведомления срабатывают на процент разницы предыдущего и текущего скриншота. Такой подход в целом работает, но с нюансами - то страница не подгрузится полностью, то фоновое изображение по какой то причине отрендерится чуть по другому и даст ложное уведомление. Но для отправки небольшого текста на экран телефона работает приемлемо. 

Итоговое решение выглядит следующим образом. Имеется три основные html страницы с минимальным содержимым и стилями:

  • Шаблон виджета - html обёртка, стили, js. Эта страница отдаётся как статика через nginx, а в директорию статики попадает через гит хук.

  • И две отдельных html файлов куда вписывается текст сообщений, иногда с минимальным оформлением. Эти части снаружи уже доступны только через gitea api с использованием api токена.

  • Редактирование заметок собственно через веб интерфейс в gitea.

В widgetify прописывается адрес основной странички, через url передается api токен (но можно настроить и авторизацию по кукам). А страница виджета уже через api подгружает нужный текст сообщения. С апи фокус в том, что личные сообщения точно не светятся наружу без авторизации или апи токена. Для редактирования сообщений собственно используется веб редактор gitea. Из минусов - автодополнение редактора ломается и глючит в мобильных браузерах вплоть до поломки функционала редактирования текста. Тут спасает простое "набрать где то ещё -> скопировать -> вставить в gitea". 

В процессе использования такого виджета последовательно добавлялись улучшения:

  • Файл readme.md для инструкции, как этим пользоваться и быстрыми ссылками на редактирования нужного файла. Если жена долго ищет куда нажать, что бы набрать текст "люблю тебя", то текст сообщения рискует очень быстро превратиться во что то другое.

  • Чтение документации gitea вывело на раздел кастомизации. Оказалось, что можно поменять главную страницу gitea и убрать оттуда все программистские штуки и оставить ссылку на редактирования файла.

  • И последнее на данный момент улучшение - была добавлена поддержка парсинга markdown разметки через js библиотеку.

Дашбоард с быстрыми ссылками
Дашбоард с быстрыми ссылками

Обдумываю добавить внешний html (или markdown) редактор для полноценной поддержки мобильных браузеров. Либо добавить уже свою серверную часть, вместо использования gitea. Но это уже дополнительные трудозатраты с минимальным выхлопом.

А используется это следующим образом:

  • На главном экране телефона выводится виджет widgetify.

  • В телефоне же имеется иконка быстрого доступа до gitea, на главное странице которой есть разные ссылки, включая ссылку на открытие редактирования файла с текстом.

  • Набирается или вставляется из буфера обмена текст записки. 

  • Сохраняем файл (git commit!).

  • Приложение widgetify в течении нескольких минут идёт за обновлениями, обнаруживает изменения текста и показывает уведомление. Либо новый текст просто будет виден на главном экране телефона по факту взятия телефона в руки.

  • Все счастливы.

Виджет на экране телефона. Текст снизу и сверху меняется местами для каждого пользователя.
Виджет на экране телефона. Текст снизу и сверху меняется местами для каждого пользователя.

Таким образом имея VPS с минимальным софтом на борту получилось реализовать:

  • Доступ до личных заметок с мобильного устройства (mindforger + git + gitea). 

  • Статические веб страницы с редактированием контента из веб интерфейса (gitea + nginx + git hooks).

  • Приватный аналог trello (gitea).

  • Отправку коротких сообщений на экран телефон (gitea + nginx + widgetify).

  • Аналог pastebin и github gists с настраиваемым уровнем доступа (gitea).

Полезные ссылки:

Комментарии (6)


  1. Vedomir
    20.01.2025 12:39

    Познавательно, но конечно убивает вся ситуация при которой нет ни одной нормальной программы для заметок и все городят разные костыли. Сам уже с десяток перепробовал, но мне на мобильнике заметки не сильно нужны и в семье народ их не любит, как временное решение примитивнейшая ColorNote + с телеграма в спецгруппы только для себя пересылаю, на десктопе опять же оффлайновая CherryTree и у нее тоже есть свои глюки.


    1. anton99zel
      20.01.2025 12:39

      Google keep


      1. Vedomir
        20.01.2025 12:39

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

        Так вот навскидку там есть дерево папок с подпапками? Он смутно помнится как очень простенькая программа, могу ошибаться. Глянул сейчас по википедии судя по ней это вообще что-то запредельно примитивное, там не только папок нет но и версии для настольных компов которая бы оффлайн работала, а интерфейс простенький набор карточек.

        Ну и учитывая реалии уже хочется что-то с открытыми исходниками, возможностью работы полностью оффлайн и отсутствием жесткой обязательной привязки к облаку которое могут не только с нашей стороны заблочить, но и с той стороны могут не просто заблочить, а еще и все данные удалить. Опциональный свой сервер.


        1. anton99zel
          20.01.2025 12:39

          Есть ярлыки. Каждую заметку можно отнести к ярлыку. Оффлайн работает на смартфоне. Синхронизируется при наличии интернета. Есть напоминания. В основном использую как хранение логинов и паролей от учётных записей. Из плюсов, редактирую на телефоне, сразу же меняется на компьютере.

          Поднимать свой сервер и строить систему? Опустим трудозатраты и вложения, но уделять столько значимости им я бы не стал.

          Как вариант, посмотрите на сервисы от Zoho. Заметками не пользовался, но почта для меня идеальная.


          1. ZurgInq Автор
            20.01.2025 12:39

            Для простых заметок можно использовать вообще что угодно. А вот для организации личной базы знаний бэкапы куда то ещё всегда в тему. И даже отсутствие мобильного клиента тут не будет минусом. Так как с мобильного устройства нормально работать с текстом всё равно не выйдет.


          1. Vedomir
            20.01.2025 12:39

            Я же не претендую на абсолютную истину. Само собой есть люди, которым хватает какой-то из текущих систем заметок. И для которых у нее нет такой значимости. А есть немало других которым не хватает и заметки значимы. Я не первый раз вижу статьи вроде этой где обсуждаются самые разные и дико костыльные системы организации заметок. Явно проблема не у меня одного.

            По сравнению с описанной в статье системой поднятие своего сервера из одного монолитного приложения будет намного проще и ненужными усилиями оно кажется ровно до той поры, пока существующая система заметок в которую вложил много усилий не пришлет письмо "спасибо за ваши деньги, через две недели удаляем все ваши данные идите на ..." как это сделала Notion например. И да меня Notion тоже был неудобным с многими недостатками.

            И число папок у меня сильно за сотню запросто переваливает, и вложенность уровней на десять бывает, и заметок тысячи скапливаются за десятилетия. И нужны мне не просто плоская система ярлыков - мне нужно именно дерево папок например. Зачем? Думаю ответ простой - мне так хочется и нравится.