Проверен полностью30 144

Закладки и архивирование

Karakeep

Karakeep сохраняет ссылки, читаемые копии страниц, снимки, изображения, PDF и текстовые заметки. Списки, теги и полнотекстовый поиск помогают организовать личную библиотеку. Рецепт включает SQLite, Meilisearch и браузер; AI-теги необязательны и не настроены.

Вместо Raindrop.ioAGPL-3.0-onlyВерсия 0.34.1

Обзор

Karakeep собирает ссылки, текстовые заметки, изображения и PDF в личной библиотеке. Списки, теги, избранное и полнотекстовый поиск подходят для исследований, домашних справочников и отложенного чтения. Официальные приложения Android и iOS и расширения браузера отправляют материалы на сервер; отдельный настольный клиент не входит в рецепт.

При сравнении с Linkwarden оцените списки, сохраняемые форматы, совместный доступ и поиск. Karakeep также хранит обычные текстовые заметки рядом со ссылками. Добавление URL не гарантирует сохранения страницы за платным доступом, входом или защитой от ботов.

Рецепт запускает официальное приложение с SQLite, Meilisearch 1.41.0 и отдельным браузером. Планируйте два ядра, минимум 2 ГБ RAM (рекомендуется 4 ГБ) и 10 ГБ диска плюс сохранённые материалы. Задания браузера могут потребовать больше; следите за диском и памятью. Надёжный уровень развёртывания не поддерживается: в этом рецепте одного сервера нет внешней базы, мониторинга и лимитов ресурсов.

Upstream поддерживает пароль и встроенный OIDC; рецепт настраивает только пароль. SAML, второй фактор, вход по доверенному заголовку, SMTP и AI-провайдер не настроены. AI-теги необязательны: сохранение и поиск работают без API-ключа. Сквозного шифрования резервных копий нет.

Лицензия приложения — AGPL-3.0, рецепта — MIT. Перед изменением и сетевым предоставлением программы прочитайте лицензию upstream. Карточка остаётся экспериментальной до появления более широкого опыта эксплуатации.

Источники: возможности и клиенты, настройка, безопасность, релиз, лицензия.

Оценка безопасности

В проверенной конфигурации регистрация закрыта, а внутренние порты не публикуются. Базовая защита от SSRF и изоляция контейнеров не делают враждебные страницы безопасными. Допускайте доверенные учётные записи и задавайте отдельную политику исходящего трафика. Этот обзор не является аудитом безопасности.

Отслеживание обновлений

Это сохранённые результаты отдельных проверок, а не данные в реальном времени. Неизвестный статус означает, что проверка ещё не выполнялась.

Новые релизы

Сравнение версии рецепта с последним известным релизом upstream. Это номер версии, а не разбор изменений.

Актуальная версия 0.34.129 окт. 2026 г., 14:25 UTC

Несовместимые обновления

Новый major находится сравнением номеров версий. Вердикт о совместимости заносится вручную после чтения release notes и порядка миграции.

Не провереноПроверка не выполнялась

compose.yaml

Изменения upstream Compose относительно проверенного рецепта.

Upstream Compose не отслеживаетсяПроверка не выполнялась

Устаревшие Docker-образы

Проверка закреплённых тегов образов на наличие новых версий.

Не провереноПроверка не выполнялась

От наблюдения к действию

План обновления

Рецепт уже закрепляет последний известный релиз. Ниже показаны сохранённые основания для этой версии.

0.34.10.34.1
  1. Открыть основания релиза

    Открыть релиз на GitHub ↗ Ссылка нужна для ревизии и сама по себе не доказывает совместимость.

  2. Проверить границу версий

    Номера версий не пересекают major-границу совместимости. Вердикт о совместимости не записан.

  3. Подготовить смену тегов образов

    Смена тегов образов сейчас не планируется.

  4. Следовать документированной схеме миграции

    Ручные шаги после обновления. Шаги конкретного релиза всё равно берутся из release notes и инструкции по установке.

  5. Защитить точку отката

    Смена версии сейчас не планируется. Рецепт содержит процедуру backup. Restore проверен.

  6. Проверить обновлённый рецепт

    Точная проверка уровня «Проверен полностью» для этой версии записана 2026-10-29.

Прочитать порядок обновления в инструкции по установке ↓

Характеристики

Безопасность и публикация

Уровни установки

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

Готово

Для дома

Минимальная конфигурация для локальной сети или доступа через VPN.

  • Один сервер
  • Локальный доступ
  • Минимум компонентов

Рецепт закрывает все требования этого уровня.

Готово

Для VPS

Публичная установка с защищённым доступом и резервными копиями.

  • Домен
  • HTTPS через reverse proxy
  • Backup вне сервера

Рецепт закрывает все требования этого уровня.

Не поддерживается

Надёжная

Конфигурация для предсказуемой эксплуатации и наблюдаемости.

  • Отдельная БД
  • Healthcheck
  • Внешний мониторинг
  • Лимиты CPU и памяти

Нужно добавить вручную: отдельная бд, внешний мониторинг, лимиты cpu и памяти.

Собрать под свой сервер

Генератор конфигурации

Ответьте на пять вопросов и скачайте готовый комплект Karakeep.

Работает локально
01 Есть домен?
02 Какой reverse proxy?
03 Архитектура сервера
04 Где хранить данные?

Укажите абсолютный путь для отдельного диска, например /srv/karakeep.

05 Требуется VPN-доступ?

Комплект готов к сборке

Архив создаётся в браузере. Ответы никуда не отправляются.

Те же файлы одним shell-скриптом, обычными heredoc, чтобы всё читалось до запуска. Скрипт проверяет Docker, архитектуру, память, диск и нужные порты и без --apply ничего не пишет.

Скриншоты

Быстрый запуск

Сначала прочитайте полную инструкцию: в ней описаны доступ извне, backup и расположение данных.

Подготовить настройкиcp .env.example .env
Запуститьdocker compose up -d
Проверить состояниеdocker compose ps

Пошаговая инструкция

Подготовка сервера

Используйте 64-битную Ubuntu 22.04+ или Debian 12+, Docker Engine и Compose v2.24+. Планируйте два ядра, минимум 2 ГБ RAM (рекомендуется 4 ГБ) и 10 ГБ диска плюс сохранённые материалы. Это ориентиры для планирования, а не результат нагрузочного теста.

mkdir -p ~/services/karakeep
cd ~/services/karakeep
# Скопируйте сюда все файлы рецепта, включая proxy/ и скрипты.
cp .env.example .env
chmod 600 .env
openssl rand -hex 32
openssl rand -hex 32

Запишите два разных сгенерированных значения в KARAKEEP_AUTH_SECRET и KARAKEEP_MEILI_KEY. Скрипты подключают .env как доверенную конфигурацию shell. Используйте безопасные для shell значения и ограничьте доступ других пользователей.

Параметр Назначение
KARAKEEP_VERSION Точный тег приложения, первоначально 0.34.1, без v.
KARAKEEP_PORT Порт хоста на loopback, по умолчанию 3000.
KARAKEEP_URL Точный origin браузера, первоначально http://localhost:3000; за прокси укажите внешний HTTPS-origin. Он также ограничивает доверенные origin аутентификации.
KARAKEEP_AUTH_SECRET Случайный секрет сессий и входа; храните вместе с копией.
KARAKEEP_MEILI_KEY Другой случайный ключ, общий для приложения и Meilisearch.
KARAKEEP_DISABLE_SIGNUPS Обычно true; временно задайте false для первой регистрации через SSH-туннель.
TZ Часовой пояс IANA, по умолчанию Etc/UTC.
KARAKEEP_BACKUP_DIR Необязательный абсолютный каталог копий; пустое значение использует backups/ рядом с рецептом.

Именованный том data содержит SQLite, загрузки, сохранённые страницы и состояние очередей в /data. Том search хранит индекс Meilisearch в /meili_data. Состояние Chrome временное. Compose привязывает оба тома к проекту; сохраняйте имя проекта. Порты API поиска и DevTools браузера не публикуются.

Запуск и создание учётной записи

Не включайте reverse proxy. Задайте KARAKEEP_DISABLE_SIGNUPS=false, затем:

docker compose config --quiet
docker compose pull
docker compose up -d --wait --wait-timeout 600
curl --fail http://127.0.0.1:3000/api/health

На своём компьютере выполните ssh -L 3000:127.0.0.1:3000 user@server. Откройте http://localhost:3000, зарегистрируйтесь с уникальным паролем и проверьте вход. Задайте KARAKEEP_DISABLE_SIGNUPS=true и пересоздайте приложение:

docker compose up -d --wait --wait-timeout 600 karakeep

Публикуйте прокси только после закрытия регистрации. Готовых учётных данных в рецепте нет. Для дополнительных пользователей нужно ещё одно контролируемое окно регистрации. AI, SMTP и OIDC не настроены. Добавляйте внешний AI-ключ только после согласия с условиями обработки данных и оплаты.

VPS

Сначала создайте учётную запись через туннель. Задайте KARAKEEP_URL=https://keep.example.com, настройте DNS и HTTPS-прокси и пересоздайте Karakeep. Разрешите в firewall только SSH, HTTP и HTTPS. Оставьте порт 3000 на loopback и храните зашифрованные копии вне сервера.

Доверенная локальная сеть

Используйте SSH-туннель или HTTPS-прокси, доступный из доверенной LAN/VPN. Для прокси на хосте сохраняйте loopback-привязку. Если намеренно публикуете приватный интерфейс, ограничьте его firewall и задайте в KARAKEEP_URL точный origin пользователей. Не открывайте окно регистрации недоверенным пользователям.

Домен и HTTPS

Выберите пример в proxy/. Caddy получает сертификаты; Nginx нужны пути к сертификатам; Traefik — точка входа websecure и resolver letsencrypt. Эти примеры прокси на хосте направляют запросы на 127.0.0.1:3000. Контейнерный прокси должен иметь общую сеть с Karakeep и использовать karakeep:3000; его loopback не является loopback хоста.

Замените домен и задайте в KARAKEEP_URL тот же внешний origin. Правильно передавайте Host и X-Forwarded-Proto; HTTPS-origin включает secure cookies. Пример Nginx допускает тело запроса до 50 МБ. Проверьте вход и загрузку по итоговому URL. Не публикуйте порты 7700 и 9222.

Резервная копия

./backup.sh

Скрипт останавливает Karakeep и Meilisearch, архивирует оба полных тома, активный .env и Compose, затем запускает только ранее работавшие сервисы. Приватный архив — backups/karakeep-<timestamp>.tar. SQLite и WAL нужно копировать вместе при остановленной записи. Храните индекс вместе с подходящей версией поискового движка.

Зашифруйте архив и скопируйте вне сервера. Он содержит учётные записи, приватные заметки, страницы, файлы, ключи и секреты. Личный экспорт и CLI-миграция между серверами не заменяют эту копию.

Восстановление

Восстановление заменяет оба тома. Используйте доверенный архив и совпадающие версии приложения и Meilisearch. На новом сервере скопируйте рецепт, изучите архивные compose.yaml и configuration.env и сначала создайте совместимую активную конфигурацию. Архивная конфигурация автоматически не активируется.

docker compose up -d --wait --wait-timeout 600
./restore.sh ./backups/karakeep-TIMESTAMP.tar
curl --fail http://127.0.0.1:3000/api/health

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

Обновление

  1. Прочитайте release notes и создайте копию вне сервера.
  2. Измените KARAKEEP_VERSION на проверенную точную версию. Отдельно закреплённый образ Chrome меняйте после проверки его релиза и совместимости.
  3. Выполните docker compose pull, затем docker compose up -d --wait --wait-timeout 600. Проверьте логи, вход, сохранённую страницу и поиск.
  4. Смена версии Meilisearch — отдельная миграция. Следуйте официальному руководству: полная копия, параметр миграции именно для выбранной версии движка, затем удаление этого параметра. Не запускайте новый движок на старых данных без миграции или осознанного пересоздания индекса.

Миграции приложения выполняются при запуске. Не используйте теги latest и release. Успешный healthcheck сам по себе не доказывает сохранность поиска и материалов.

Откат

Не запускайте старое приложение на мигрировавшей SQLite или старый Meilisearch на новом индексе.

  1. Сохраните архив до обновления и соответствующие рецепт и конфигурацию.
  2. Остановите запись: docker compose stop karakeep meilisearch.
  3. Верните точные старые версии приложения и вспомогательных образов в активных Compose и .env; сохраните подходящие секреты. Скачайте эти образы.
  4. Выполните docker compose create, не запуская их на новых данных.
  5. Выполните ./restore.sh ./backups/karakeep-BEFORE-UPDATE.tar, затем проверьте вход, заметки, файлы и поиск. Страховочная копия умеет архивировать остановленные контейнеры без запуска старого приложения на новом состоянии.

Остановка и удаление

docker compose down сохраняет тома. После проверки зашифрованной внешней копии docker compose down --volumes навсегда удаляет библиотеку и индекс. Удаление каталога рецепта также удаляет локальную конфигурацию и копии. Не используйте глобальную очистку Docker.

Источники: Docker, настройка, безопасность, ограничения миграции.

Сообщить о проблеме с рецептом

Рассказать, как прошло на вашем сервере

Откроется предзаполненный issue на GitHub. Нужен аккаунт GitHub; после отправки сообщение будет публичным.

Диагностика

Ошибка запуска или healthcheck

Выполните docker compose ps --all и docker compose logs --tail=200 karakeep meilisearch chrome. Проверьте диск и RAM через df -h и free -m. Заданиям браузера нужно больше памяти, чем простаивающему приложению. Убедитесь, что заменили оба секрета и сохранили ключ Meilisearch между перезапусками. docker compose config --quiet проверяет подстановки; не публикуйте полную итоговую конфигурацию с секретами.

Не работает вход или пропадают cookies

Проверьте, что KARAKEEP_URL точно совпадает с открытым origin, включая схему и нестандартный порт. HTTPS-origin требует HTTPS и правильных forwarded-заголовков. Для первого запуска используйте http://localhost:3000 через SSH-туннель. Регистрация намеренно отключена; временно включайте её только в доверенном окне настройки, затем закройте и пересоздайте приложение. OIDC и SMTP требуют дополнительной настройки upstream и не входят в рецепт.

Страница не сохраняется

Проверьте health Chrome и логи краулера. Платный доступ, вход, защита от ботов, большие файлы и неподдерживаемые сайты могут мешать сохранению. Внутренние адреса по умолчанию блокируются; не отключайте защиту от SSRF ради произвольной закладки. Приложению и браузеру нужен исходящий доступ. Не публикуйте отладочный порт Chrome как способ устранения проблемы.

Поиск сломался после смены движка

Найдите в логах Meilisearch сообщение о несовместимой версии базы. Верните старый движок вместе с подходящей полной копией либо выполните официальную миграцию/пересоздание индекса. Не удаляйте том всей библиотеки ради пересоздания поискового индекса.

Ошибка копирования или восстановления

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

Источники: настройка, безопасность, обновление Meilisearch.

Официальные источники

Последний релиз: 2026-10-22 · GitHub Stars: 30 144 · данные проверены 29 окт. 2026 г., 14:25 UTC

Отказ от ответственности

Fossary — независимый информационный каталог, не связанный с разработчиками представленных приложений. Мы собираем сведения из открытых источников и проверяем опубликованные рецепты, но не разрабатываем, не распространяем и не контролируем эти приложения.

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