Add Karakeep and Collabora apps

Add Karakeep and Collabora as 1Panel v2 local apps with source evidence, strict adapter validation, and moelin/1panel:v2 smoke coverage.
This commit is contained in:
okxlin
2026-06-27 23:11:20 +08:00
committed by GitHub
parent d827bcc05e
commit eb8a6dfe8d
24 changed files with 591 additions and 0 deletions
+60
View File
@@ -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`,并同步修改反向代理和探活方式。
## 参考资料
- 官网: <https://www.collaboraonline.com/code/>
- 项目仓库: <https://github.com/CollaboraOnline/online>
- CODE Docker 文档: <https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html>
- 官方 Docker 镜像: <https://hub.docker.com/r/collabora/code>
+30
View File
@@ -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
+8
View File
@@ -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
+117
View File
@@ -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
View File
+22
View File
@@ -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
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
mkdir -p ./data
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
docker-compose down --volumes
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

+14
View File
@@ -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."
]
}
+69
View File
@@ -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 版本迁移需要参考故障排查说明;升级前请备份数据目录。
## 参考资料
- 官网: <https://karakeep.app/>
- 项目仓库: <https://github.com/karakeep-app/karakeep>
- Docker 安装文档: <https://github.com/karakeep-app/karakeep/blob/main/docs/docs/02-installation/01-docker.md>
- 官方 compose: <https://github.com/karakeep-app/karakeep/blob/main/docker/docker-compose.yml>
- 配置文档: <https://github.com/karakeep-app/karakeep/blob/main/docs/docs/03-configuration/01-environment-variables.md>
+30
View File
@@ -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
+9
View File
@@ -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
+140
View File
@@ -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
View File
+63
View File
@@ -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
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
mkdir -p ./data
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
docker-compose down --volumes
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

+13
View File
@@ -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."
]
}