mirror of
https://github.com/karakeep-app/karakeep.git
synced 2026-04-25 07:56:05 +03:00
Open
opened 2026-03-02 11:54:41 +03:00 by kerem
·
6 comments
No Branch/Tag specified
main
refactor/use-npm-singlefile
onetab
claude/issue-2596-20260321-1401
claude/fix-docs-button-responsive-V3aBQ
claude/review-import-backpressure-D4ArJ
claude/fix-archived-bookmarks-mobile-P9OJW
claude/issue-1189-20260211-1601
claude/fix-nested-smart-lists-3uFkt
claude/issue-2298-20251223-1704
feat/import-v3
claude/add-cli-search-subcommand-6kIe0
claude/add-bookmark-indexing-timestamps-96bPj
claude/auto-disable-failing-feeds-fkDhP
claude/add-tag-search-aliases-HzESD
feat/docker-compose-dev
claude/add-attachedby-tags-endpoint-01WYfemMGHJJjXsPYLvUJAno
claude/fix-crawler-memory-leaks-NE7Ct
bookmark-debugger
claude/issue-2352-20260106-1120
claude/issue-1977-20260102-2348
claude/add-banner-rendering-JeLUk
claude/add-descendant-qualifier-cUm26
claude/skip-metadata-refresh-archives-CAo4Y
claude/fix-archive-pending-banner-pAyGM
claude/add-embeddings-support-h2swV
claude/nested-manage-lists-QVV85
claude/privacy-type-system-MG1bT
claude/add-action-menu-icons-6hNKw
claude/issue-2299-20251223-1711
claude/bookmark-indexing-progress-QwZSI
claude/migrate-bookmark-attachments-3O2te
claude/add-2025-wrapped-feature-tIUIh
claude/improve-ai-settings-design-639tq
claude/add-youtube-metascraper-plugin-0lWC7
claude/add-problem-reporting-gSSEV
claude/add-mobile-list-menus-spcS7
claude/shadcn-bookmark-cards-WWHzP
claude/add-extensions-link-HTeXc
claude/add-onboarding-screens-hsYMO
claude/fix-settings-switch-overflow-nlzM4
claude/clamp-bookmark-titles-diAEz
claude/port-stats-mobile-expo-MuXAn
claude/whats-new-base-version-vrv8C
claude/fix-settings-auth-checks-jgyD8
claude/add-server-version-display-3sGa2
claude/fix-tag-editor-scrolling-rzdbG
claude/add-company-pricing-card-y5mHY
claude/audit-optimize-transactions-xpDVc
codex/ensure-consistent-ui-experience-across-app-pages
claude/plan-opentelemetry-integration-01Jx183mz1Ev8h8JoYj97Auw
libsql
db-indicies
claude/export-import-lists-01UuCWwdaqduAd35NppvjnMD
claude/configurable-worker-timeout-0198GQh6YrrRzqG62xnogyrz
claude/check-import-quota-01CPdxTpHp18Ba62bYcBTVbA
claude/scraper-worker-thread-01FEHen6MGrQHmdBstJSuiyA
claude/customize-dialog-styling-01CVjEv2KgyZJSpCg3mqkvR7
claude/add-asset-cache-headers-0175WhNcqwiwurrmjj52jnLT
claude/add-db-search-plugin-017Xxd4Jq3MfjWT788vgfbaq
benchmarks-2
claude/add-filtered-deletion-01DTxWNcg3hhqdNpeNLa3s6L
claude/actionbutton-loading-spinner-015DY5ZTvgPgFAXTZz3UGaYv
claude/add-broken-links-qualifier-01S31X1LsKiYb9gE1dXTKvi3
claude/docker-release-tag-trigger-01UmzFXEumhK2jdmRGtMcueo
claude/spread-feed-fetch-scheduling-01EihUtmZSyqeE1HfRMessxW
restate-idempotency
claude/align-android-ios-colors-01GJfkhEyZVBReohVioPa8ok
claude/improve-mobile-app-colors-0155LzHfkd5HyJr6YyZMsus5
codex/add-autocomplete-for-search-query-language
claude/add-bookmark-backups-016L2A8Z94n7tDgDdMPdFuAd
claude/restrict-binary-user-permissions-01FSGyy2RXGZvE26YbAejzGi
effect-ts
claude/prepare-trpc-npm-publish-0193EjfwpxSNVNcLXqXjs6Ln
shared-list-sidebar
claude/lazy-load-tiktoken-017UTNpJPTcMMQvNEBa1aFwo
codex/fix-asset-pre-processing-worker-abort-signals
add-groupid
claude/add-bookmark-list-button-01VF7uXYNLsVDzqdozWMXP5M
claude/extract-shared-ui-components-01DSVfaCr6WRqAyx1vJTZk9r
claude/migrate-shadcn-sidebar-01DKjpg9MD5PJ2potemSnbvW
claude/add-collaborators-rate-limits-01VjXyRWWPUkGQKa8d8D8qKj
claude/modernize-dark-mode-01FRfE81PAY5C44pFu1cYocf
claude/add-signed-url-bookmark-01PjYT1ZhvLK2FPJNTAhJsWf
restate-group-id
claude/add-highlights-page-012vhHpn8fVNp3gf7gBeW14s
claude/disable-shared-bookmark-features-01B9fiGUdu6NyWaxSQFsQBxP
claude/mobile-bookmark-grid-layouts-018cGBBMhPJVq6PJVRBpqT2r
claude/add-mobile-bookmark-summary-01494LYoh4sJW5Fj4GPm62Vj
claude/add-mobile-tags-screen-01WRADt4ZzvXVew1Y9vqF8SV
claude/add-highlight-notes-01LpanRLS4a2YMnT1qB5GTqX
claude/add-search-bar-014k2ngaqjwYRVSvqmbuECqr
claude/hide-collaborator-emails-01TQrkkMupC7CR9BTuDkireg
claude/list-invitation-approval-0129V89M1riXW6JqmoF74VfM
claude/add-bookmark-archive-sort-018VbGPGvtmsGgXFEERoAX7B
claude/add-mobile-smart-lists-01251tYo9u1SywE6XFezAv9e
claude/bookmark-drag-drop-01DmWq286ogHpDGHKcXjKr3z
claude/add-rss-import-01DH1Q2axcDeq8nQJR5MWjPJ
claude/mobile-inapp-browser-auth-01KiT6bwyntRPQ1X4oTtAveC
claude/offline-mode-react-query-01D1rE2bdBEPw2teGqunr5Gd
claude/add-singlefile-extension-support-01BEB9QQZABzwfZDvR9Bz5b2
claude/custom-list-slugs-01VxcfkNUXZ97FNpNVURopMq
claude/issue-2148-20251118-1133
claude/add-groupid-queue-fairness-011CV1r8Wb46HuGAg5o95i3m
claude/hide-viewer-shared-lists-01Fst6NBvdxrXXnDhUmjsNDP
claude/collaborative-lists-013AvDvMqkoszDVcSoCYgBcM
claude/implement-feature-01LT5XzGsbEhZkYXNEjEwdui
claude/fix-bookmark-loading-state-01AgF4H2drxwuTCJDB2Xgiu4
claude/admin-user-edit-013tbiRmb1KX2fhSYqmGKCu8
claude/expose-all-api-01YTruEW72WQYMtq4iZoaPkA
claude/add-doc-link-main-016NYLxShpKuH6R8XCBgeZtc
claude/fix-issue-2133-019JLvdSRAUbU4FtjQztcM6S
claude/explore-effect-ts-integration-01F7xb1dWwP1ma4LnLbFGfDD
claude/optimize-dockerfile-build-011CV5gDnPZbdbbVSPDofC4e
claude/add-custom-headers-guide-011CV249t16aWDRb1mCrzQdC
claude/mobile-app-signup-011CUxPtCXgU6U3T8GShTR2Q
claude/crawler-worker-fetch-browser-011CUvcRc24XEr9DTWDW6MX8
claude/fix-issue-784-011CUvubQrcZHG9S3KjpCKbK
codex/add-user-settings-for-inference-language-and-screenshots
claude/fix-mobile-signin-server-address-011CUnaUWwY2Fhq5Xbwhgr8H
better-auth-2
claude/issue-2028-20251012-1429
claude/issue-1010-20251012-1154
codex/update-feed-refresh-job-idempotency-key
restate
import-v2
fix-public-lists
recurse-delete-list
abort-dangling-processing
tag-pagination
ratelimit-plugin
claude/issue-1937-20250914-0912
codex/implement-title-search-query-qualifier
copilot/add-edit-button-for-notes
cookie-path
ai-tag-cleanup
codex/add-allowlist-and-blocklist-env-variables
mobile-retheme
expo-next-upgrade
opencode/issue1788-20250727215611
fix-trailing-slash-deduplication
edit-bookmark-dialog
bookmark-embeddings
rag
nextjs-15
bookmark-hover-bar
sapling-pr-archive-MohamedBassem
track-bookmark-assets
json-cli
admin-settings
mobile-dark-mode
android/v1.9.2-0
ios/v1.9.1-1
android/v1.9.1-0
ios/v1.9.1-0
ios/v1.9.0-2
ios/v1.9.0-1
android/v1.9.0-1
extension/v1.2.9
cli/v0.31.0
sdk/v0.31.0
mcp/v0.31.0
android/v1.9.0-0
ios/v1.9.0-0
v0.31.0
android/v1.8.5-0
cli/v0.30.0
sdk/v0.30.0
ios/v1.8.4-0
android/v1.8.4-0
v0.30.0
cli/v0.29.1
v0.29.3
v0.29.2
v0.29.1
sdk/v0.29.0
cli/v0.29.0
mcp/v0.29.0
ios/v1.8.3-0
android/v1.8.3-0
extension/v1.2.8
v0.29.0
android/v1.8.2-2
android/v1.8.2-1
ios/v1.8.2-0
android/v1.8.2-0
extension/v1.2.7
android/v1.8.1-0
ios/v1.8.1-0
v0.28.0
cli/v0.27.1
cli/v0.27.0
v0.27.1
sdk/v0.27.0
v0.27.0
android/v1.8.0-1
ios/v1.8.0-1
mcp/v0.26.0
sdk/v0.26.0
v0.26.0
cli/v0.25.0
ios/v1.7.0-1
mcp/v0.25.0
v0.25.0
extension/v1.2.6
ios/v1.7.0-0
android/v1.7.0-0
v0.24.1
v0.24.0
mcp/v0.23.10
mcp/v0.23.9
mcp/v0.23.8
extension/v1.2.5
mcp/v0.23.7
mcp/v0.23.6
mcp/v0.23.5
mcp/v0.23.4
sdk/v0.23.2
cli/v0.23.0
extension/v1.2.4
android/v1.6.9-1
ios/v1.6.9-1
v0.23.2
v0.23.1
sdk/v0.23.0
v0.23.0
ios/v1.6.9-0
sdk/v0.22.0
v0.22.0
android/v1.6.8-0
ios/v1.6.8-0
sdk/v0.21.2
sdk/v0.21.1
sdk/v0.21.0
v0.21.0
cli/v0.20.0
v0.20.0
ios/v1.6.7-4
android/v1.6.7-4
ios/v1.6.7-3
android/v1.6.7-3
android/v1.6.7-2
ios/v1.6.7-2
android/v1.6.7-1
ios/v1.6.7-1
ios/v1.6.7-0
android/v1.6.7-0
v0.19.0
android/v1.6.6-0
android/v1.6.5-0
ios/v1.6.5-0
ios/v1.6.4-0
android/v1.6.4-0
v0.18.0
v0.17.1
v0.17.0
ios/v1.6.3-0
android/v1.6.3-0
extension/v1.2.3
ios/v1.6.2-1
android/v1.6.2-1
ios/v1.6.2-0
android/v1.6.2-0
v0.16.0
ios/v1.6.1-3
android/v1.6.1-3
ios/v1.6.1-2
android/v1.6.1-2
android/v1.6.1-1
ios/v1.6.1-1
android/v1.6.1-0
ios/v1.6.1-0
extension/v1.2.2
android/v1.6.0-1
ios/v1.6.0-1
ios/v1.6.0
android/v1.6.0
cli/v0.13.7
cli/v0.13.6
v0.15.0
cli/v0.13.5
extension/v1.2.1
v0.14.0
cli/v0.13.3
cli/v0.13.2
cli/v0.13.1
cli/v0.13.0
v0.13.1
v0.13.0
mobile-v1.5.0
mobile-v1.4.0
v0.12.2
v0.12.1
v0.12.0
v0.11.1
v0.11.0
v0.10.1
v0.10.0
v0.9.0
v0.8.0
v0.7.0
v0.6.0
v0.5.0
v0.4.1
v.0.4.0
v.0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.0
Labels
Clear labels
Mirrored from GitHub Pull Request
UI/UX
android
bug
dependencies
documentation
documentation
extension
feature request
feature request
good first issue
ios
long-term
performance
pri/high
pri/low
pri/medium
pull-request
Mirrored from GitHub Pull Request
question
status/approved
status/icebox
status/pending_clarification
status/untriaged
No labels
UI/UX
android
bug
dependencies
documentation
documentation
extension
feature request
feature request
good first issue
ios
long-term
performance
pri/high
pri/low
pri/medium
pull-request
question
status/approved
status/icebox
status/pending_clarification
status/untriaged
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
starred/karakeep#1054
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @igortau on GitHub (Jun 30, 2025).
Original GitHub issue: https://github.com/karakeep-app/karakeep/issues/1690
Describe the Bug
the web interface took a very long time to open after the update. that is, you have to wait probably half a minute or longer for the data to appear.
Steps to Reproduce
Open web browser and write karakeep container address
Expected Behaviour
the web interface took a very long time to open after the update. that is, you have to wait probably half a minute or longer for the data to appear.
Screenshots or Additional Context
Massage from watchtower
Watchtower updates on ea4afa62ac9a
Found new ghcr.io/karakeep-app/karakeep:latest image (c5fcb1a653c6)
Stopping /Karakeep-WEB (c0927c25acb1) with SIGTERM
Creating /Karakeep-WEB
Removing image ed31f8f95786
Log from karakeep web
✓ Starting...
✓ Ready in 4.1s
2025-06-30T09:34:10.921Z info: Workers version: nightly
2025-06-30T09:34:11.393Z info: [crawler] Loading adblocker ...
2025-06-30T09:34:11.507Z info: [Crawler] Connecting to existing browser instance: http://chrome:9222
2025-06-30T09:34:11.575Z info: [Crawler] Successfully resolved IP address, new address: http://172.29.12.5:9222/
2025-06-30T09:34:14.067Z info: Starting crawler worker ...
2025-06-30T09:34:14.068Z info: Starting inference worker ...
2025-06-30T09:34:14.069Z info: Starting search indexing worker ...
2025-06-30T09:34:14.070Z info: Starting tidy assets worker ...
2025-06-30T09:34:14.070Z info: Starting video worker ...
2025-06-30T09:34:14.071Z info: Starting feed worker ...
2025-06-30T09:34:14.072Z info: Starting asset preprocessing worker ...
2025-06-30T09:34:14.073Z info: Starting webhook worker ...
2025-06-30T09:34:14.073Z info: Starting rule engine worker ...
[next-auth][warn][NEXTAUTH_URL]
https://next-auth.js.org/warnings#nextauth_url
<-- GET /api/assets/38e309e0-2e2f-4149-bf6d-b8c446e6502e
--> GET /api/assets/38e309e0-2e2f-4149-bf6d-b8c446e6502e 200 35ms
<-- GET /api/assets/f95f5743-6e4a-4268-96b2-ebc060fcf6de
<-- GET /api/assets/760b39a6-971b-4082-8c80-aa343034c65b
<-- GET /api/assets/513dd28a-b0da-4977-93a0-cb40dc763504
<-- GET /api/assets/13b1d727-b539-4040-8726-d92292b202dd
<-- GET /api/assets/ff0f6fb5-9f0c-490f-b09c-9b28101694ba
--> GET /api/assets/f95f5743-6e4a-4268-96b2-ebc060fcf6de 200 36s
--> GET /api/assets/760b39a6-971b-4082-8c80-aa343034c65b 200 36s
--> GET /api/assets/513dd28a-b0da-4977-93a0-cb40dc763504 200 36s
--> GET /api/assets/13b1d727-b539-4040-8726-d92292b202dd 200 37s
--> GET /api/assets/ff0f6fb5-9f0c-490f-b09c-9b28101694ba 200 291ms
<-- GET /api/assets/d6a1daa0-fb06-47f4-8bb3-bc47bffb8bc9
--> GET /api/assets/d6a1daa0-fb06-47f4-8bb3-bc47bffb8bc9 200 221ms
<-- GET /api/assets/5db25bc1-68ca-4d29-8278-b600ff3cb5ed
--> GET /api/assets/5db25bc1-68ca-4d29-8278-b600ff3cb5ed 200 31ms
<-- GET /api/assets/e0f1111e-1cbf-4106-b0cd-dc63e23a97e1
<-- GET /api/assets/1e2989e6-86bb-400a-b168-153b1ed11a46
--> GET /api/assets/e0f1111e-1cbf-4106-b0cd-dc63e23a97e1 200 588ms
<-- GET /api/assets/831878e8-1c52-47c4-9de2-5936ade75293
--> GET /api/assets/1e2989e6-86bb-400a-b168-153b1ed11a46 200 603ms
<-- GET /api/assets/e442a966-1589-4e9e-942b-414ab101f865
<-- GET /api/assets/c07c3570-0523-4da2-bc11-9cf27eb92fd3
--> GET /api/assets/831878e8-1c52-47c4-9de2-5936ade75293 200 45ms
<-- GET /api/assets/a6082c41-bd2d-4e76-90d7-f7e718c10bb4
--> GET /api/assets/e442a966-1589-4e9e-942b-414ab101f865 200 44ms
<-- GET /api/assets/8fc3e61e-964f-444e-8f1b-47bd5ffa4ad0
--> GET /api/assets/c07c3570-0523-4da2-bc11-9cf27eb92fd3 200 53ms
--> GET /api/assets/a6082c41-bd2d-4e76-90d7-f7e718c10bb4 200 35ms
--> GET /api/assets/8fc3e61e-964f-444e-8f1b-47bd5ffa4ad0 200 114ms
<-- GET /api/assets/5a864fb4-6cfe-450d-b775-472130f00060
<-- GET /api/assets/2fb50598-556f-4219-8755-495f808a5984
<-- GET /api/assets/dbbcce8c-3624-417a-9062-79f58d62c713
<-- GET /api/assets/301cd8b5-3044-4955-8fc2-172d5ba63f26
--> GET /api/assets/5a864fb4-6cfe-450d-b775-472130f00060 200 461ms
--> GET /api/assets/2fb50598-556f-4219-8755-495f808a5984 200 470ms
--> GET /api/assets/dbbcce8c-3624-417a-9062-79f58d62c713 200 474ms
--> GET /api/assets/301cd8b5-3044-4955-8fc2-172d5ba63f26 200 496ms
<-- GET /api/assets/5cb6b8c3-106e-4bf6-9941-6f2f1db07d83
<-- GET /api/assets/842d7db9-9a47-4374-b7a8-f20a5a362b9a
<-- GET /api/assets/b675ffe4-bb46-4d1d-a062-1f87f871c01a
<-- GET /api/assets/28110704-0a4d-4d96-80bf-2bb624f5d3cf
--> GET /api/assets/842d7db9-9a47-4374-b7a8-f20a5a362b9a 200 68ms
--> GET /api/assets/b675ffe4-bb46-4d1d-a062-1f87f871c01a 200 49ms
--> GET /api/assets/28110704-0a4d-4d96-80bf-2bb624f5d3cf 200 46ms
--> GET /api/assets/5cb6b8c3-106e-4bf6-9941-6f2f1db07d83 200 86ms
2025-06-30T10:00:00.391Z info: [feed] Scheduling feed refreshing jobs ...
<-- GET /api/assets/38e309e0-2e2f-4149-bf6d-b8c446e6502e
--> GET /api/assets/38e309e0-2e2f-4149-bf6d-b8c446e6502e 200 226ms
<-- GET /api/assets/5cb6b8c3-106e-4bf6-9941-6f2f1db07d83
--> GET /api/assets/5cb6b8c3-106e-4bf6-9941-6f2f1db07d83 200 336ms
<-- GET /api/assets/842d7db9-9a47-4374-b7a8-f20a5a362b9a
--> GET /api/assets/842d7db9-9a47-4374-b7a8-f20a5a362b9a 200 23ms
<-- GET /api/assets/28110704-0a4d-4d96-80bf-2bb624f5d3cf
--> GET /api/assets/28110704-0a4d-4d96-80bf-2bb624f5d3cf 200 21ms
<-- GET /api/assets/b675ffe4-bb46-4d1d-a062-1f87f871c01a
--> GET /api/assets/b675ffe4-bb46-4d1d-a062-1f87f871c01a 200 20ms
<-- GET /api/assets/174c29e1-8620-48ad-9be5-114f703d5fb6
--> GET /api/assets/174c29e1-8620-48ad-9be5-114f703d5fb6 200 10ms
<-- GET /api/assets/86a7829e-0c91-4a9a-9e7b-97c91ba74dd9
--> GET /api/assets/86a7829e-0c91-4a9a-9e7b-97c91ba74dd9 200 116ms
<-- GET /api/assets/edb1696a-25cf-40f3-a260-69c604a89106
--> GET /api/assets/edb1696a-25cf-40f3-a260-69c604a89106 200 18ms
<-- GET /api/assets/d85e95e9-62fe-4373-9c9d-2d3dafc9368e
--> GET /api/assets/d85e95e9-62fe-4373-9c9d-2d3dafc9368e 200 39ms
<-- GET /api/assets/658146cc-867b-438c-bc73-7a0181dc499c
--> GET /api/assets/658146cc-867b-438c-bc73-7a0181dc499c 200 11ms
<-- GET /api/assets/329f4796-bee2-4ded-aaa8-e46f2cd6d19f
--> GET /api/assets/329f4796-bee2-4ded-aaa8-e46f2cd6d19f 200 70ms
<-- GET /api/assets/da56ebe3-029d-495f-bd0d-2fb5e8861234
--> GET /api/assets/da56ebe3-029d-495f-bd0d-2fb5e8861234 200 253ms
<-- GET /api/assets/3a2e07b9-8693-4c02-bc60-d7c32d064e7a
--> GET /api/assets/3a2e07b9-8693-4c02-bc60-d7c32d064e7a 200 38ms
<-- GET /api/assets/88155a9d-1fd4-4c7b-b36f-9f7bcd3943fb
--> GET /api/assets/88155a9d-1fd4-4c7b-b36f-9f7bcd3943fb 200 41ms
<-- GET /api/assets/3f193c01-822e-45e8-9f74-df75bdd38c73
<-- GET /api/assets/5691561a-c452-42e8-bdfe-7c89c9a06087
<-- GET /api/assets/90138225-28f8-40b8-9d76-7cda4f767d3c
<-- GET /api/assets/31268154-90e5-4944-ab4b-d94f4a936f24
--> GET /api/assets/3f193c01-822e-45e8-9f74-df75bdd38c73 200 619ms
--> GET /api/assets/5691561a-c452-42e8-bdfe-7c89c9a06087 200 68s
--> GET /api/assets/90138225-28f8-40b8-9d76-7cda4f767d3c 200 68s
Device Details
Chrome, Firefox, android app
Exact Karakeep Version
Karakeep vnightly 0.25
Have you checked the troubleshooting guide?
@igortau commented on GitHub (Jul 1, 2025):
I am currently using Karakeep in my setup, but I am encountering performance problems related to the use of SQLite as the database backend. Since Karakeep relies exclusively on SQLite, I am facing scalability and concurrency limitations, which impact overall system responsiveness.
Here are some specific issues I have observed:
• SQLite’s single-writer limitation causes slowdowns and frequent "database is locked" errors during concurrent operations.
• Some database queries take several seconds, resulting in UI lags and delays.
• Attempts to switch to PostgreSQL were not possible because Karakeep does not support other database backends.
Below are some excerpts from my logs that illustrate the problem:
2025-06-23 14:05:12 - ERROR - SQLite busy: database is locked
2025-06-23 14:06:03 - WARNING - Slow query detected: SELECT * FROM notes WHERE user_id=123; Duration: 3500 ms
2025-06-23 14:07:45 - INFO - Starting database vacuum to optimize performance
For reference, I am using the Karakeep container image from your official repository:
https://github.com/karakeep-app/karakeep/pkgs/container/karakeep
Could you please advise on potential ways to improve performance or plans for supporting more scalable databases such as PostgreSQL in the future?
Thank you very much for your time and support.
@MohamedBassem commented on GitHub (Jul 1, 2025):
@igortau are you by any chance running sqlite on a network attached filesystem? Because it's unlikely you're hitting sqlite limitations unless you have a massive dataset. How large is your sqlite file?
@igortau commented on GitHub (Jul 1, 2025):
Thank you for your quick response!
Yes, I’m running Karakeep inside a container on a QNAP NAS (model TS-673A), and the SQLite database is stored on a shared volume managed by the NAS. The system is using QTS (not ZFS, likely ext4), and the volume is mounted into the container using Docker’s -v bind mount.
The SQLite file is currently about 25 MB — not huge — but I’m seeing the following issues:
• The UI occasionally becomes unresponsive for 3–5 seconds when creating or editing notes
• I frequently see database is locked errors in the logs
• Some simple queries (e.g. SELECT * FROM notes WHERE user_id = ?) take between 2 to 4 seconds
Here’s a typical log excerpt:
2025-06-23 14:05:12 - ERROR - SQLite busy: database is locked
2025-06-23 14:06:03 - WARNING - Slow query detected: SELECT * FROM notes WHERE user_id=123; Duration: 3500 ms
After your reply, I realized that the problem might be caused by SQLite being used on a networked filesystem (even if it's local to the NAS). I understand that SQLite doesn’t work well with concurrent access over shared or network-attached volumes.
Would you recommend storing the SQLite file on a local disk within the container’s writable layer, or is there a better workaround? I'm also considering switching to a different setup if you plan to support PostgreSQL or another backend in the future.
Thanks again — I really like Karakeep and appreciate the project!
@igortau commented on GitHub (Jul 4, 2025):
Hi again,
Thanks for your support earlier!
After updating to the latest Karakeep version, the app starts up fine, but I'm seeing recurring issues related to the crawler worker and Playwright browser.
Karakeep runs inside a container on my QNAP NAS (TS-673A). The chrome browser instance is available at http://chrome:9222, and Karakeep tries to connect to it as shown in logs:
2025-07-04T13:49:48.699Z error: [Crawler] Failed to connect to the browser instance, will retry in 5 secs: browserType.connectOverCDP: connect ECONNREFUSED 172.29.12.4:9222
This happens repeatedly, then Karakeep receives SIGTERM and restarts services:
2025-07-04T13:50:16.970Z info: Received SIGTERM, shutting down ...
...
Running db migration script
...
2025-07-04T13:51:45.688Z info: Workers version: nightly
After that, it reconnects and starts again — until the next browser disconnect.
Additional context:
SQLite file is ~25 MB, stored on NAS shared volume (QTS, ext4)
Everything runs in Docker (with Portainer on NAS)
No heavy traffic or datasets involved
Chrome container might be restarting or crashing silently
Do you have any recommendations for stabilizing the connection to the Playwright browser? Should the browser run in the same container or network namespace?
@igortau commented on GitHub (Jul 5, 2025):
I've observed an issue with the
karakeep-webcontainer repeatedly polling the backend API exposed bykarakeep-meili.When interacting with tasks (e.g.,
/tasks/53963and/tasks/53964), thekarakeep-webcontainer starts sending a very high number of repeated GET requests per second to the Meili backend.Here’s a sample log from the
karakeep-meilicontainer:[2025-06-30 23:52:08 +0000] [18] [INFO] 172.22.0.5:34900 - "GET /api/tasks/53964 HTTP/1.1" 200 [2025-06-30 23:52:08 +0000] [18] [INFO] 172.22.0.5:34900 - "GET /api/tasks/53964 HTTP/1.1" 200 [2025-06-30 23:52:08 +0000] [18] [INFO] 172.22.0.5:34900 - "GET /api/tasks/53964 HTTP/1.1" 200
These requests continue even after the task is finished (e.g., deleting an index). The polling doesn't seem to stop or slow down, which causes unnecessary load on the backend.
My setup:
karakeep-web,karakeep-meili, andkarakeep-chromein Docker via PortainerCould you consider adding exponential backoff or stop polling once the task is complete? Or possibly switch to WebSocket-based updates?
Let me know if I can provide more logs or details.
Thanks a lot!
@rtmvc commented on GitHub (Jul 6, 2025):
Hello,
First, many thanks for this cool project I've just discovered. I hope it will help me preserve my 30k bookmarks after Pocket shutdown as well as my "hoarding" addiction.
I don't want shamefully plug into the discussion, but I'm running into the same kind of issues. I'm running Karakeep 0.25 on Podman using a Raspberry Pi4 with SQLite stored locally on an external HDD.
It's currently importing all my Pocket bookmarks, and I'm experiencing the same kind of slowness on the UI and keep having lots of
SQLite busy,SQLite errorerrors in the logs constantly:Are there any possible settings, like timeouts, concurrency that could favor this ?
Thanks in advance.