-
-
Notifications
You must be signed in to change notification settings - Fork 2k
-
🚀 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-*.service3. 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!
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 3 -
❤️ 1 -
🚀 1
Replies: 4 comments 8 replies
-
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)
Beta Was this translation helpful? Give feedback.
All reactions
-
ah okay, thats maybe missing, can you do in /opt an ls -la? Then I'll add this in the instructions
Beta Was this translation helpful? Give feedback.
All reactions
-
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
Beta Was this translation helpful? Give feedback.
All reactions
-
added
Beta Was this translation helpful? Give feedback.
All reactions
-
All good, thanks.
Juste on my side it was /opt/Hoarder_version.txt
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
All pretty much worked as per instructions. Just a couple of small things:
-
Running
mv /opt/hoarder_version.txt /opt/karakeep_version.txtin 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 -
I believe the command in step 4 should be changed to
mv /etc/karakeep/hoarder.env /etc/karakeep/karakeep.envas the hoarder folder has already been renamed in step 3.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
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.
Beta Was this translation helpful? Give feedback.
All reactions
-
where you get the rror? its from pnpm?
Beta Was this translation helpful? Give feedback.
All reactions
-
from the service logs, when trying to access http://ip:3000
Beta Was this translation helpful? Give feedback.
All reactions
-
can you run an update? maybe manipulate the version.txt file with an lower version
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
Thanks, that fixed it.
Beta Was this translation helpful? Give feedback.
All reactions
-
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.
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.
Beta Was this translation helpful? Give feedback.