Skip to content

feat: migrate to a custom karakeep chrome image - #3005

Merged
MohamedBassem merged 1 commit into
karakeep-app:mainfrom
MohamedBassem:feat/migrate-to-karakeep-chrome
Aug 11, 2026
Merged

MohamedBassem merged 1 commit into
karakeep-app:mainfrom
MohamedBassem:feat/migrate-to-karakeep-chrome

Conversation

@MohamedBassem

Copy link
Copy Markdown
Member

Fixes: #3000 #2172

@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR migrates Karakeep's deployment examples from the unmaintained Alpine Chrome image to the custom multi-architecture Karakeep Chrome image.

  • Updates Compose, Kubernetes, benchmark, seed, and development launch configurations.
  • Adds a dedicated migration guide explaining the new image's entrypoint and port-forwarding contract.
  • Restricts development CDP port publication to host loopback.
  • Leaves the legacy upgrade example incomplete by changing only the image while omitting required argument cleanup.

Confidence Score: 4/5

The incomplete legacy upgrade instructions should be fixed before merging because following them can leave Chrome unreachable and disable crawler browser features.

The operational manifests consistently follow the custom image's entrypoint contract, but the legacy documentation directs users to that image while retaining arguments that the new migration guide identifies as conflicting with its port forwarding.

Files Needing Attention: docs/docs/06-administration/07-legacy-container-upgrade.md

Important Files Changed

Filename Overview
docker/docker-compose.yml Correctly adopts the custom image, enables init, and removes arguments now managed by the image entrypoint.
docker/docker-compose.dev.yml Applies the new image contract and safely limits the host CDP binding to loopback.
kubernetes/chrome-deployment.yaml Preserves inherited image entrypoint execution by replacing the old command override with arguments.
start-dev.sh Launches the custom image with init and the expected loopback port mapping and browser arguments.
docs/docs/06-administration/09-chrome-image-migration.md Clearly documents the mandatory remote-debugging argument removal and the image's forwarding behavior.
docs/docs/06-administration/07-legacy-container-upgrade.md Changes the legacy example's image without including or linking to the mandatory invocation migration.
Prompt To Fix All With AI
### Issue 1
docs/docs/06-administration/07-legacy-container-upgrade.md:39
**Legacy migration retains conflicting flags**

When a legacy deployment user applies this embedded diff, it changes only the image and retains the old `--remote-debugging-address` and `--remote-debugging-port` arguments. Those arguments conflict with the custom image entrypoint's port-forwarding setup, leaving Chrome without a usable CDP endpoint at `http://chrome:9222` and breaking crawling, screenshots, and PDF capture.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "feat: migrate to a custom karakeep chrom..." | Re-trigger Greptile

- - redis:/data
chrome:
image: gcr.io/zenika-hub/alpine-chrome:123
image: ghcr.io/karakeep-app/karakeep-chrome:release

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Legacy migration retains conflicting flags

When a legacy deployment user applies this embedded diff, it changes only the image and retains the old --remote-debugging-address and --remote-debugging-port arguments. Those arguments conflict with the custom image entrypoint's port-forwarding setup, leaving Chrome without a usable CDP endpoint at http://chrome:9222 and breaking crawling, screenshots, and PDF capture.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/docs/06-administration/07-legacy-container-upgrade.md
Line: 39

Comment:
**Legacy migration retains conflicting flags**

When a legacy deployment user applies this embedded diff, it changes only the image and retains the old `--remote-debugging-address` and `--remote-debugging-port` arguments. Those arguments conflict with the custom image entrypoint's port-forwarding setup, leaving Chrome without a usable CDP endpoint at `http://chrome:9222` and breaking crawling, screenshots, and PDF capture.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f307e414cb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- - redis:/data
chrome:
image: gcr.io/zenika-hub/alpine-chrome:123
image: ghcr.io/karakeep-app/karakeep-chrome:release

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include the required Chrome flag migration

For users upgrading from the legacy Compose configuration, this changes only the image and therefore leaves the old --remote-debugging-address and --remote-debugging-port command arguments in place. The newly added Chrome migration guide states that those arguments conflict with the new image's forwarding setup, so following this legacy upgrade diff can leave Chrome unreachable. Remove the obsolete arguments in this diff or explicitly direct these users through the Chrome migration guide.

Useful? React with 👍 / 👎.

- chromium-browser
- --headless
- --no-sandbox
image: ghcr.io/karakeep-app/karakeep-chrome:release

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Always pull the floating Chrome release tag

When this Deployment is restarted or reapplied on a node that already cached karakeep-chrome:release, Kubernetes defaults a non-latest tag to imagePullPolicy: IfNotPresent, so later browser promotions remain silently unused. This differs from kubernetes/web-deployment.yaml, which explicitly uses Always for its moving image; add the same policy here or pin an immutable Chrome tag.

Useful? React with 👍 / 👎.

@MohamedBassem
MohamedBassem merged commit 951e502 into karakeep-app:main Aug 11, 2026
6 checks passed
ajgon pushed a commit to deedee-ops/home-ops that referenced this pull request Aug 11, 2026
…0.33.2) (#600)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/karakeep-app/karakeep](https://github.com/karakeep-app/karakeep) | patch | `0.33.1` → `0.33.2` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/7) for more information.

---

### Release Notes

<details>
<summary>karakeep-app/karakeep (ghcr.io/karakeep-app/karakeep)</summary>

### [`v0.33.2`](https://github.com/karakeep-app/karakeep/releases/tag/v0.33.2): 0.33.2

[Compare Source](karakeep-app/karakeep@v0.33.1...v0.33.2)

##### 0.33.2

This is a patch release for after [0.33.1](https://github.com/karakeep-app/karakeep/releases/tag/v0.33.1). It contains the following fixes:

**Bug fixes:**

- Change default "use max completion tokens" token env variable to `true` when using the default OpenAI configuration now that we're using 5.6 luna and this flag is required there ([#&#8203;3007](karakeep-app/karakeep#3007)).
- We're migrating to a custom karakeep chrome container (based on <https://github.com/chromedp/docker-headless-shell>) now that the old alpine-chrome is no longer fetch-able (and has been long abandoned by the maintainer). Check the migration guide [here](https://docs.karakeep.app/next/administration/chrome-image-migration). The old image will continue to work, but it's recommended that you migrate to the new one as it also upgrades chrome to 151 (compared to 124 in the old image). If you've been using browserless (e.g. on unraid), you're not impacted by this, and you don't need to migrate.
- Large singlefile archives (typically because of videos) used to fail metadata extraction as the parser used to OOM. We strip inline videos now to make the parsing succeed.
- Hardened the link to asset conversion mechanism in the crawler that used to result into silently broken assets. ([#&#8203;3002](karakeep-app/karakeep#3002))
- Pinned nodejs to version 24.18.1 thanks to [@&#8203;eriktews](https://github.com/eriktews) ([#&#8203;2996](karakeep-app/karakeep#2996)) to overcome a bug in the latest node 24.19 version (check [#&#8203;2989](karakeep-app/karakeep#2989) for details). The proxmox scripts also were pinned by [@&#8203;MickLesk](https://github.com/MickLesk).
- Karakeep's favicon is now light/dark mode aware, thanks to [@&#8203;ehfreema](https://github.com/ehfreema) ([#&#8203;2990](karakeep-app/karakeep#2990)).

**New features:**

- You can now upload custom SingleFile archives to karakeep directly using the CLI.

##### Changelog

- fix: Set max completion tokens to true when using default openai config ([#&#8203;3007](karakeep-app/karakeep#3007)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`98c0c78`](karakeep-app/karakeep@98c0c789)
- feat: migrate to a custom karakeep chrome image ([#&#8203;3005](karakeep-app/karakeep#3005)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`951e502`](karakeep-app/karakeep@951e5025)
- feat: publish a new karakeep chrome container ([#&#8203;3004](karakeep-app/karakeep#3004)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b6415b3`](karakeep-app/karakeep@b6415b3c)
- feat: favicon adapts to browser theme ([#&#8203;2990](karakeep-app/karakeep#2990)) - [@&#8203;ehfreema](https://github.com/ehfreema) in [`ad27c05`](karakeep-app/karakeep@ad27c051)
- build: Fix crash loop caused by better-sqlite3 and node. ([#&#8203;2996](karakeep-app/karakeep#2996)) - [@&#8203;eriktews](https://github.com/eriktews) in [`132e566`](karakeep-app/karakeep@132e566b)
- fix(crawler): fail on failure to download urls converted to assets ([#&#8203;3002](karakeep-app/karakeep#3002)) - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`f57aad1`](karakeep-app/karakeep@f57aad1d)
- feat(mobile): switch to using context menu in ios - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`28e7909`](karakeep-app/karakeep@28e79094)
- fix(restate): use logger middleware instead of durable steps - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`764ba85`](karakeep-app/karakeep@764ba850)
- fix(workers): drop inline media blocks before metadata parsing - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`1c0b0a9`](karakeep-app/karakeep@1c0b0a9a)
- feat(cli): allow importing singlefile archives via the CLI - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`5f6ba26`](karakeep-app/karakeep@5f6ba262)
- docs: update intro doc with new features - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`3af6f45`](karakeep-app/karakeep@3af6f458)
- readme: update the readme and docs with the new features - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`a81f935`](karakeep-app/karakeep@a81f935a)
- release: release cli, sdk & mcp - [@&#8203;MohamedBassem](https://github.com/MohamedBassem) in [`b3fbf6b`](karakeep-app/karakeep@b3fbf6bb)

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Warsaw)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC44LjEiLCJ1cGRhdGVkSW5WZXIiOiI0NC44LjEiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOlsicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9wYXRjaCJdfQ==-->

Reviewed-on: https://git.ajgon.casa/deedee/mark13/pulls/600
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Unable to pull gcr.io/zenika-hub/alpine-chrome:124 due to GCP billing

1 participant