Tropic Host

Karakeep на VPS: свой архив закладок с поиском и AI

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

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

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

Karakeep сохраняет не только URL, но и содержимое страницы, превью, заметки, изображения и PDF. Архив можно искать по тексту, раскладывать по спискам и автоматически размечать с помощью AI. При этом он работает на вашем 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. Установить расширение или мобильное приложение и импортировать закладки.

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

Что такое Karakeep

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

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

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

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

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

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

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

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

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

Умные и совместные списки

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

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

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

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

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

Необязательная AI-разметка

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

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

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

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

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

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

  • 2 vCPU;
  • 2 ГБ RAM;
  • 20–30 ГБ SSD или NVMe;
  • 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=ВСТАВЬТЕ_ПЕРВЫЙ_СЕКРЕТ
MEILI_MASTER_KEY=ВСТАВЬТЕ_ВТОРОЙ_СЕКРЕТ
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 и других поддерживаемых сервисов. Большой архив лучше добавлять партиями: серверу нужно открыть страницы, извлечь текст, создать скриншоты и построить индекс.

Как включить AI и полный архив

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

OPENAI_API_KEY=ВАШ_API_КЛЮЧ

Другому 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 и 20–30 ГБ NVMe. Для большого импорта, нескольких пользователей и полной архивации лучше выбрать 4 ГБ RAM и больший диск.

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

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

Вывод

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

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

FAQ

Karakeep бесплатный?

Self-hosted-версия имеет открытый исходный код и не требует обязательной подписки. Оплачиваются VPS, домен, резервное хранилище и, при необходимости, внешний AI API.

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

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

Сколько оперативной памяти нужно Karakeep?

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

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

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

Сохранится ли статья, если исходный сайт исчезнет?

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