Karakeep: установка личного архива закладок на VPS
Сохранить ссылку легко. Найти ее через полгода сложнее — особенно если страница изменилась, исчезла или затерялась среди сотен закладок.
Karakeep сохраняет не только URL, но и содержимое страницы, превью, заметки, изображения и PDF. Архив можно искать по тексту, раскладывать по спискам и автоматически размечать с помощью AI. При этом он работает на вашем 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.
- Создать первый аккаунт, затем отключить открытую регистрацию.
- Установить расширение или мобильное приложение и импортировать закладки.
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 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=ВСТАВЬТЕ_ПЕРВЫЙ_СЕКРЕТ
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=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 и других поддерживаемых сервисов. Большой архив лучше добавлять партиями: серверу нужно открыть страницы, извлечь текст, создать скриншоты и построить индекс.
Как включить 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. Страницы за авторизацией и сложные веб-приложения могут сохраняться частично.
