Tropic Host

Karakeep на VPS: собственный архив закладок с поиском и ИИ

6 мин чтения
Tropic
Karakeep на VPS: собственный архив закладок с поиском и ИИ

Karakeep: установка личного архива закладок на VPS

Сохранить ссылку легко. А найти её через полгода гораздо сложнее — особенно если страница изменилась, исчезла или затерялась среди сотен закладок.

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

Ниже разберём возможности Karakeep, требования к серверу и установку на Ubuntu 24.04 с Docker Compose, HTTPS и резервными копиями.

Karakeep за семь шагов

  1. Создайте Linux VPS и направьте на него поддомен, например keep.example.com.
  2. Установите Docker Engine и Docker Compose.
  3. Скачайте официальный docker-compose.yml.
  4. Сгенерируйте секреты и запустите Karakeep, Chrome и Meilisearch.
  5. Закройте внутренний порт 3000 и включите HTTPS через Caddy.
  6. Создайте первую учётную запись, затем отключите открытую регистрацию.
  7. Установите расширение для браузера или мобильное приложение и импортируйте закладки.

Для запуска сервиса ключ ИИ не нужен. Без него продолжат работать сохранение страниц, списки, заметки, OCR и полнотекстовый поиск. Автоматические теги и краткие резюме создаваться не будут.

Что такое Karakeep

Karakeep — это приложение с открытым исходным кодом для самостоятельного хранения ссылок, текстовых заметок, изображений и PDF-файлов в одной библиотеке. Ранее проект назывался Hoarder.

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

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

ВозможностьЗакладки браузераKarakeep
Что хранитсяURL и заголовокТекст, превью, заметки и вложения
ПоискПо заголовку и адресуПо содержимому, тегам и заметкам
Если страница исчезлаОстаётся нерабочий URLОстаётся текст, снимок экрана или полный архив
ОрганизацияПапкиТеги, ручные и умные списки
ДоступВ браузереВеб-интерфейс, расширения, iOS и Android
СерверПрофиль браузера или его облачный сервисВаш VPS или домашний сервер

Основные возможности Karakeep

Ссылки, заметки, изображения и PDF

Каждый элемент может быть ссылкой, текстовой заметкой или загруженным файлом. OCR извлекает текст из изображений и PDF, поэтому их тоже можно искать. К элементу можно прикрепить заметку, цитату или дополнительный файл.

Поиск по содержимому

Meilisearch индексирует сохранённый текст, заметки и метаданные. Необязательно помнить точный заголовок — достаточно фразы или темы. Если настроить эмбеддинги, станет доступен и семантический поиск по смыслу.

Умные списки и совместная работа

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

Умный список — это сохранённый поисковый запрос, который обновляется автоматически. Например, он может показывать все элементы с тегом ai, добавленные за последнюю неделю.

Архивирование страниц

По умолчанию Karakeep сохраняет извлечённый текст и снимок видимой части страницы. Дополнительно можно включить снимок всей страницы, PDF или автономный HTML-архив. Это защищает библиотеку от нерабочих ссылок, но увеличивает расход дискового пространства.

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

Необязательная маркировка с помощью ИИ

Karakeep может создавать теги и краткие резюме через внешнее API, совместимое с OpenAI, или локальную модель Ollama. Без ИИ приложение остаётся полноценным менеджером закладок.

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

Требования Karakeep к серверу

Официальная документация не указывает фиксированный минимум для CPU и RAM. Полная установка включает три контейнера:

  • Karakeep хранит базу данных и обслуживает интерфейс;
  • headless Chrome открывает страницы, выполняет JavaScript и делает снимки экрана;
  • Meilisearch индексирует библиотеку.

Практичная конфигурация для одного пользователя без локальной LLM:

  • 2 vCPU;
  • 2 ГБ RAM;
  • SSD или NVMe на 20–30 ГБ;
  • Ubuntu 24.04 LTS;
  • публичный IP-адрес и домен.

Для нескольких пользователей, большого импорта, множества RSS-лент и PDF-файлов комфортнее 4 ГБ RAM. Требования к диску зависят от режима архивирования: текст занимает мало места, а полные снимки, PDF и видео быстро увеличивают размер библиотеки.

Как установить Karakeep на VPS

В примере используется Ubuntu 24.04 и поддомен keep.example.com.

1. Настройте DNS и межсетевой экран

Создайте DNS-запись A, указывающую на IP-адрес сервера, затем подключитесь по SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

Не закрывайте текущую SSH-сессию, пока не убедитесь, что новое подключение работает.

2. Установите Docker

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

3. Скачайте конфигурацию Karakeep

mkdir -p /opt/karakeep
cd /opt/karakeep

curl -fsSLo docker-compose.yml \
  https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml

Сгенерируйте два разных секрета:

openssl rand -base64 36
openssl rand -base64 36 | tr -dc 'A-Za-z0-9'

Создайте /opt/karakeep/.env:

KARAKEEP_VERSION=release
NEXTAUTH_SECRET=INSERT_THE_FIRST_SECRET
MEILI_MASTER_KEY=INSERT_THE_SECOND_SECRET
NEXTAUTH_URL=https://keep.example.com
DISABLE_SIGNUPS=false
DB_WAL_MODE=true
RATE_LIMITING_ENABLED=true

Не публикуйте .env: первый секрет подписывает токены аутентификации, а второй защищает Meilisearch.

4. Закройте внутренний порт

В docker-compose.yml замените:

ports:
  - 3000:3000

на:

ports:
  - 127.0.0.1:3000:3000

Это не позволит напрямую открыть порт 3000 из интернета.

5. Запустите контейнеры

cd /opt/karakeep
docker compose up -d
docker compose ps

Сервисы web, chrome и meilisearch должны работать. Посмотреть журналы можно командой:

docker compose logs --tail=200

6. Включите HTTPS

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
keep.example.com {
    reverse_proxy 127.0.0.1:3000
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Если DNS настроен, а порты 80 и 443 открыты, Caddy автоматически получит TLS-сертификат. После этого откройте https://keep.example.com.

7. Создайте администратора и закройте регистрацию

Первый зарегистрированный пользователь автоматически становится администратором. После создания учётной записи укажите в .env:

DISABLE_SIGNUPS=true

Примените изменение:

cd /opt/karakeep
docker compose up -d

Администратор по-прежнему сможет создавать другие учётные записи вручную.

Импорт данных, расширения и мобильные приложения

У Karakeep есть расширения для Chrome, Firefox и Safari, а также приложения для iOS и Android. На телефоне ссылку можно отправить в архив через системное меню «Поделиться».

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

Как включить ИИ и архивирование всей страницы

Для OpenAI добавьте в .env:

OPENAI_API_KEY=YOUR_API_KEY

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

Отдельно включить полную локальную копию страницы можно так:

CRAWLER_FULL_PAGE_ARCHIVE=true

Также доступны параметры CRAWLER_FULL_PAGE_SCREENSHOT=true и CRAWLER_STORE_PDF=true. Не включайте все режимы без необходимости: они заметно увеличивают расход диска. После изменения .env выполните docker compose up -d.

Безопасность, обновления и резервные копии

Краулер Karakeep открывает сохранённые пользователем адреса из сети вашего сервера. Поэтому не оставляйте регистрацию открытой и предоставляйте доступ только доверенным людям. Базовая защита от SSRF предусмотрена, но для публичного сервиса проект рекомендует изолировать браузер или направлять его через ограниченный прокси.

Используйте HTTPS и надёжные пароли, не открывайте порт 3000 и регулярно обновляйте контейнеры:

cd /opt/karakeep
docker compose up --pull always -d

Основная база данных и сохранённые материалы хранятся в Docker-томе data. Перед копированием остановите контейнеры:

mkdir -p /var/backups/karakeep
cd /opt/karakeep
docker compose stop

docker run --rm \
  -v karakeep_data:/source:ro \
  -v /var/backups/karakeep:/backup \
  alpine sh -c 'tar czf /backup/data-$(date +%F).tar.gz -C /source .'

cp .env docker-compose.yml /var/backups/karakeep/
docker compose start

Имя karakeep_data предполагает, что каталог проекта — /opt/karakeep; проверить его можно командой docker volume ls. Индекс Meilisearch можно восстановить заново, но для большой библиотеки также полезно сохранять том karakeep_meilisearch.

Передавайте архив из /var/backups/karakeep на другой сервер, NAS или в объектное хранилище. Копия на том же VPS не защищает от отказа диска или удаления виртуальной машины.

Какой VPS выбрать для Karakeep

Для личной библиотеки без Ollama подойдёт Linux VPS с 2 vCPU, 2 ГБ RAM и NVMe на 20–30 ГБ. Для большого импорта, нескольких пользователей и полного архивирования выбирайте 4 ГБ RAM и более вместительный диск.

Karakeep можно запустить на VPS от tropic.host: постоянный IP-адрес упрощает настройку домена, а NVMe полезен для SQLite, поискового индекса и множества небольших файлов. По мере роста архива ресурсы можно увеличить.

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

Заключение

Karakeep превращает разрозненные ссылки в личную библиотеку с поиском. Сервис сохраняет страницы, заметки, изображения и PDF, поддерживает OCR, списки, расширения, мобильные приложения и необязательную маркировку с помощью ИИ.

Для начала достаточно небольшого VPS, Docker Compose, домена и HTTPS. После установки закройте регистрацию, следите за свободным местом и храните резервную копию вне сервера.

FAQ

Karakeep бесплатен?

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

Нужен ли API-ключ для работы Karakeep?

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

Сколько RAM нужно Karakeep?

Практичная начальная конфигурация для одного пользователя без Ollama — 2 ГБ RAM. Для больших импортов, нескольких пользователей и активной обработки удобнее 4 ГБ.

Можно ли импортировать закладки из браузера или Pocket?

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

Останется ли статья доступной, если исходный сайт исчезнет?

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