Менеджер закладок на своём сервере

от автора

Хранить тысячи закладок в браузере — совершенно неблагодарная задача. Там отсутствуют даже офлайн-предпросмотр и автоматические теги, не говоря о полнотекстовом поиске и автоматическом скачивании/архивировании по RSS.

Для нормального управления закладками нужно специализированное решение. Тут много вариантов, а одно из лучших — это опенсорсное приложение Hoarder («Копилка информации»). Оно устанавливается на сервер и выступает единой БД для доступа из любых клиентов: Android, iOS, Chrome, Firefox и т. д.

Рассмотрим базовые функции этого приложения и как установить его на машине, где хранится личный информационный архив. Это может быть или домашний сервер, или VPS.

▍ Основные функции

  • Хранение закладок (ссылок) и простых заметок, сохранение изображений и файлов PDF.
  • AI-теги, автоматическая простановка меток для более быстрого поиска контента:

  • Автоматический фетчинг названий, описаний и изображений.
  • Предпросмотр контента:

  • Сортировка закладок в списки:

  • Полнотекстовый поиск по закладкам.
  • Автоматическое распознавание текста на картинках (OCR).
  • Удобный самохостинг в докер-контейнере.
  • Быстрое управление закладками с помощью массовых действий.
  • Тёмный режим для комфортного чтения:

▍ Установка и конфигурация

Серверную часть Hoarder проще всего установить в докер-контейнере. В свою очередь, для этого лучше всего подходит VPS с уже установленной операционной системой и Docker. В маркетплейсе этот образ называется DOCKER CE – UBUNTU 18.04. Нажимаем кнопку «Заказать», выбираем дата-центр и конфигурацию VPS. По умолчанию предлагается двухъядерный CPU на 2,2 ГГц, два гигабайта оперативной памяти и SSD 20 ГБ. Можно заменить SSD на HDD и сэкономить 200 руб. в месяц или произвести другие изменения в конфигурации:

Через несколько минут виртуальный сервер готов к работе:

Подключаемся к нему по SSH, используя клиент PuTTY:

Для начала нужно создать рабочую директорию, где будет храниться файл docker-compose.yml и переменные окружения:

mkdir hoarder-app

Затем скачиваем этот файл и помещаем его в созданную директорию:

wget https://raw.githubusercontent.com/hoarder-app/hoarder/main/docker/docker-compose.yml

Чтобы сконфигурировать приложение, нужно создать файл .env с переменными окружения в той же директории. Минимальное содержимое файла:

HOARDER_VERSION=release NEXTAUTH_SECRET=super_random_string MEILI_MASTER_KEY=another_random_string NEXTAUTH_URL=http://localhost:3000

Случайные строки можно сгенерировать в другом приложении, а в качестве localhost устанавливаем наш IP-адрес 193.108.113.194.

Генерация случайных строк:

openssl rand -base64 36

Строка HOARDER_VERSION=release означает, что будет скачана последняя стабильная версия приложения. В случае необходимости можно прописать какую-то конкретную версию, например, HOARDER_VERSION=0.10.0. Список контейнеров с указанием версий см. здесь.

В итоге получается такой файл:

HOARDER_VERSION=release NEXTAUTH_SECRET=6A1F9WhiiZYvFKkl8uKgeCWluDfTB3ndr5cOIyuZ3ajZ8fGB MEILI_MASTER_KEY=H1226qlFB/BxpelYldAErQZniM202uQSzpQpaPeppj4MfL+3 NEXTAUTH_URL=http://193.108.113.194:3000

В этот файл можно дописать ключ OpenAI, если таковой имеется:

OPENAI_API_KEY=<key>

Дополнительные параметры конфигурации перечислены в документации.

Затем перезапускаем Docker:

docker compose up

Образ Hoarder сразу скачивается и запускается в соответствии с настройками:

После этого сервер Hoarder доступен через интернет по адресу http://193.108.113.194:3000. Можно к нему подключаться через браузеры или нативные клиенты со смартфонов (о них ниже).

Здесь создаём нового пользователя:

И входим на сервер.

Настройки:

Панель администратора:

Используемые модули (технический стек):

  • NextJS для веб-приложения.
  • Drizzle для БД и её миграций.
  • NextAuth для аутентификации.
  • tRPC для клиент-серверных коммуникаций.
  • Puppeteer для краулинга закладок.
  • OpenAI, потому что ИИ сейчас в моде и его добавляют во все программы. Здесь для простановки меток используется OpenAI, поддерживаются и локальные LLM-модели через Ollama.
  • Monolith для архивации полного содержимого веб-страниц, youtube-dl для видео.
  • Meilisearch для поиска по всему содержимому.

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

Приложения и расширения для доступа к серверу:

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

Указываем логин (email) и пароль, которые создали на сервере в процессе регистрации пользователя.

Плагин для Chrome выглядит таким образом:

По нажатию на иконку плагина текущая страница автоматически добавляется в хранилище на сервере:

Тут же можно прописать теги и определить закладку в один из списков. Если есть OpenAI, то теги устанавливаются автоматически.

Android-приложение выглядит так:

▍ Альтернативы

Автор программы упоминает следующие альтернативы, которые опробовал:

  • Memos: очень удобное приложение, которое можно установить на домашнем сервере, однако оно не архивирует страницы и не даёт предпросмотр ссылок. Кроме того, ему не хватает какой-нибудь автоматической маркировки контента. Другими словами, Hoarder можно рассматривать как улучшенную версию Memos с доработкой недостатков. Онлайн-демо.

  • Mymind — ближайшая альтернатива Hoarder, откуда автор черпал вдохновение. Однако это коммерческий продукт, то есть платный и проприетарный, его нельзя поставить на свой сервер.

  • Raindrop: функциональный и качественный менеджер закладок с открытым исходным кодом, поддерживает ссылки, изображения и файлы. Но тоже не устанавливается на свой хостинг. Хотя есть бесплатный тариф с ограничениями (до 100 МБ нового контента в месяц, без полнотекстового поиска и др.), но это не полноценная замена своему качественному серверу без всяких ограничений.

  • Менеджеры закладок (в основном для ссылок):
    • Pocket — здесь хорошо реализована идея «сохранить для последующего прочтения», но без серверной части, то есть тут немножко другая архитектура.
    • Linkwarden — опенсорсный менеджер закладок на своём хостинге. Ориентирован в основном на ссылки и поддерживает совместные коллекции.

    • Omnivore — довольно крутое опенсорсное приложение для «последующего чтения». К сожалению, оно сильно зависит от облачной инфраструктуры Google, что делает самохостинг сложным. В их блоге есть статья, как захостить Omnivore в минимальном виде, но там многого не хватает. Самохостинг не является приоритетом для разработчиков. Да и вообще на официальном сайте сейчас висит заглушка с сообщением, что разработка приостановлена.

    • Wallabag — достойное опенсорсное приложение для «отложенного чтения» с хорошими отзывами, написано на PHP. Единственный недостаток, что пользовательский интерфейс кажется слегка устаревшим, но по функциональности оно даже выигрывает у Hoarder.
    • Shiori — клон Pocket с открытым исходным кодом, на языке Go. Соответствует всем требованиям, хотя в нём нет сложной системы тегов на основе ИИ.

Из аналогичных приложений с функцией самохостинга можно упомянуть Shaarli (демо), LinkAce (демо) и Linkding.

Сохранение архива на личном сервере имеет преимущества перед облачными сервисами. В первую очередь это конфиденциальность и контроль над информацией.

Скачивание контента удобнее простого хранения ссылок: во-первых, даёт возможность работать в офлайне, во-вторых, защищает от удаления контента или других видов ограничения доступа к нему. Видео тоже автоматически архивируется с помощью youtube-dl.

Персональный менеджер контента и закладок — это способ сохранить не только контент, но и воспоминания, которые неизбежно стираются из памяти. Если посмотреть свои закладки за прошлые десятилетия, то примерно 90% информации оттуда уже совершенно забылось. То же относится к логам чатов в мессенджерах, которые тоже неплохо сохранять на будущее (разумеется, в зашифрованном виде), иначе можно забыть и сами разговоры, и даже собеседников.

P. S. В качестве офтопика. Любопытно, что приложения для организации информации и персонального архива особенно помогают людям с СДВГ.

© 2025 ООО «МТ ФИНАНС»

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻


ссылка на оригинал статьи https://habr.com/ru/articles/896082/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *