Karakeep: установка личного архива закладок на VPS
Сохранить ссылку легко. А найти её через полгода гораздо сложнее — особенно если страница изменилась, исчезла или затерялась среди сотен закладок.
Karakeep хранит не только URL, но и содержимое страницы, превью, заметки, изображения и PDF-файлы. Архив можно искать по тексту, распределять материалы по спискам и автоматически добавлять к ним теги с помощью ИИ. Сервис работает на собственном VPS, а подключение языковой модели остаётся необязательным.
Ниже разберём возможности Karakeep, требования к серверу и установку на Ubuntu 24.04 с Docker Compose, HTTPS и резервными копиями.
Karakeep за семь шагов
- Создайте Linux VPS и направьте на него поддомен, например
keep.example.com. - Установите Docker Engine и Docker Compose.
- Скачайте официальный
docker-compose.yml. - Сгенерируйте секреты и запустите Karakeep, Chrome и Meilisearch.
- Закройте внутренний порт 3000 и включите HTTPS через Caddy.
- Создайте первую учётную запись, затем отключите открытую регистрацию.
- Установите расширение для браузера или мобильное приложение и импортируйте закладки.
Для запуска сервиса ключ ИИ не нужен. Без него продолжат работать сохранение страниц, списки, заметки, 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 version3. Скачайте конфигурацию 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=2006. Включите 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. Страницы за авторизацией и сложные веб-приложения могут сохраниться только частично.
