Tropic Host

Karakeep на VPS: власний архів закладок із пошуком і ШІ

6 хв. читання
Tropic
Karakeep на VPS: власний архів закладок із пошуком і ШІ

Karakeep: встановлення персонального архіву закладок на VPS

Зберегти посилання легко. Знайти його через шість місяців складніше — особливо якщо сторінка змінилася, зникла або загубилася серед сотень закладок.

Karakeep зберігає не лише URL, а й вміст сторінки, попередній перегляд, нотатки, зображення та PDF. Архів можна шукати за текстом, упорядковувати записи у списки й автоматично позначати їх тегами за допомогою ШІ. Сервіс працює на вашому 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. Встановіть розширення браузера або мобільний застосунок та імпортуйте закладки.

Ключ ШІ для запуску сервісу не потрібен. Без нього зберігання сторінок, списки, нотатки, OCR і повнотекстовий пошук продовжать працювати. Автоматичні теги та резюме створюватися не будуть.

Що таке Karakeep?

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

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

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

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

Основні можливості Karakeep

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

Кожен запис може бути посиланням, текстовою нотаткою або завантаженим файлом. OCR витягує текст із зображень і PDF, тому їх також можна шукати. До запису можна прикріпити нотатку, цитату або додатковий файл.

Пошук за вмістом

Meilisearch індексує збережений текст, нотатки й метадані. Не обов'язково пам'ятати точний заголовок: достатньо фрази або теми. Коли налаштовано embeddings, доступний і семантичний пошук за змістом.

Розумні списки та спільна робота

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

Розумний список — це збережений пошуковий запит, який оновлюється автоматично. Наприклад, він може показувати всі записи з тегом ai, додані протягом останнього тижня.

Архівування сторінок

За замовчуванням Karakeep зберігає витягнутий текст і знімок видимої частини сторінки. Додатково можна ввімкнути знімок усієї сторінки, PDF або автономний HTML-архів. Це захищає бібліотеку від мертвих посилань, але збільшує використання диска.

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

Необов'язкове тегування за допомогою ШІ

Karakeep може створювати теги та короткі резюме через зовнішній API, сумісний з OpenAI, або локальну модель Ollama. Без ШІ програма залишається повноцінним менеджером закладок.

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

Вимоги Karakeep до сервера

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

  • Karakeep зберігає базу даних і обслуговує інтерфейс;
  • headless Chrome відкриває сторінки, запускає JavaScript і робить знімки екрана;
  • Meilisearch індексує бібліотеку.

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

  • 2 vCPU;
  • 2 GB RAM;
  • 20–30 GB SSD або NVMe;
  • Ubuntu 24.04 LTS;
  • публічна IP-адреса та домен.

Для кількох користувачів, великого імпорту, багатьох RSS-стрічок і PDF комфортнішими будуть 4 GB RAM. Вимоги до диска залежать від режиму архівування: текст займає мало місця, а повні знімки, PDF і відео можуть швидко збільшити бібліотеку.

Як встановити Karakeep на VPS

У прикладі використано Ubuntu 24.04 і піддомен keep.example.com.

1. Налаштуйте DNS і firewall

Створіть 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=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=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 та інших підтримуваних сервісів. Великий архів краще додавати частинами: сервер має відкрити сторінки, витягнути текст, створити знімки екрана та побудувати пошуковий індекс.

Як увімкнути ШІ та архівування всієї сторінки

Для 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.

Безпека, оновлення та резервні копії

Crawler Karakeep відкриває збережені користувачем адреси з мережі вашого сервера. Тому не залишайте реєстрацію відкритою і надавайте доступ лише довіреним людям. Базовий захист SSRF присутній, але для публічного сервісу офіційний проєкт рекомендує ізолювати браузер або спрямувати його через обмежений проксі.

Також використовуйте HTTPS і надійні паролі, не відкривайте порт 3000 та регулярно оновлюйте контейнери:

cd /opt/karakeep
docker compose up --pull always -d

Основна база даних і збережені матеріали розташовані у Docker volume з назвою 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 можна перебудувати, але для великої бібліотеки також корисно зробити резервну копію volume karakeep_meilisearch.

Надішліть архів із /var/backups/karakeep на інший сервер, NAS або object storage. Копія на тому самому VPS не захищає від відмови диска чи видалення віртуальної машини.

Який VPS вибрати для Karakeep?

Для персональної бібліотеки без Ollama підійде Linux VPS із 2 vCPU, 2 GB RAM і 20–30 GB NVMe. Для великого імпорту, кількох користувачів і повного архівування виберіть 4 GB RAM і більший диск.

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

Ресурси локального Ollama плануйте окремо: навіть невелика мовна модель може потребувати більше пам'яті, ніж увесь основний стек Karakeep.

Висновок

Karakeep перетворює розкидані посилання на персональну бібліотеку з пошуком. Він зберігає сторінки, нотатки, зображення та PDF, підтримує OCR, списки, розширення, мобільні застосунки й необов'язкове тегування ШІ.

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

Поширені запитання

Karakeep безкоштовний?

Self-hosted версія має відкритий код і не потребує обов'язкової підписки. Ви сплачуєте за VPS, домен, сховище резервних копій і, за потреби, зовнішній API ШІ.

Чи потрібен API-ключ для роботи Karakeep?

Ні. Збереження й індексація матеріалів, списки, нотатки, OCR і повнотекстовий пошук працюють без ШІ. Модель потрібна для автоматичних тегів, резюме та пов'язаних функцій.

Скільки RAM потребує Karakeep?

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

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

Так. Karakeep підтримує стандартний HTML-файл закладок браузера, Pocket, Omnivore та кілька інших форматів. Після імпорту Karakeep обробляє сторінки і додає їх до пошуку.

Чи залишиться стаття доступною, якщо оригінальний сайт зникне?

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