1. Что такое Karakeep и зачем он нужен
Представьте, что вы сохранили 500 закладок в браузере. Теперь попробуйте что-нибудь в них найти. Karakeep решает эту проблему: он сохраняет не просто ссылку, а полное содержимое страницы — текст, скриншот, PDF-версию. И AI автоматически решает, в какую папку это положить.
Проект начинался под названием Hoarder, в 2025 году переименован в Karakeep. Актуальная версия — 0.31.0 (2 марта 2026).
🔖 Ссылки, заметки, изображения
Сохраняйте статьи, видео, твиты, PDF и просто заметки в одном месте. Работает через браузерное расширение, мобильное приложение или API.
🤖 AI-тегирование
Модель анализирует содержимое страницы и сама ставит теги: "python", "безопасность", "статья", "рецепт". Вам остаётся только сохранить.
🔍 Полнотекстовый поиск
Meilisearch индексирует текст всех страниц. Поиск работает не только по заголовку, но и по содержимому — даже если вы не помните, откуда была статья.
📸 Скриншоты и архивы
Headless Chromium делает скриншот каждой страницы в момент сохранения. Статья удалена с сайта? Скриншот останется у вас.
📱 Мобильное приложение
iOS и Android. Поделитесь ссылкой из любого приложения — Karakeep сохранит и разложит по тегам автоматически.
📡 RSS-ленты
Подпишитесь на RSS-каналы прямо в Karakeep: новые записи будут автоматически появляться в вашей библиотеке.
Karakeep vs Pocket vs Raindrop
Pocket и Raindrop хранят данные на своих серверах. Karakeep — на вашем VPS. Никакой платной подписки, никаких ограничений на количество закладок, ваши данные только ваши. Pocket Free показывает рекламу и ограничивает офлайн-доступ.
2. Требования к серверу
Karakeep запускает три контейнера: само приложение, Meilisearch (поиск) и Chromium (скриншоты). Больше всего памяти потребляет Meilisearch — не менее 512 МБ.
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU (для Chromium при скриншотах) |
| RAM | 1 ГБ | 2 ГБ — Meilisearch занимает 512 МБ+, Chromium — до 400 МБ |
| Диск | 15 ГБ | 30+ ГБ (скриншоты и архивы растут со временем) |
| ОС | Ubuntu 22.04+ | Ubuntu 22.04 LTS |
| Docker | v24+ | Docker Engine v26+ (скрипт установки ниже) |
Не ставьте на VPS с 512 МБ RAM
Meilisearch — база данных полнотекстового поиска, и ей нужна память. На 512 МБ контейнер будет постоянно вылетать из-за OOM (out of memory). Минимальный комфортный вариант — VPS на 1–2 ГБ RAM.
3. Установка Docker
Если Docker ещё не установлен — официальный скрипт сделает всё за вас:
curl -fsSL https://get.docker.com | shПроверьте, что Docker запущен:
docker --version
# Docker version 26.x.x, build ...4. docker-compose.yml и .env
Создадим директорию и скачаем официальный файл конфигурации:
mkdir ~/karakeep && cd ~/karakeep
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.ymlПосмотрите содержимое файла — там три сервиса. Ничего менять не нужно, всё уже настроено:
services:
web:
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
restart: unless-stopped
volumes:
- data:/data
ports:
- 3000:3000
env_file:
- .env
environment:
MEILI_ADDR: http://meilisearch:7700
BROWSER_WEB_URL: http://chrome:9222
DATA_DIR: /data
chrome:
image: gcr.io/zenika-hub/alpine-chrome:124
restart: unless-stopped
command:
- --no-sandbox
- --disable-gpu
- --disable-dev-shm-usage
- --remote-debugging-address=0.0.0.0
- --remote-debugging-port=9222
- --hide-scrollbars
meilisearch:
image: getmeili/meilisearch:v1.13.3
restart: unless-stopped
env_file:
- .env
environment:
MEILI_NO_ANALYTICS: "true"
volumes:
- meilisearch:/meili_data
volumes:
meilisearch:
data:Создать файл .env
Сгенерируем случайные ключи и создадим файл переменных. Два случайных ключа — для безопасности хранилища и сессий:
echo "NEXTAUTH_SECRET=$(openssl rand -base64 36)"
echo "MEILI_MASTER_KEY=$(openssl rand -base64 36 | tr -dc 'A-Za-z0-9')"
# Пример вывода:
# NEXTAUTH_SECRET=abc123...
# MEILI_MASTER_KEY=XyZ456...Создайте файл .env, вставив сгенерированные значения. Замените karakeep.ваш-домен.ru на реальный домен:
# Замените на ваш домен
NEXTAUTH_URL=https://karakeep.ваш-домен.ru
# Вставьте значения из команды выше
NEXTAUTH_SECRET=вставьте-сгенерированный-ключ
MEILI_MASTER_KEY=вставьте-сгенерированный-ключ
# AI-тегирование — добавим позже (можно оставить закомментированным)
# OPENAI_API_KEY=sk-...
# Запрет новых регистраций (включите после создания своего аккаунта)
# DISABLE_SIGNUPS=trueОграничьте права на файл — в нём хранятся секретные ключи:
chmod 600 ~/karakeep/.envЗапустить контейнеры
cd ~/karakeep
docker compose up -dПервый запуск занимает 1–2 минуты: Docker скачивает образы (~800 МБ суммарно). Проверьте, что все три контейнера запустились:
docker compose ps
# Ожидаемый вывод:
# NAME STATUS
# karakeep-web-1 Up
# karakeep-chrome-1 Up
# karakeep-meilisearch-1 UpПорт 3000 открыт наружу — это временно
По умолчанию docker-compose.yml открывает порт 3000 на всех интерфейсах (0.0.0.0:3000). Это нужно для первоначальной проверки. После настройки Nginx измените строку на 127.0.0.1:3000:3000, чтобы закрыть прямой доступ.
5. Nginx + SSL
Прежде чем идти дальше — настройте домен. Добавьте A-запись у регистратора:
karakeep.ваш-домен.ru → A → IP_ВАШЕГО_СЕРВЕРАСоздайте конфиг Nginx. Karakeep — обычный HTTP-сервер, никаких WebSocket-заголовков не нужно:
server {
listen 80;
server_name karakeep.ваш-домен.ru;
# Увеличиваем лимит для загрузки файлов (по умолчанию 50 МБ)
client_max_body_size 50M;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}ln -s /etc/nginx/sites-available/karakeep /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
# Установить certbot если нет
apt install -y certbot python3-certbot-nginx
# Получить SSL-сертификат (certbot обновит конфиг Nginx автоматически)
certbot --nginx -d karakeep.ваш-домен.ruЗакрыть прямой доступ к порту 3000
Теперь, когда Nginx настроен, привяжите порт только к localhost. Отредактируйте docker-compose.yml:
# Было:
# ports:
# - 3000:3000
# Стало:
ports:
- 127.0.0.1:3000:3000cd ~/karakeep && docker compose up -d6. Первый запуск и регистрация
Откройте https://karakeep.ваш-домен.ru в браузере. Вы увидите форму регистрации — создайте первый аккаунт (он автоматически получает права администратора).
- 1Нажмите «Sign Up» и введите email и пароль. Email может быть любым — подтверждения нет.
- 2После входа вы увидите пустую библиотеку. Панель слева: All Bookmarks, Favourites, Archive, список тегов.
- 3Попробуйте сохранить первую закладку: нажмите «+» вверху → вставьте любую ссылку → Save.
- 4Karakeep пойдёт на сайт, извлечёт текст, сделает скриншот и (если настроен AI) поставит теги.
Запретить новые регистрации
Если Karakeep только для вас — заблокируйте возможность зарегистрировать новые аккаунты. Добавьте строку в .env:
DISABLE_SIGNUPS=truecd ~/karakeep && docker compose up -dПосле этого форма регистрации исчезнет, останется только вход для уже созданных пользователей.
7. AI-тегирование
Karakeep работает без AI — но именно с ним становится по-настоящему удобным. AI читает содержимое страницы и ставит теги автоматически: «python», «docker», «рецепт», «видео». Есть два варианта: OpenAI (платно, но качественно) или Ollama (бесплатно, локально, чуть хуже).
Вариант 1: OpenAI (рекомендуется)
Karakeep по умолчанию использует gpt-4o-mini — самую дешёвую и быструю модель OpenAI. Одна закладка стоит примерно $0.0001–0.001. На тысяче закладок потратите меньше доллара.
OPENAI_API_KEY=sk-ваш-ключ-openai
# Необязательно: тегировать на русском языке
INFERENCE_LANG=russianВариант 2: Ollama (локально, без API-ключа)
Если у вас уже запущена Ollama на этом или другом сервере — используйте её. Нужна модель для текста (например, llama3.2) и мультимодальная для изображений (например, llava).
Ollama нужна на отдельном мощном VPS
Языковые модели требуют минимум 4–8 ГБ RAM. Запускать Ollama на том же VPS, где работает Karakeep, можно только если у вас 8+ ГБ RAM. Иначе поставьте Ollama отдельно — у нас есть подробный гайд.
# Адрес Ollama (host.docker.internal если на том же хосте, или IP другого сервера)
OLLAMA_BASE_URL=http://host.docker.internal:11434
# Модель для анализа текста
INFERENCE_TEXT_MODEL=llama3.2
# Модель для анализа изображений (необязательно)
INFERENCE_IMAGE_MODEL=llavaПосле изменения .env перезапустите контейнеры:
cd ~/karakeep && docker compose up -dКак проверить, что AI работает
Сохраните любую ссылку на статью. Подождите 10–30 секунд. В карточке закладки должны появиться теги — это значит AI сработал. Если тегов нет через минуту, проверьте логи: docker compose logs web --tail=50
8. Мобильное приложение и браузерное расширение
Браузерное расширение
Расширение есть для Chrome и Firefox. Установите из официального магазина, затем в настройках расширения:
- 1В поле Server URL введите ваш адрес:
https://karakeep.ваш-домен.ru - 2Войдите в аккаунт через форму в расширении или создайте API-ключ в Karakeep (Settings → API Keys) и вставьте его.
- 3Теперь на любой странице браузера нажмите иконку расширения — ссылка сохранится в Karakeep за 1 клик.
- 4Можно добавить заметку, выбрать теги вручную или оставить всё AI.
Мобильное приложение (iOS / Android)
Найдите Karakeep в App Store или Google Play. После установки:
- 1На экране входа нажмите Self Hosting и введите адрес вашего Karakeep.
- 2Войдите в аккаунт. Все закладки синхронизируются на телефон.
- 3Чтобы сохранить ссылку из Safari/Chrome: нажмите Поделиться → Karakeep. Ссылка улетит на VPS автоматически.
Поделиться ссылкой из любого приложения
Стандартный механизм «Share» на iOS и Android позволяет поделиться ссылкой из YouTube, Telegram, Reddit и любого другого приложения прямо в Karakeep. AI обработает её в фоне — при следующем открытии приложения ссылка уже будет с тегами.
9. Полезные настройки
Архив полных страниц
По умолчанию Karakeep делает скриншот. Можно включить сохранение полной страницы в PDF — это позволит читать статьи офлайн, даже если оригинал удалён:
CRAWLER_FULL_PAGE_ARCHIVE=trueВнимание: PDF занимает больше места на диске (500 КБ–5 МБ на страницу).
Скачивание видео
Karakeep встроенно поддерживает yt-dlp — скачивает видео с YouTube, Vimeo и других платформ при сохранении ссылки:
CRAWLER_VIDEO_DOWNLOAD=true
CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE=100 # МБ, ограничение на размерКак обновить Karakeep
Тег release всегда указывает на последний стабильный релиз. Обновление одной командой:
cd ~/karakeep
docker compose pull && docker compose up -dДанные в volumes не затрагиваются. Простой во время обновления — около 10–30 секунд.
RSS-подписки
В боковой панели нажмите Feeds → + Add Feed. Вставьте RSS-ссылку (например, Habr: https://habr.com/ru/rss/all/). Karakeep будет проверять ленту каждые несколько минут и автоматически добавлять новые записи в библиотеку.
10. Частые проблемы
⚠ Контейнер meilisearch вылетает, в логах — «out of memory»
free -h. Чтобы ограничить аппетит Meilisearch, добавьте в секцию meilisearch в docker-compose.yml ограничение памяти контейнера: deploy: { resources: { limits: { memory: 512M } } }. Надёжное решение — перейти на VPS с 2+ ГБ RAM.⚠ Скриншоты не создаются, в логах chrome — «Permission denied»
--no-sandbox — он обязателен для работы в контейнере без привилегий. Если флаг на месте, а проблема остаётся, пересоздайте контейнер: docker compose down && docker compose up -d⚠ AI теги появляются на английском, хотя страница на русском
.env строку INFERENCE_LANG=russian, затем перезапустите: docker compose up -d. Новые закладки будут тегироваться на русском. Уже сохранённые нужно перетегировать вручную — через три точки на карточке → «Re-crawl».⚠ Ошибка «NEXTAUTH_URL mismatch» после смены домена
.env и перезапустите контейнеры. Старые сессии при этом инвалидируются — потребуется заново войти в аккаунт.