diff --git a/apps/collabora/README.md b/apps/collabora/README.md
new file mode 100644
index 000000000..caf28e492
--- /dev/null
+++ b/apps/collabora/README.md
@@ -0,0 +1,60 @@
+# Collabora
+
+## 产品介绍
+Collabora Online Development Edition (CODE) 是基于 LibreOffice 技术的在线文档协作套件,可通过 WOPI 协议与 Nextcloud、ownCloud 等文件系统集成。
+
+## 主要功能
+- 在线编辑文本文档、表格和演示文稿
+- 通过 WOPI 与 Nextcloud 等应用集成
+- 提供管理控制台
+- 支持按需配置允许访问的 WOPI 主机和拼写词典
+
+## 访问说明
+安装后通过 `http://<服务器 IP>:9980` 访问,实际端口以安装表单中的 `PANEL_APP_PORT_HTTP` 为准。
+
+用于 Nextcloud 集成时,请在 Nextcloud Office/Collabora 设置中填写 Collabora 的外部访问地址,并在本应用的 `WOPI_ALIAS_GROUP` 中填写允许访问的 Nextcloud 域名。
+
+## Introduction
+Collabora Online Development Edition (CODE) is an online office suite based on LibreOffice technology for WOPI integrations such as Nextcloud and ownCloud.
+
+## Features
+- Edit text documents, spreadsheets, and presentations online
+- Integrate with Nextcloud and other WOPI applications
+- Built-in admin console
+- Configurable WOPI host allow list and dictionaries
+
+## 部署说明
+- 本应用使用官方 Docker 镜像 `collabora/code:latest` 部署。
+- 默认使用 `--o:ssl.enable=false --o:ssl.termination=true`,容器内提供 HTTP,由外部反向代理或 1Panel 网站层处理 HTTPS。
+- 应用分类:工具。
+- 支持架构:amd64、arm64。
+- 可选版本:`latest`。
+
+## 端口
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| PANEL_APP_PORT_HTTP | HTTP 访问端口 | 9980 | 是 |
+
+## 数据持久化
+本应用默认不挂载业务数据目录。升级或迁移前,请备份外部 WOPI 应用中的文档数据,并记录本应用安装参数。
+
+## 参数说明
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| ADMIN_USERNAME | 管理控制台用户名 | admin | 是 |
+| ADMIN_PASSWORD | 管理控制台密码 | 随机生成 | 是 |
+| WOPI_ALIAS_GROUP | 允许访问的 WOPI 主机,例如 `https://nextcloud.example.com:443` | 空 | 否 |
+| SERVER_NAME | 外部访问域名,反代场景可设置为 Collabora 域名 | 空 | 否 |
+| DICTIONARIES | 启用的拼写词典语言列表 | de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru | 是 |
+| EXTRA_PARAMS | 传给 coolwsd 的额外启动参数 | --o:ssl.enable=false --o:ssl.termination=true | 是 |
+
+## 使用说明
+- 如果只用于自测,`WOPI_ALIAS_GROUP` 可以留空;正式接入 Nextcloud 时建议填写明确的 Nextcloud HTTPS 域名。
+- 官方文档示例 `aliasgroup1=https://.*:443` 会允许所有 WOPI 主机连接,仅适合公开演示场景,不建议作为默认生产配置。
+- 如需容器内自签 HTTPS,可调整 `EXTRA_PARAMS`,并同步修改反向代理和探活方式。
+
+## 参考资料
+- 官网:
+- 项目仓库:
+- CODE Docker 文档:
+- 官方 Docker 镜像:
diff --git a/apps/collabora/data.yml b/apps/collabora/data.yml
new file mode 100644
index 000000000..b0f535aef
--- /dev/null
+++ b/apps/collabora/data.yml
@@ -0,0 +1,30 @@
+name: Collabora
+tags:
+ - Tool
+title: 可与 Nextcloud 等 WOPI 应用集成的在线文档套件
+description: 可与 Nextcloud 等 WOPI 应用集成的在线文档套件
+additionalProperties:
+ key: collabora
+ name: Collabora
+ tags:
+ - Tool
+ shortDescZh: 可与 Nextcloud 等 WOPI 应用集成的在线文档套件
+ shortDescEn: Online office suite for WOPI integrations such as Nextcloud
+ description:
+ en: Online office suite for WOPI integrations such as Nextcloud
+ zh: 可与 Nextcloud 等 WOPI 应用集成的在线文档套件
+ zh-Hant: 可與 Nextcloud 等 WOPI 應用整合的線上文件套件
+ ja: Nextcloud などの WOPI アプリと連携できるオンラインオフィススイート
+ ko: Nextcloud 같은 WOPI 앱과 연동되는 온라인 오피스 제품군
+ ru: Онлайн-офис для интеграций WOPI, включая Nextcloud
+ ms: Suite pejabat dalam talian untuk integrasi WOPI seperti Nextcloud
+ pt-br: Suite de escritorio online para integracoes WOPI, como Nextcloud
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://www.collaboraonline.com/code/
+ github: https://github.com/CollaboraOnline/online
+ document: https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html
+ architectures:
+ - amd64
+ - arm64
diff --git a/apps/collabora/latest/.env.sample b/apps/collabora/latest/.env.sample
new file mode 100644
index 000000000..24c4573a7
--- /dev/null
+++ b/apps/collabora/latest/.env.sample
@@ -0,0 +1,8 @@
+PANEL_APP_PORT_HTTP=9980
+ADMIN_USERNAME=admin
+ADMIN_PASSWORD=collabora_admin_password
+WOPI_ALIAS_GROUP=
+SERVER_NAME=
+DICTIONARIES=de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru
+EXTRA_PARAMS=--o:ssl.enable=false --o:ssl.termination=true
+CONTAINER_NAME=collabora
diff --git a/apps/collabora/latest/data.yml b/apps/collabora/latest/data.yml
new file mode 100644
index 000000000..2ec0f960e
--- /dev/null
+++ b/apps/collabora/latest/data.yml
@@ -0,0 +1,117 @@
+additionalProperties:
+ formFields:
+ - default: 9980
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: HTTP Port
+ labelZh: HTTP 端口
+ label:
+ en: HTTP Port
+ zh: HTTP 端口
+ zh-Hant: HTTP 埠
+ ja: HTTP ポート
+ ko: HTTP 포트
+ ru: HTTP-порт
+ ms: Port HTTP
+ pt-br: Porta HTTP
+ required: true
+ rule: paramPort
+ type: number
+ - default: admin
+ edit: true
+ envKey: ADMIN_USERNAME
+ labelEn: Admin Username
+ labelZh: 管理员用户名
+ label:
+ en: Admin Username
+ zh: 管理员用户名
+ zh-Hant: 管理員使用者名稱
+ ja: 管理者ユーザー名
+ ko: 관리자 사용자 이름
+ ru: Имя администратора
+ ms: Nama pengguna pentadbir
+ pt-br: Usuario administrador
+ required: true
+ type: text
+ - default: collabora_admin_password
+ edit: true
+ envKey: ADMIN_PASSWORD
+ labelEn: Admin Password
+ labelZh: 管理员密码
+ label:
+ en: Admin Password
+ zh: 管理员密码
+ zh-Hant: 管理員密碼
+ ja: 管理者パスワード
+ ko: 관리자 비밀번호
+ ru: Пароль администратора
+ ms: Kata laluan pentadbir
+ pt-br: Senha do administrador
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: ""
+ edit: true
+ envKey: WOPI_ALIAS_GROUP
+ labelEn: WOPI Alias Group
+ labelZh: WOPI 允许主机
+ label:
+ en: WOPI Alias Group
+ zh: WOPI 允许主机
+ zh-Hant: WOPI 允許主機
+ ja: WOPI 許可ホスト
+ ko: WOPI 허용 호스트
+ ru: Разрешенные хосты WOPI
+ ms: Hos WOPI yang dibenarkan
+ pt-br: Hosts WOPI permitidos
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: SERVER_NAME
+ labelEn: Server Name
+ labelZh: 服务访问域名
+ label:
+ en: Server Name
+ zh: 服务访问域名
+ zh-Hant: 服務存取網域
+ ja: サーバー名
+ ko: 서버 이름
+ ru: Имя сервера
+ ms: Nama pelayan
+ pt-br: Nome do servidor
+ required: false
+ type: text
+ - default: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru
+ edit: true
+ envKey: DICTIONARIES
+ labelEn: Dictionaries
+ labelZh: 拼写词典
+ label:
+ en: Dictionaries
+ zh: 拼写词典
+ zh-Hant: 拼字詞典
+ ja: 辞書
+ ko: 맞춤법 사전
+ ru: Словари
+ ms: Kamus ejaan
+ pt-br: Dicionarios
+ required: true
+ type: text
+ - default: "--o:ssl.enable=false --o:ssl.termination=true"
+ edit: true
+ envKey: EXTRA_PARAMS
+ labelEn: Extra Parameters
+ labelZh: 额外启动参数
+ label:
+ en: Extra Parameters
+ zh: 额外启动参数
+ zh-Hant: 額外啟動參數
+ ja: 追加起動パラメータ
+ ko: 추가 시작 매개변수
+ ru: Дополнительные параметры запуска
+ ms: Parameter tambahan
+ pt-br: Parametros extras
+ required: true
+ type: text
diff --git a/apps/collabora/latest/data/.gitkeep b/apps/collabora/latest/data/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/collabora/latest/docker-compose.yml b/apps/collabora/latest/docker-compose.yml
new file mode 100644
index 000000000..0de72db2b
--- /dev/null
+++ b/apps/collabora/latest/docker-compose.yml
@@ -0,0 +1,22 @@
+services:
+ collabora:
+ image: "collabora/code:latest"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:9980"
+ environment:
+ - username=${ADMIN_USERNAME}
+ - password=${ADMIN_PASSWORD}
+ - aliasgroup1=${WOPI_ALIAS_GROUP}
+ - server_name=${SERVER_NAME}
+ - dictionaries=${DICTIONARIES}
+ - extra_params=${EXTRA_PARAMS}
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/collabora/latest/scripts/.gitkeep b/apps/collabora/latest/scripts/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/collabora/latest/scripts/init.sh b/apps/collabora/latest/scripts/init.sh
new file mode 100755
index 000000000..2de7e6c39
--- /dev/null
+++ b/apps/collabora/latest/scripts/init.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+mkdir -p ./data
diff --git a/apps/collabora/latest/scripts/uninstall.sh b/apps/collabora/latest/scripts/uninstall.sh
new file mode 100755
index 000000000..ab8a8d674
--- /dev/null
+++ b/apps/collabora/latest/scripts/uninstall.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+docker-compose down --volumes
diff --git a/apps/collabora/latest/scripts/upgrade.sh b/apps/collabora/latest/scripts/upgrade.sh
new file mode 100755
index 000000000..9879df4c3
--- /dev/null
+++ b/apps/collabora/latest/scripts/upgrade.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+exit 0
diff --git a/apps/collabora/logo.png b/apps/collabora/logo.png
new file mode 100644
index 000000000..417cbac97
Binary files /dev/null and b/apps/collabora/logo.png differ
diff --git a/apps/collabora/source-evidence.json b/apps/collabora/source-evidence.json
new file mode 100644
index 000000000..04ab59a04
--- /dev/null
+++ b/apps/collabora/source-evidence.json
@@ -0,0 +1,14 @@
+{
+ "repository": "https://github.com/CollaboraOnline/online",
+ "dockerDocs": "https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html",
+ "composeFile": "https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html",
+ "imageRegistry": "https://hub.docker.com/r/collabora/code",
+ "logo": "https://sdk.collaboraonline.com/_static/collabora.svg",
+ "notes": [
+ "Issue request: https://github.com/okxlin/appstore/issues/1607",
+ "Official CODE Docker docs publish the collabora/code image and show port 9980.",
+ "Official docs describe aliasgroup1, username, password, dictionaries, server_name, and extra_params as Docker environment variables.",
+ "The default extra_params disables container-internal SSL for 1Panel HTTP probing and reverse-proxy TLS termination.",
+ "The public-demo aliasgroup1=https://.*:443 is not used as the default; users should set a concrete WOPI host for production."
+ ]
+}
diff --git a/apps/karakeep/README.md b/apps/karakeep/README.md
new file mode 100644
index 000000000..87680cb35
--- /dev/null
+++ b/apps/karakeep/README.md
@@ -0,0 +1,69 @@
+# Karakeep
+
+## 产品介绍
+Karakeep 是一个自托管的书签、笔记和网页归档应用,支持保存网页、图片、文本内容,并提供全文搜索、浏览器扩展和移动端分享入口。
+
+## 主要功能
+- 保存链接、笔记、图片和网页内容
+- 通过 Meilisearch 提供全文搜索
+- 使用 Chrome sidecar 抓取动态网页、截图和归档内容
+- 可选配置 OpenAI API Key 启用自动标签等 AI 功能
+
+## 访问说明
+安装后通过 `http://<服务器 IP>:13000` 访问,实际端口以安装表单中的 `PANEL_APP_PORT_HTTP` 为准。
+
+`NEXTAUTH_URL` 必须填写为用户实际访问 Karakeep 的完整地址,例如 `https://karakeep.example.com` 或 `http://<服务器 IP>:13000`。
+
+## Introduction
+Karakeep is a self-hosted app for bookmarks, notes, and web archives.
+
+## Features
+- Save links, notes, images, and web content
+- Full-text search powered by Meilisearch
+- Chrome sidecar for dynamic page crawling, screenshots, and archival
+- Optional OpenAI API key for AI-assisted tagging
+
+## 部署说明
+- 本应用使用官方 Docker 镜像 `ghcr.io/karakeep-app/karakeep:release` 部署。
+- 按官方 compose 搭配 `gcr.io/zenika-hub/alpine-chrome:124` 和 `getmeili/meilisearch:v1.41.0`。
+- 应用分类:工具。
+- 支持架构:amd64、arm64。
+- 可选版本:`latest`。
+
+## 端口
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| PANEL_APP_PORT_HTTP | HTTP 访问端口 | 13000 | 是 |
+
+## 数据持久化
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| APP_DATA_DIR | Karakeep 数据、SQLite 数据库、资产和 Meilisearch 索引目录 | ./data | 是 |
+
+持久化目录包含:
+- `${APP_DATA_DIR}/data:/data`
+- `${APP_DATA_DIR}/meilisearch:/meili_data`
+
+升级或迁移前,请先在 1Panel 中备份上述数据目录。
+
+## 参数说明
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| TZ | 容器时区 | Asia/Shanghai | 是 |
+| NEXTAUTH_URL | Karakeep 对外访问地址 | http://1.2.3.4:13000 | 是 |
+| NEXTAUTH_SECRET | NextAuth JWT 签名密钥 | 随机生成 | 是 |
+| MEILI_MASTER_KEY | Meilisearch 主密钥 | 随机生成 | 是 |
+| DISABLE_SIGNUPS | 是否禁止新用户注册 | false | 是 |
+| OPENAI_API_KEY | 可选 OpenAI API Key,用于自动标签等 AI 功能 | 空 | 否 |
+
+## 使用说明
+- 首次安装建议保持 `DISABLE_SIGNUPS=false`,创建管理员账号后再按需改为 `true`。
+- 不配置 `OPENAI_API_KEY` 时,Karakeep 仍可正常保存和搜索内容,只是 AI 自动标签等功能不可用。
+- 官方文档提示 Meilisearch 版本迁移需要参考故障排查说明;升级前请备份数据目录。
+
+## 参考资料
+- 官网:
+- 项目仓库:
+- Docker 安装文档:
+- 官方 compose:
+- 配置文档:
diff --git a/apps/karakeep/data.yml b/apps/karakeep/data.yml
new file mode 100644
index 000000000..12499b4fd
--- /dev/null
+++ b/apps/karakeep/data.yml
@@ -0,0 +1,30 @@
+name: Karakeep
+tags:
+ - Tool
+title: 自托管书签、笔记和网页归档工具
+description: 自托管书签、笔记和网页归档工具
+additionalProperties:
+ key: karakeep
+ name: Karakeep
+ tags:
+ - Tool
+ shortDescZh: 自托管书签、笔记和网页归档工具
+ shortDescEn: Self-hosted bookmark, note, and web archive app
+ description:
+ en: Self-hosted bookmark, note, and web archive app
+ zh: 自托管书签、笔记和网页归档工具
+ zh-Hant: 自託管書籤、筆記與網頁封存工具
+ ja: ブックマーク、メモ、Web アーカイブを保存するセルフホストアプリ
+ ko: 북마크, 메모, 웹 아카이브를 보관하는 자체 호스팅 앱
+ ru: Самостоятельно размещаемое приложение для закладок, заметок и веб-архива
+ ms: Aplikasi hos sendiri untuk penanda buku, nota dan arkib web
+ pt-br: Aplicativo auto-hospedado para favoritos, notas e arquivamento da web
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://karakeep.app/
+ github: https://github.com/karakeep-app/karakeep
+ document: https://docs.karakeep.app/installation/docker
+ architectures:
+ - amd64
+ - arm64
diff --git a/apps/karakeep/latest/.env.sample b/apps/karakeep/latest/.env.sample
new file mode 100644
index 000000000..b1b05481f
--- /dev/null
+++ b/apps/karakeep/latest/.env.sample
@@ -0,0 +1,9 @@
+PANEL_APP_PORT_HTTP=13000
+TZ=Asia/Shanghai
+APP_DATA_DIR=./data
+NEXTAUTH_URL=http://1.2.3.4:13000
+NEXTAUTH_SECRET=karakeep_nextauth_secret
+MEILI_MASTER_KEY=karakeep_meili_master_key
+DISABLE_SIGNUPS=false
+OPENAI_API_KEY=
+CONTAINER_NAME=karakeep
diff --git a/apps/karakeep/latest/data.yml b/apps/karakeep/latest/data.yml
new file mode 100644
index 000000000..ff06c5e64
--- /dev/null
+++ b/apps/karakeep/latest/data.yml
@@ -0,0 +1,140 @@
+additionalProperties:
+ formFields:
+ - default: 13000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: HTTP Port
+ labelZh: HTTP 端口
+ label:
+ en: HTTP Port
+ zh: HTTP 端口
+ zh-Hant: HTTP 埠
+ ja: HTTP ポート
+ ko: HTTP 포트
+ ru: HTTP-порт
+ ms: Port HTTP
+ pt-br: Porta HTTP
+ required: true
+ rule: paramPort
+ type: number
+ - default: Asia/Shanghai
+ edit: true
+ envKey: TZ
+ labelEn: Timezone
+ labelZh: 时区
+ label:
+ en: Timezone
+ zh: 时区
+ zh-Hant: 時區
+ ja: タイムゾーン
+ ko: 시간대
+ ru: Часовой пояс
+ ms: Zon waktu
+ pt-br: Fuso horario
+ required: true
+ type: text
+ - default: ./data
+ edit: true
+ envKey: APP_DATA_DIR
+ labelEn: Data Directory
+ labelZh: 数据目录
+ label:
+ en: Data Directory
+ zh: 数据目录
+ zh-Hant: 資料目錄
+ ja: データディレクトリ
+ ko: 데이터 디렉터리
+ ru: Каталог данных
+ ms: Direktori data
+ pt-br: Diretorio de dados
+ required: true
+ type: text
+ - default: http://1.2.3.4:13000
+ edit: true
+ envKey: NEXTAUTH_URL
+ labelEn: Public URL
+ labelZh: 公开访问地址
+ label:
+ en: Public URL
+ zh: 公开访问地址
+ zh-Hant: 公開存取位址
+ ja: 公開アクセス URL
+ ko: 공개 접속 주소
+ ru: Публичный URL
+ ms: URL awam
+ pt-br: URL publico
+ required: true
+ rule: paramExtUrl
+ type: text
+ - default: karakeep_nextauth_secret
+ edit: true
+ envKey: NEXTAUTH_SECRET
+ labelEn: NextAuth Secret
+ labelZh: NextAuth 密钥
+ label:
+ en: NextAuth Secret
+ zh: NextAuth 密钥
+ zh-Hant: NextAuth 金鑰
+ ja: NextAuth シークレット
+ ko: NextAuth 비밀키
+ ru: Секрет NextAuth
+ ms: Rahsia NextAuth
+ pt-br: Segredo do NextAuth
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: karakeep_meili_master_key
+ edit: true
+ envKey: MEILI_MASTER_KEY
+ labelEn: Meilisearch Master Key
+ labelZh: Meilisearch 主密钥
+ label:
+ en: Meilisearch Master Key
+ zh: Meilisearch 主密钥
+ zh-Hant: Meilisearch 主金鑰
+ ja: Meilisearch マスターキー
+ ko: Meilisearch 마스터 키
+ ru: Главный ключ Meilisearch
+ ms: Kunci induk Meilisearch
+ pt-br: Chave mestra do Meilisearch
+ random: true
+ required: true
+ type: password
+ - default: "false"
+ edit: true
+ envKey: DISABLE_SIGNUPS
+ labelEn: Disable New Signups
+ labelZh: 禁止新用户注册
+ label:
+ en: Disable New Signups
+ zh: 禁止新用户注册
+ zh-Hant: 停用新使用者註冊
+ ja: 新規登録を無効化
+ ko: 신규 가입 비활성화
+ ru: Отключить новые регистрации
+ ms: Lumpuhkan pendaftaran baharu
+ pt-br: Desativar novos cadastros
+ required: true
+ type: select
+ values:
+ - label: "false"
+ value: "false"
+ - label: "true"
+ value: "true"
+ - default: ""
+ edit: true
+ envKey: OPENAI_API_KEY
+ labelEn: OpenAI API Key
+ labelZh: OpenAI API 密钥
+ label:
+ en: OpenAI API Key
+ zh: OpenAI API 密钥
+ zh-Hant: OpenAI API 金鑰
+ ja: OpenAI API キー
+ ko: OpenAI API 키
+ ru: Ключ OpenAI API
+ ms: Kunci API OpenAI
+ pt-br: Chave de API OpenAI
+ required: false
+ type: password
diff --git a/apps/karakeep/latest/data/.gitkeep b/apps/karakeep/latest/data/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/karakeep/latest/docker-compose.yml b/apps/karakeep/latest/docker-compose.yml
new file mode 100644
index 000000000..95d455d04
--- /dev/null
+++ b/apps/karakeep/latest/docker-compose.yml
@@ -0,0 +1,63 @@
+services:
+ karakeep:
+ image: "ghcr.io/karakeep-app/karakeep:release"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ depends_on:
+ - karakeep-chrome
+ - karakeep-meilisearch
+ networks:
+ - 1panel-network
+ - karakeep-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:3000"
+ environment:
+ - TZ=${TZ}
+ - DATA_DIR=/data
+ - NEXTAUTH_URL=${NEXTAUTH_URL}
+ - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
+ - MEILI_ADDR=http://karakeep-meilisearch:7700
+ - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
+ - BROWSER_WEB_URL=http://karakeep-chrome:9222
+ - DISABLE_SIGNUPS=${DISABLE_SIGNUPS}
+ - OPENAI_API_KEY=${OPENAI_API_KEY}
+ volumes:
+ - "${APP_DATA_DIR}/data:/data"
+ labels:
+ createdBy: "Apps"
+
+ karakeep-chrome:
+ image: "gcr.io/zenika-hub/alpine-chrome:124"
+ container_name: ${CONTAINER_NAME}-chrome
+ restart: always
+ networks:
+ - karakeep-network
+ command:
+ - --no-sandbox
+ - --disable-gpu
+ - --disable-dev-shm-usage
+ - --remote-debugging-address=0.0.0.0
+ - --remote-debugging-port=9222
+ - --hide-scrollbars
+ labels:
+ createdBy: "Apps"
+
+ karakeep-meilisearch:
+ image: "getmeili/meilisearch:v1.41.0"
+ container_name: ${CONTAINER_NAME}-meilisearch
+ restart: always
+ networks:
+ - karakeep-network
+ environment:
+ - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
+ - MEILI_NO_ANALYTICS=true
+ volumes:
+ - "${APP_DATA_DIR}/meilisearch:/meili_data"
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
+ karakeep-network:
+ driver: bridge
diff --git a/apps/karakeep/latest/scripts/.gitkeep b/apps/karakeep/latest/scripts/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/karakeep/latest/scripts/init.sh b/apps/karakeep/latest/scripts/init.sh
new file mode 100755
index 000000000..2de7e6c39
--- /dev/null
+++ b/apps/karakeep/latest/scripts/init.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+mkdir -p ./data
diff --git a/apps/karakeep/latest/scripts/uninstall.sh b/apps/karakeep/latest/scripts/uninstall.sh
new file mode 100755
index 000000000..ab8a8d674
--- /dev/null
+++ b/apps/karakeep/latest/scripts/uninstall.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+docker-compose down --volumes
diff --git a/apps/karakeep/latest/scripts/upgrade.sh b/apps/karakeep/latest/scripts/upgrade.sh
new file mode 100755
index 000000000..9879df4c3
--- /dev/null
+++ b/apps/karakeep/latest/scripts/upgrade.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+exit 0
diff --git a/apps/karakeep/logo.png b/apps/karakeep/logo.png
new file mode 100644
index 000000000..a6e80bdb6
Binary files /dev/null and b/apps/karakeep/logo.png differ
diff --git a/apps/karakeep/source-evidence.json b/apps/karakeep/source-evidence.json
new file mode 100644
index 000000000..f9c3c5a86
--- /dev/null
+++ b/apps/karakeep/source-evidence.json
@@ -0,0 +1,13 @@
+{
+ "repository": "https://github.com/karakeep-app/karakeep",
+ "dockerDocs": "https://github.com/karakeep-app/karakeep/blob/main/docs/docs/02-installation/01-docker.md",
+ "composeFile": "https://github.com/karakeep-app/karakeep/blob/main/docker/docker-compose.yml",
+ "configDocs": "https://github.com/karakeep-app/karakeep/blob/main/docs/docs/03-configuration/01-environment-variables.md",
+ "notes": [
+ "Issue request: https://github.com/okxlin/appstore/issues/2709",
+ "Upstream Docker docs require KARAKEEP_VERSION=release, NEXTAUTH_SECRET, MEILI_MASTER_KEY, and NEXTAUTH_URL.",
+ "Upstream compose defines web, chrome, and meilisearch services; this adaptation keeps the same topology.",
+ "Upstream named volumes are mapped under APP_DATA_DIR so 1Panel users can back up data and Meilisearch indexes from one data directory.",
+ "OpenAI configuration is optional; Karakeep runs without it and disables AI tagging."
+ ]
+}