Skip to content

Commit d28ff5f

Browse files
committed
release(docs): release the 0.32 docs
1 parent b9b252e commit d28ff5f

95 files changed

Lines changed: 6103 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
slug: /
3+
---
4+
5+
# Introduction
6+
7+
Karakeep (previously Hoarder) is an open source "Bookmark Everything" app that uses AI for automatically tagging the content you throw at it. The app is built with self-hosting as a first class citizen.
8+
9+
![Screenshot](https://raw.githubusercontent.com/karakeep-app/karakeep/main/screenshots/homepage.png)
10+
11+
12+
## Features
13+
14+
- 🔗 Bookmark links, take simple notes and store images and pdfs.
15+
- ⮇ïļ Automatic fetching for link titles, descriptions and images.
16+
- 📋 Sort your bookmarks into lists.
17+
- ðŸ‘Ĩ Collaborate with others on the same list.
18+
- 🔎 Full text search of all the content stored.
19+
- âœĻ AI-based (aka chatgpt) automatic tagging and summarization. With supports for local models using ollama!
20+
- ðŸĪ– Rule-based engine for customized management.
21+
- 🎆 OCR for extracting text from images.
22+
- 🔖 [Chrome plugin](https://chromewebstore.google.com/detail/karakeep/kgcjekpmcjjogibpjebkhaanilehneje) and [Firefox addon](https://addons.mozilla.org/en-US/firefox/addon/karakeep/) for quick bookmarking.
23+
- ðŸ“ą An [iOS app](https://apps.apple.com/us/app/karakeep-app/id6479258022), and an [Android app](https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile&pcampaignid=web_share).
24+
- 📰 Auto hoarding from RSS feeds.
25+
- 🔌 REST API and multiple clients.
26+
- 🌐 Multi-language support.
27+
- 🖍ïļ Mark and store highlights from your hoarded content.
28+
- 🗄ïļ Full page archival (using [monolith](https://github.com/Y2Z/monolith)) to protect against link rot.
29+
- â–ķïļ Auto video archiving using [yt-dlp](https://github.com/yt-dlp/yt-dlp).
30+
- ☑ïļ Bulk actions support.
31+
- 🔐 SSO support.
32+
- 🌙 Dark mode support.
33+
- ðŸ’ū Self-hosting first.
34+
- ⮇ïļ Bookmark importers from Chrome, Pocket, Linkwarden, Omnivore, Tab Session Manager.
35+
- 🔄 Automatic sync with browser bookmarks via [floccus](https://floccus.org/).
36+
- [Planned] Offline reading on mobile, semantic search across bookmarks, ...
37+
38+
**⚠ïļ This app is under heavy development.**
39+
40+
41+
## Demo
42+
43+
You can access the demo at [https://try.karakeep.app](https://try.karakeep.app). Login with the following creds:
44+
45+
```
46+
email: demo@karakeep.app
47+
password: demodemo
48+
```
49+
50+
The demo is seeded with some content, but it's in read-only mode to prevent abuse.
51+
52+
## About the name
53+
54+
The name Karakeep is inspired by the Arabic word "ŲƒØąØ§ŲƒŲŠØĻ" (karakeeb), a colloquial term commonly used to refer to miscellaneous clutter, odds and ends, or items that may seem disorganized but often hold personal value or hidden usefulness. It evokes the image of a messy drawer or forgotten box, full of stuff you can't quite throw away—because somehow, it matters (or more likely, because you're a hoarder!).
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Screenshots
2+
3+
## Homepage
4+
5+
![Homepage](/img/screenshots/homepage.png)
6+
7+
## Homepage (Dark Mode)
8+
9+
![Homepage](/img/screenshots/homepage-dark.png)
10+
11+
## Tags
12+
13+
![All Tags](/img/screenshots/all-tags.png)
14+
15+
## Lists
16+
17+
![All Lists](/img/screenshots/all-lists.png)
18+
19+
## Bookmark Preview
20+
21+
![Bookmark Preview](/img/screenshots/bookmark-preview.png)
22+
23+
## Settings
24+
25+
![Settings](/img/screenshots/settings.png)
26+
27+
28+
## Sharing
29+
30+
<img src="/img/screenshots/share-sheet.png" width="400px" />
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"label": "Getting Started",
3+
"position": 1
4+
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Docker
2+
3+
### Requirements
4+
5+
- Docker
6+
- Docker Compose
7+
8+
### 1. Create a new directory
9+
10+
Create a new directory to host the compose file and env variables.
11+
12+
This is where you’ll place the `docker-compose.yml` file from the next step and the environment variables.
13+
14+
For example you could make a new directory called "karakeep-app" with the following command:
15+
```
16+
mkdir karakeep-app
17+
```
18+
19+
20+
### 2. Download the compose file
21+
22+
Download the docker compose file provided [here](https://github.com/karakeep-app/karakeep/blob/main/docker/docker-compose.yml) directly into your new directory.
23+
24+
```
25+
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml
26+
```
27+
28+
### 3. Populate the environment variables
29+
30+
To configure the app, create a `.env` file in the directory and add this minimal env file:
31+
32+
```
33+
KARAKEEP_VERSION=release
34+
NEXTAUTH_SECRET=super_random_string
35+
MEILI_MASTER_KEY=another_random_string
36+
NEXTAUTH_URL=http://localhost:3000
37+
```
38+
39+
You **should** change the random strings. You can use `openssl rand -base64 36` in a separate terminal window to generate the random strings. You should also change the `NEXTAUTH_URL` variable to point to your server address.
40+
41+
Using `KARAKEEP_VERSION=release` will pull the latest stable version. You might want to pin the version instead to control the upgrades (e.g. `KARAKEEP_VERSION=0.10.0`). Check the latest versions [here](https://github.com/karakeep-app/karakeep/pkgs/container/karakeep).
42+
43+
Persistent storage and the wiring between the different services is already taken care of in the docker compose file.
44+
45+
Keep in mind that every time you change the `.env` file, you'll need to re-run `docker compose up`.
46+
47+
If you want more config params, check the config documentation [here](../03-configuration/01-environment-variables.md).
48+
49+
### 4. Setup OpenAI
50+
51+
To enable automatic tagging, you'll need to configure OpenAI. This is optional though but highly recommended.
52+
53+
- Follow [OpenAI's help](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) to get an API key.
54+
- Add the OpenAI API key to the env file:
55+
56+
```
57+
OPENAI_API_KEY=<key>
58+
```
59+
60+
Learn more about the costs of using openai [here](../06-administration/03-openai.md).
61+
62+
If you want to use a different AI provider (e.g. Ollama for local inference), check out the [different AI providers](../03-configuration/02-different-ai-providers.md) guide.
63+
64+
### 5. Start the service
65+
66+
Start the service by running:
67+
68+
```
69+
docker compose up -d
70+
```
71+
72+
Then visit `http://localhost:3000` and you should be greeted with the Sign In page.
73+
74+
### [Optional] 6. Enable optional features
75+
76+
Check the [configuration docs](../03-configuration/01-environment-variables.md) for extra features to enable such as full page archival, full page screenshots, inference languages, etc.
77+
78+
### [Optional] 7. Setup quick sharing extensions
79+
80+
Go to the [quick sharing page](../04-using-karakeep/quick-sharing.md) to install the mobile apps and the browser extensions. Those will help you hoard things faster!
81+
82+
## Updating
83+
84+
Updating Karakeep will depend on what you used for the `KARAKEEP_VERSION` env variable.
85+
86+
- If you pinned the app to a specific version, bump the version and re-run `docker compose up -d`. This should pull the new version for you.
87+
- If you used `KARAKEEP_VERSION=release`, you'll need to force docker to pull the latest version by running `docker compose up --pull always -d`.
88+
89+
Note that if you want to upgrade/migrate `Meilisearch` versions, refer to the [troubleshooting](../06-administration/05-troubleshooting.md) page.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Unraid
2+
3+
## Docker Compose Manager Plugin (Recommended)
4+
5+
You can use [Docker Compose Manager](https://forums.unraid.net/topic/114415-plugin-docker-compose-manager/) plugin to deploy Karakeep using the official docker compose file provided [here](https://github.com/karakeep-app/karakeep/blob/main/docker/docker-compose.yml). After creating the stack, you'll need to setup some env variables similar to that from the docker compose installation docs [here](/installation/docker#3-populate-the-environment-variables).
6+
7+
## Community Apps
8+
9+
:::info
10+
The community application template is maintained by the community.
11+
:::
12+
13+
Karakeep can be installed on Unraid using the community application plugins. Karakeep is a multi-container service, and because unraid doesn't natively support that, you'll have to install the different pieces as separate applications and wire them manually together.
14+
15+
Here's a high level overview of the services you'll need:
16+
17+
- **Karakeep** ([Support post](https://forums.unraid.net/topic/165108-support-collectathon-karakeep/)): Karakeep's main web app.
18+
- **Browserless** ([Support post](https://forums.unraid.net/topic/130163-support-template-masterwishxbrowserless/)): The chrome headless service used for fetching the content. Karakeep's official docker compose doesn't use browserless, but it's currently the only headless chrome service available on unraid, so you'll have to use it.
19+
- **MeiliSearch** ([Support post](https://forums.unraid.net/topic/164847-support-collectathon-meilisearch/)): The search engine used by Karakeep. It's optional but highly recommended. If you don't have it set up, search will be disabled.
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# Arch Linux
2+
3+
## Installation
4+
5+
> [Karakeep on AUR](https://aur.archlinux.org/packages/karakeep) is not maintained by the karakeep official.
6+
7+
1. Install karakeep
8+
9+
```shell
10+
paru -S karakeep
11+
```
12+
13+
2. (**Optional**) Install optional dependencies
14+
15+
```shell
16+
# karakeep-cli: karakeep cli tool
17+
paru -S karakeep-cli
18+
19+
# ollama: for automatic tagging
20+
sudo pacman -S ollama
21+
22+
# yt-dlp: for download video
23+
sudo pacman -S yt-dlp
24+
```
25+
26+
You can use Open-AI instead of `ollama`. If you use `ollama`, you need to download the ollama model. Please refer to: [https://ollama.com/library](https://ollama.com/library).
27+
28+
3. Set up
29+
30+
Environment variables can be set in `/etc/karakeep/karakeep.env` according to [configuration page](../03-configuration/01-environment-variables.md). **The environment variables that are not specified in `/etc/karakeep/karakeep.env` need to be added by yourself.**
31+
32+
4. Enable service
33+
34+
```shell
35+
sudo systemctl enable --now karakeep.target
36+
```
37+
38+
Then visit `http://localhost:3000` and you should be greated with the sign in page.
39+
40+
## Services and Ports
41+
42+
`karakeep.target` include 3 services: `karakeep-web.service`, `karakeep-works.service`, `karakeep-browser.service`.
43+
44+
- `karakeep-web.service`: Provide karakeep webui service, uses `3000` port by default.
45+
46+
- `karakeep-workers.service`: Provide karakeep workers service, no port.
47+
48+
- `karakeep-browser.service`: Provide browser headless service, uses `9222` port by default.
49+
50+
Now `karakeep` depends on `meilisearch`, and `karakeep-workers.service` wants `meilisearch.service`, starting `karakeep.target` will start `meilisearch.service` at the same time.
51+
52+
## How to Migrate from Hoarder to Karakeep
53+
54+
The PKGBUILD has been fully updated to replace all references to `hoarder` with `karakeep`. If you want to preserve your existing `hoarder` data during the upgrade, please follow the steps below:
55+
56+
**1. Stop the old services**
57+
58+
```shell
59+
sudo systemctl stop hoarder-web.service hoarder-worker.service hoarder-browser.service
60+
sudo systemctl disable --now hoarder.target
61+
```
62+
63+
**2. Uninstall Hoarder**
64+
After uninstalling, you can manually remove the old `hoarder` user and group if needed.
65+
```shell
66+
paru -R hoarder
67+
```
68+
69+
**3. Rename the old data directory**
70+
```shell
71+
sudo mv /var/lib/hoarder /var/lib/karakeep
72+
```
73+
74+
**4. Install Karakeep**
75+
```shell
76+
paru -S karakeep
77+
```
78+
79+
**5. Fix ownership of the data directory**
80+
```shell
81+
sudo chown -R karakeep:karakeep /var/lib/karakeep
82+
```
83+
84+
**6. Set Karakeep**
85+
Edit `/etc/karakeep/karakeep.env` according to [configuration page](../03-configuration/01-environment-variables.md). **The environment variables that are not specified in `/etc/karakeep/karakeep.env` need to be added by yourself.**
86+
87+
Or you can copy old hoarder env file to karakeep:
88+
```shell
89+
sudo cp -f /etc/hoarder/hoarder.env /etc/karakeep/karakeep.env
90+
```
91+
92+
**7. Start Karakeep**
93+
```shell
94+
sudo systemctl enable --now karakeep.target
95+
```
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Kubernetes
2+
3+
### Requirements
4+
5+
- A kubernetes cluster
6+
- kubectl
7+
- kustomize
8+
9+
### 1. Get the deployment manifests
10+
11+
You can clone the repository and copy the `/kubernetes` directory into another directory of your choice.
12+
13+
### 2. Populate the environment variables and secrets
14+
15+
To configure the app, copy the `.env_sample` to `.env` and change to your specific needs.
16+
17+
You should also change the `NEXTAUTH_URL` variable to point to your server address.
18+
19+
Using `KARAKEEP_VERSION=release` will pull the latest stable version. You might want to pin the version instead to control the upgrades (e.g. `KARAKEEP_VERSION=0.10.0`). Check the latest versions [here](https://github.com/karakeep-app/karakeep/pkgs/container/karakeep).
20+
21+
To see all available configuration options check the [documentation](../03-configuration/01-environment-variables.md).
22+
23+
To configure the neccessary secrets for the application copy the `.secrets_sample` file to `.secrets` and change the sample secrets to your generated secrets.
24+
25+
> Note: You **should** change the random strings. You can use `openssl rand -base64 36` to generate the random strings.
26+
27+
### 3. Setup OpenAI
28+
29+
To enable automatic tagging, you'll need to configure OpenAI. This is optional though but highly recommended.
30+
31+
- Follow [OpenAI's help](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) to get an API key.
32+
- Add the OpenAI API key to the `.env` file:
33+
34+
```
35+
OPENAI_API_KEY=<key>
36+
```
37+
38+
Learn more about the costs of using openai [here](../06-administration/03-openai.md).
39+
40+
If you want to use a different AI provider (e.g. Ollama for local inference), check out the [different AI providers](../03-configuration/02-different-ai-providers.md) guide.
41+
42+
### 4. Deploy the service
43+
44+
Deploy the service by running:
45+
46+
```
47+
make deploy
48+
```
49+
50+
### 5. Access the service
51+
52+
#### via LoadBalancer IP
53+
54+
By default, these manifests expose the application as a LoadBalancer Service. You can run `kubectl get services` to identify the IP of the loadbalancer for your service.
55+
56+
Then visit `http://<loadbalancer-ip>:3000` and you should be greated with the Sign In page.
57+
58+
> Note: Depending on your setup you might want to expose the service via an Ingress, or have a different means to access it.
59+
60+
#### Via Ingress
61+
62+
If you want to use an ingress, you can customize the sample ingress in the kubernetes folder and change the host to the DNS name of your choice.
63+
64+
After that you have to configure the web service to the type ClusterIP so it is only reachable via the ingress.
65+
66+
If you have already deployed the service you can patch the web service to the type ClusterIP with the following command:
67+
68+
` kubectl -n karakeep patch service web -p '{"spec":{"type":"ClusterIP"}}' `
69+
70+
Afterwards you can apply the ingress and access the service via your chosen URL.
71+
72+
#### Setting up HTTPS access to the Service
73+
74+
To access karakeep securely you can configure the ingress to use a preconfigured TLS certificate. This requires that you already have the needed files, namely your .crt and .key file, on hand.
75+
76+
After you have deployed the karakeep manifests you can deploy your certificate for karakeep in the `karakeep` namespace with this example command. You can name the secret however you want. But be aware that the secret name in the ingress definition has to match the secret name.
77+
78+
` $ kubectl --namespace karakeep create secret tls karakeep-web-tls --cert=/path/to/crt --key=/path/to/key `
79+
80+
If the secret is successfully created you can now configure the Ingress to use TLS via this changes to the spec:
81+
82+
```` yaml
83+
spec:
84+
tls:
85+
- hosts:
86+
- karakeep.example.com
87+
secretName: karakeep-web-tls
88+
````
89+
90+
> Note: Be aware that the hosts have to match between the tls spec and the HTTP spec.
91+
92+
### [Optional] 6. Setup quick sharing extensions
93+
94+
Go to the [quick sharing page](../04-using-karakeep/quick-sharing.md) to install the mobile apps and the browser extensions. Those will help you hoard things faster!
95+
96+
## Updating
97+
98+
Edit the `KARAKEEP_VERSION` variable in the `kustomization.yaml` file and run `make clean deploy`.
99+
100+
If you have chosen `release` as the image tag you can also destroy the web pod, since the deployment has an ImagePullPolicy set to always the pod always pulls the image from the registry, this way we can ensure that the newest release image is pulled.

0 commit comments

Comments
 (0)