Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Migration Hoarder > Karakeep #3764

MickLesk started this conversation in Guides
Apr 9, 2025 · 4 comments · 8 replies
Discussion options

🚀 Migrate from Hoarder to karakeep

The Hoarder project has been renamed to karakeep, with updated codebase, configuration, and service structure. This guide helps you migrate an existing Hoarder installation to karakeep on the same container. This is caused by the fact that hoarder.sh will be removed on April 30, 2025. This means that it will no longer be possible to update the old instance.


✅ Prerequisites

  • Existing Hoarder container running
  • Root access
  • Backup of (or a full snapshot is better)
    • /opt/hoarder
    • /opt/hoarder_data
    • /etc/hoarder

🛠️ Migration Steps

1. Stop Hoarder Services

systemctl stop hoarder-web hoarder-workers hoarder-browser

2. Disable and Remove Old Services

systemctl stop meilisearch
systemctl disable hoarder-web hoarder-workers hoarder-browser
rm -f /etc/systemd/system/hoarder-*.service

3. Rename Files and Folders

mv /opt/hoarder /opt/karakeep
mv /opt/hoarder_data /opt/karakeep_data
mv /etc/hoarder /etc/karakeep
mv /opt/hoarder_version.txt /opt/karakeep_version.txt

4. Update Environment File

mv /etc/hoarder/hoarder.env /etc/karakeep/karakeep.env

Make sure to verify key variables like DATA_DIR and NEXTAUTH_SECRET.


5. Recreate Systemd Service Files

Recreate the following service files based on karakeep install script:

  • karakeep-web.service
cat <<EOF >/etc/systemd/system/karakeep-web.service
[Unit]
Description=karakeep Web
Wants=network.target karakeep-workers.service
After=network.target karakeep-workers.service

[Service]
ExecStart=pnpm start
WorkingDirectory=/opt/karakeep/apps/web
EnvironmentFile=/etc/karakeep/karakeep.env
Restart=always

[Install]
WantedBy=multi-user.target
EOF
  • karakeep-browser.service
cat <<EOF >/etc/systemd/system/karakeep-browser.service
[Unit]
Description=karakeep Headless Browser
After=network.target

[Service]
User=root
ExecStart=/usr/bin/chromium --headless --no-sandbox --disable-gpu --disable-dev-shm-usage --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 --hide-scrollbars
Restart=always

[Install]
WantedBy=multi-user.target
EOF
  • karakeep-workers.service
cat <<EOF >/etc/systemd/system/karakeep-workers.service
[Unit]
Description=karakeep Workers
Wants=network.target karakeep-browser.service meilisearch.service
After=network.target karakeep-browser.service meilisearch.service

[Service]
ExecStart=pnpm start:prod
WorkingDirectory=/opt/karakeep/apps/workers
EnvironmentFile=/etc/karakeep/karakeep.env
Restart=always
TimeoutStopSec=5

[Install]
WantedBy=multi-user.target
EOF

Ensure paths point to /opt/karakeep, /etc/karakeep, and karakeep.env.


6. Reload and Start Services

systemctl daemon-reload
systemctl start meilisearch
systemctl enable -q --now karakeep-browser karakeep-workers karakeep-web

🧪 Verify

Visit http://<CONTAINER-IP>:3000
Or check service logs:

journalctl -u karakeep-web -f

7. Update the "update"-Script

nano /usr/bin/update

Clear all (CTRL K) and add following line:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/karakeep.sh)"

CTRL X -> Y


🎉 Done!

You must be logged in to vote

Replies: 4 comments 8 replies

Comment options

everything ok, but when try update i've got the following error

cat: /opt/karakeep_version.txt: No such file or directory

[ERROR] in line 31: exit code 0: while executing command PREV_RELEASE=$(cat /opt/${APP}_version.txt)

You must be logged in to vote
4 replies
Comment options

MickLesk Apr 9, 2025
Maintainer Author

ah okay, thats maybe missing, can you do in /opt an ls -la? Then I'll add this in the instructions

Comment options

ah okay, thats maybe missing, can you do in /opt an ls -la? Then I'll add this in the instructions

Ive just do
mv /opt/hoarder_version.txt /opt/karakeep_version.txt and it worked, thinl was a missing step

Comment options

MickLesk Apr 9, 2025
Maintainer Author

added

Comment options

All good, thanks.
Juste on my side it was /opt/Hoarder_version.txt

Comment options

All pretty much worked as per instructions. Just a couple of small things:

  1. Running mv /opt/hoarder_version.txt /opt/karakeep_version.txt in step 3 did not work for me as my file name had a capital H so ran : mv /opt/Hoarder_version.txt /opt/karakeep_version.txt

  2. I believe the command in step 4 should be changed to mv /etc/karakeep/hoarder.env /etc/karakeep/karakeep.env as the hoarder folder has already been renamed in step 3.

You must be logged in to vote
0 replies
Comment options

Apr 09 12:01:41 karakeep pnpm[491]: ⨯ TypeError: Cannot open database because the directory does not exist Apr 09 12:01:41 karakeep pnpm[491]: at new Database (/opt/karakeep/node_modules/better-sqlite3/lib/database.js:65:9) Apr 09 12:01:41 karakeep pnpm[491]: at 66241 (/opt/karakeep/apps/web/.next/server/chunks/94.js:1:2262) Apr 09 12:01:41 karakeep pnpm[491]: at t (/opt/karakeep/apps/web/.next/server/webpack-runtime.js:1:143) Apr 09 12:01:41 karakeep pnpm[491]: at 40094 (/opt/karakeep/apps/web/.next/server/chunks/94.js:1:195) Apr 09 12:01:41 karakeep pnpm[491]: at t (/opt/karakeep/apps/web/.next/server/webpack-runtime.js:1:143) Apr 09 12:01:41 karakeep pnpm[491]: at 51254 (/opt/karakeep/apps/web/.next/server/app/page.js:1:2956) Apr 09 12:01:41 karakeep pnpm[491]: at t (/opt/karakeep/apps/web/.next/server/webpack-runtime.js:1:143) Apr 09 12:01:41 karakeep pnpm[491]: at 42961 (/opt/karakeep/apps/web/.next/server/app/page.js:1:1518) Apr 09 12:01:41 karakeep pnpm[491]: at t (/opt/karakeep/apps/web/.next/server/webpack-runtime.js:1:143) Apr 09 12:01:41 karakeep pnpm[491]: at r (/opt/karakeep/apps/web/.next/server/app/page.js:1:3884)
I'm having this error but all the directories exist.

You must be logged in to vote
4 replies
Comment options

MickLesk Apr 9, 2025
Maintainer Author

where you get the rror? its from pnpm?

Comment options

from the service logs, when trying to access http://ip:3000

Comment options

MickLesk Apr 9, 2025
Maintainer Author

can you run an update? maybe manipulate the version.txt file with an lower version

Comment options

Thanks, that fixed it.

Comment options

I have followed the published steps (including the amendments mentioned in the comments) and all appeared to run successfully. I then ran the update script and rebooted the container. When I try to open the application in the browser I get an error.

Application error: a server-side exception has occurred (see the server logs for more information).
Digest: 3709612042.

Looking at the service logs gives me the following output.

karakeep_error

Any thoughts?

I have a full backup of the container. If there was a way to get a simple list of my bookmarks extracted I would be happy to just build a new Karakeep instance from the new script and import them again.

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

AltStyle によって変換されたページ (->オリジナル) /