VPSРейтинг
Self-hosted2 марта 2026 · обновлено 4 сентября · 13 мин чтения

Karakeep на VPS: букмарк-менеджер с AI, который сам раскладывает ссылки по полкам

Браузерные закладки — это помойка. Karakeep — self-hosted менеджер, который сохраняет ссылки, статьи, заметки и даже твиты, а встроенный AI автоматически расставляет теги. Работает на VPS 24/7, синхронизируется с телефоном, не отправляет ваши данные никуда.

1. Что такое Karakeep и зачем он нужен

Представьте, что вы сохранили 500 закладок в браузере. Теперь попробуйте что-нибудь в них найти. Karakeep решает эту проблему: он сохраняет не просто ссылку, а полное содержимое страницы — текст, скриншот, PDF-версию. И AI автоматически решает, в какую папку это положить.

Проект начинался под названием Hoarder, в 2025 году переименован в Karakeep. На сентябрь 2026 актуальна версия 0.33.2, но следить за номером не нужно: compose тянет тег release, который всегда указывает на последний стабильный выпуск.

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

Сохраняйте статьи, видео, твиты, 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 (скриншоты). Основной едок памяти — само приложение: на свежей установке в покое оно занимает около 650 МБ, тогда как Meilisearch с пустым индексом — считанные десятки мегабайт, а Chromium без работы — около 40 МБ. Пики дают Chromium при снятии скриншотов и Meilisearch по мере роста индекса.

ПараметрМинимумРекомендуется
CPU1 vCPU2 vCPU (для Chromium при скриншотах)
RAM1 ГБ2 ГБ — само приложение ~650 МБ в покое, плюс пики Chromium
Диск15 ГБ30+ ГБ (скриншоты и архивы растут со временем)
ОСUbuntu 22.04+Ubuntu 22.04 LTS
Dockerv24+Docker Engine v26+ (скрипт установки ниже)

Не ставьте на VPS с 512 МБ RAM

Одно только приложение в покое занимает больше, чем весь такой сервер, — контейнеры начнут вылетать по OOM ещё до первой закладки. Минимальный комфортный вариант — VPS на 1–2 ГБ RAM.

Если сервера ещё нет

2 vCPU · 2 ГБ RAM · 20 ГБ диска

Приложение в покое занимает 650 МБ, сверху ложатся пики Chromium при скриншотах: на гигабайте запас кончается сразу. Диск растёт вместе с архивом.

В каталоге под эти требования подходит 91 тариф, самый дешёвый за 560 ₽/мес (HostKey, 2 ГБ, 60 ГБ SSD).

3. Установка Docker

Если Docker ещё не установлен — официальный скрипт сделает всё за вас:

Установка Docker (официальный скрипт)
curl -fsSL https://get.docker.com | sh

Проверьте, что Docker запущен:

docker --version
# Docker version 26.x.x, build ...

4. docker-compose.yml и .env

Создадим директорию и скачаем официальный файл конфигурации:

Создать директорию и скачать docker-compose.yml
mkdir ~/karakeep && cd ~/karakeep
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml

Посмотрите содержимое файла — там три сервиса. Ничего менять не нужно, всё уже настроено. Ниже — как он выглядит на сентябрь 2026; если у вас скачалось что-то другое, доверяйте скачанному файлу, а не этой копии: разработчики обновляют его чаще, чем мы статью.

~/karakeep/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: ghcr.io/karakeep-app/karakeep-chrome:release
    restart: unless-stopped
    init: true
    command:
      - --disable-gpu
      - --disable-dev-shm-usage
      - --hide-scrollbars
      - --disable-blink-features=AutomationControlled
      - --window-size=1440,900

  meilisearch:
    image: getmeili/meilisearch:v1.41.0
    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 на реальный домен:

~/karakeep/.env
# Замените на ваш домен
NEXTAUTH_URL=https://karakeep.ваш-домен.ru

# Вставьте значения из команды выше
NEXTAUTH_SECRET=вставьте-сгенерированный-ключ
MEILI_MASTER_KEY=вставьте-сгенерированный-ключ

# AI-тегирование — добавим позже (можно оставить закомментированным)
# OPENAI_API_KEY=sk-...

# Запрет новых регистраций (включите после создания своего аккаунта)
# DISABLE_SIGNUPS=true

Ограничьте права на файл — в нём хранятся секретные ключи:

Закрыть .env от других пользователей системы
chmod 600 ~/karakeep/.env

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

Запустить Karakeep в фоне
cd ~/karakeep
docker compose up -d

Первый запуск занимает несколько минут: Docker скачивает около 2 ГБ образов — основной вес приходится на само приложение. Проверьте, что все три контейнера запустились:

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-запись у регистратора:

DNS-запись (в панели управления доменом)
karakeep.ваш-домен.ru  →  A  →  IP_ВАШЕГО_СЕРВЕРА

Создайте конфиг Nginx. Karakeep — обычный HTTP-сервер, никаких WebSocket-заголовков не нужно:

/etc/nginx/sites-available/karakeep
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;
    }
}
Активировать конфиг и получить SSL
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:

Изменить в ~/karakeep/docker-compose.yml
# Было:
#   ports:
#     - 3000:3000

# Стало:
    ports:
      - 127.0.0.1:3000:3000
Применить изменение
cd ~/karakeep && docker compose up -d

6. Первый запуск и регистрация

Откройте https://karakeep.ваш-домен.ru в браузере. Вы увидите форму регистрации — создайте первый аккаунт (он автоматически получает права администратора).

  1. 1Нажмите «Sign Up» и введите email и пароль. Email может быть любым — подтверждения нет.
  2. 2После входа вы увидите пустую библиотеку. Панель слева: All Bookmarks, Favourites, Archive, список тегов.
  3. 3Попробуйте сохранить первую закладку: нажмите «+» вверху → вставьте любую ссылку → Save.
  4. 4Karakeep пойдёт на сайт, извлечёт текст, сделает скриншот и (если настроен AI) поставит теги.

Запретить новые регистрации

Если Karakeep только для вас — заблокируйте возможность зарегистрировать новые аккаунты. Добавьте строку в .env:

~/karakeep/.env — добавить строку
DISABLE_SIGNUPS=true
Применить изменение
cd ~/karakeep && docker compose up -d

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

7. AI-тегирование

Karakeep работает без AI — но именно с ним становится по-настоящему удобным. AI читает содержимое страницы и ставит теги автоматически: «python», «docker», «рецепт», «видео». Есть два варианта: OpenAI (платно, но качественно) или Ollama (бесплатно, локально, чуть хуже).

Вариант 1: OpenAI (рекомендуется)

Модель по умолчанию задаёт сам Karakeep, и она меняется от версии к версии (в документации на сентябрь 2026 — gpt-5.6-luna для текста и gpt-4o-mini для картинок). Если хотите другую — задайте её явно через INFERENCE_TEXT_MODEL и сверьте цену в прайсе OpenAI: тегирование одной закладки — это один короткий запрос, так что счёт выходит копеечный, но конкретная сумма зависит от выбранной модели.

~/karakeep/.env — добавить ключ OpenAI
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 отдельно — у нас есть подробный гайд.

~/karakeep/.env — настройка 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. 1В поле Server URL введите ваш адрес: https://karakeep.ваш-домен.ru
  2. 2Войдите в аккаунт через форму в расширении или создайте API-ключ в Karakeep (Settings → API Keys) и вставьте его.
  3. 3Теперь на любой странице браузера нажмите иконку расширения — ссылка сохранится в Karakeep за 1 клик.
  4. 4Можно добавить заметку, выбрать теги вручную или оставить всё AI.

Мобильное приложение (iOS / Android)

Найдите Karakeep в App Store или Google Play. После установки:

  1. 1На экране входа нажмите Self Hosting и введите адрес вашего Karakeep.
  2. 2Войдите в аккаунт. Все закладки синхронизируются на телефон.
  3. 3Чтобы сохранить ссылку из Safari/Chrome: нажмите Поделиться → Karakeep. Ссылка улетит на VPS автоматически.

Поделиться ссылкой из любого приложения

Стандартный механизм «Share» на iOS и Android позволяет поделиться ссылкой из YouTube, Telegram, Reddit и любого другого приложения прямо в Karakeep. AI обработает её в фоне — при следующем открытии приложения ссылка уже будет с тегами.

9. Полезные настройки

Архив полных страниц

По умолчанию Karakeep делает скриншот. Можно включить сохранение полной страницы в PDF — это позволит читать статьи офлайн, даже если оригинал удалён:

~/karakeep/.env
CRAWLER_FULL_PAGE_ARCHIVE=true

Внимание: PDF занимает больше места на диске (500 КБ–5 МБ на страницу).

Скачивание видео

Karakeep встроенно поддерживает yt-dlp — скачивает видео с YouTube, Vimeo и других платформ при сохранении ссылки:

~/karakeep/.env
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»

Meilisearch требует достаточно RAM. Проверьте сколько памяти доступно: free -h. Чтобы ограничить аппетит Meilisearch, добавьте в секцию meilisearch в docker-compose.yml ограничение памяти контейнера: deploy: { resources: { limits: { memory: 512M } } }. Надёжное решение — перейти на VPS с 2+ ГБ RAM.

⚠ Скриншоты не создаются, в логах chrome — ошибки песочницы

Не добавляйте --no-sandbox: раньше это был рабочий совет для стороннего образа alpine-chrome, но Karakeep перешёл на собственный karakeep-chrome, где песочница настроена правильно, и лишний флаг только ослабит изоляцию. Сначала убедитесь, что секция chrome совпадает со свежим файлом из репозитория, затем пересоздайте контейнеры: docker compose down && docker compose up -d

⚠ AI теги появляются на английском, хотя страница на русском

Добавьте в .env строку INFERENCE_LANG=russian, затем перезапустите: docker compose up -d. Новые закладки будут тегироваться на русском. Уже сохранённые нужно перетегировать вручную — через три точки на карточке → «Re-crawl».

⚠ Ошибка «NEXTAUTH_URL mismatch» после смены домена

Karakeep использует NEXTAUTH_URL для формирования ссылок в OAuth и сессиях. При смене домена обязательно обновите значение в .env и перезапустите контейнеры. Старые сессии при этом инвалидируются — потребуется заново войти в аккаунт.

Karakeep ходит наружу за каждой страницей: нужны полная виртуализация и свободные исходящие соединения, иначе Chromium не снимет скриншот.

Провайдеры для Docker-стека →

Смотрите также