diff --git a/apps/pdfding/1.11.0/.env.sample b/apps/pdfding/1.11.0/.env.sample new file mode 100644 index 000000000..7ebc054bb --- /dev/null +++ b/apps/pdfding/1.11.0/.env.sample @@ -0,0 +1,9 @@ +CONTAINER_NAME=pdfding +PANEL_APP_PORT_HTTP=8000 +PDFDING_HOST_NAME=* +PDFDING_SECRET_KEY=replace-with-a-random-application-secret +PDFDING_CSRF_COOKIE_SECURE=FALSE +PDFDING_SESSION_COOKIE_SECURE=FALSE +PDFDING_DISABLE_USER_SIGNUP=FALSE +PDFDING_ACCOUNT_PROTOCOL=http +TZ=Asia/Shanghai diff --git a/apps/pdfding/1.11.0/data.yml b/apps/pdfding/1.11.0/data.yml new file mode 100644 index 000000000..bf8878942 --- /dev/null +++ b/apps/pdfding/1.11.0/data.yml @@ -0,0 +1,153 @@ +additionalProperties: + formFields: + - default: 8000 + 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: "*" + edit: true + envKey: PDFDING_HOST_NAME + labelEn: Allowed Hosts + labelZh: 允许的主机 + label: + en: Allowed Hosts + zh: 允许的主机 + zh-Hant: 允許的主機 + ja: 許可するホスト + ko: 허용된 호스트 + ru: Разрешенные хосты + ms: Hos yang dibenarkan + pt-br: Hosts permitidos + required: true + type: text + - default: "" + edit: true + envKey: PDFDING_SECRET_KEY + labelEn: Application Secret + labelZh: 应用密钥 + label: + en: Application Secret + zh: 应用密钥 + zh-Hant: 應用程式密鑰 + ja: アプリケーションシークレット + ko: 애플리케이션 비밀 키 + ru: Секрет приложения + ms: Rahsia aplikasi + pt-br: Segredo do aplicativo + random: true + required: true + rule: paramComplexity + type: password + - default: "FALSE" + edit: true + envKey: PDFDING_CSRF_COOKIE_SECURE + labelEn: Secure CSRF Cookie + labelZh: 安全 CSRF Cookie + label: + en: Secure CSRF Cookie + zh: 安全 CSRF Cookie + zh-Hant: 安全 CSRF Cookie + ja: セキュア CSRF Cookie + ko: 보안 CSRF Cookie + ru: Защищенный CSRF Cookie + ms: Cookie CSRF selamat + pt-br: Cookie CSRF seguro + required: true + type: select + values: + - label: "Disabled" + value: "FALSE" + - label: "Enabled" + value: "TRUE" + - default: "FALSE" + edit: true + envKey: PDFDING_SESSION_COOKIE_SECURE + labelEn: Secure Session Cookie + labelZh: 安全会话 Cookie + label: + en: Secure Session Cookie + zh: 安全会话 Cookie + zh-Hant: 安全工作階段 Cookie + ja: セキュアセッション Cookie + ko: 보안 세션 Cookie + ru: Защищенный Cookie сеанса + ms: Cookie sesi selamat + pt-br: Cookie de sessão seguro + required: true + type: select + values: + - label: "Disabled" + value: "FALSE" + - label: "Enabled" + value: "TRUE" + - default: "FALSE" + edit: true + envKey: PDFDING_DISABLE_USER_SIGNUP + labelEn: Disable User Signup + labelZh: 禁止用户注册 + label: + en: Disable User Signup + zh: 禁止用户注册 + zh-Hant: 禁止使用者註冊 + ja: ユーザー登録を無効化 + ko: 사용자 가입 비활성화 + ru: Отключить регистрацию пользователей + ms: Lumpuhkan pendaftaran pengguna + pt-br: Desativar cadastro de usuários + required: true + type: select + values: + - label: "No" + value: "FALSE" + - label: "Yes" + value: "TRUE" + - default: http + edit: true + envKey: PDFDING_ACCOUNT_PROTOCOL + labelEn: Public URL Scheme + labelZh: 公共 URL 协议 + label: + en: Public URL Scheme + zh: 公共 URL 协议 + zh-Hant: 公開 URL 通訊協定 + ja: 公開 URL スキーム + ko: 공개 URL 스킴 + ru: Схема публичного URL + ms: Skema URL awam + pt-br: Esquema da URL pública + required: true + type: select + values: + - label: HTTP + value: http + - label: HTTPS + value: https + - default: Asia/Shanghai + edit: true + envKey: TZ + labelEn: Time Zone + labelZh: 时区 + label: + en: Time Zone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon waktu + pt-br: Fuso horário + required: true + type: text diff --git a/apps/pdfding/1.11.0/docker-compose.yml b/apps/pdfding/1.11.0/docker-compose.yml new file mode 100644 index 000000000..0390f00c3 --- /dev/null +++ b/apps/pdfding/1.11.0/docker-compose.yml @@ -0,0 +1,32 @@ +services: + pdfding: + image: "mrmn/pdfding:v1.11.0" + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8000" + volumes: + - "./data/db:/home/nonroot/pdfding/db" + - "./data/media:/home/nonroot/pdfding/media" + environment: + - TZ=${TZ} + - SECRET_KEY=${PDFDING_SECRET_KEY} + - HOST_NAME=${PDFDING_HOST_NAME} + - CSRF_COOKIE_SECURE=${PDFDING_CSRF_COOKIE_SECURE} + - SESSION_COOKIE_SECURE=${PDFDING_SESSION_COOKIE_SECURE} + - DISABLE_USER_SIGNUP=${PDFDING_DISABLE_USER_SIGNUP} + - ACCOUNT_DEFAULT_HTTP_PROTOCOL=${PDFDING_ACCOUNT_PROTOCOL} + healthcheck: + test: ["CMD-SHELL", "wget -q -O - http://127.0.0.1:8000/healthz >/dev/null || exit 1"] + interval: 10s + timeout: 5s + start_period: 30s + retries: 12 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/pdfding/1.11.0/scripts/init.sh b/apps/pdfding/1.11.0/scripts/init.sh new file mode 100755 index 000000000..bd556b2af --- /dev/null +++ b/apps/pdfding/1.11.0/scripts/init.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +umask 027 +mkdir -p -- "$ROOT_DIR/data/db" "$ROOT_DIR/data/media" +chown 1000:1000 -- "$ROOT_DIR/data/db" "$ROOT_DIR/data/media" 2>/dev/null || true +chmod 0750 -- "$ROOT_DIR/data/db" "$ROOT_DIR/data/media" diff --git a/apps/pdfding/1.11.0/scripts/uninstall.sh b/apps/pdfding/1.11.0/scripts/uninstall.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/pdfding/1.11.0/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/pdfding/1.11.0/scripts/upgrade.sh b/apps/pdfding/1.11.0/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/pdfding/1.11.0/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/pdfding/README.md b/apps/pdfding/README.md new file mode 100644 index 000000000..d1e99a932 --- /dev/null +++ b/apps/pdfding/README.md @@ -0,0 +1,39 @@ +# PdfDing + +## 产品介绍 + +PdfDing 是一个自托管的 PDF 管理、阅读与编辑工具,支持跨设备阅读进度、工作区与集合、标签、批量操作、分享、批注、签名和双因素认证。 + +## 主要功能 + +- 在浏览器中上传、管理、阅读和编辑 PDF +- 使用工作区、集合、多级标签、收藏和归档组织文档 +- 添加高亮、评论、绘图、文本和签名 +- 通过链接或二维码分享 PDF 和集合 +- 支持本地账户、OIDC 单点登录和双因素认证 + +## 访问说明 + +- 安装后访问 `http://<服务器 IP>:<配置端口>` 并注册首个本地账户 +- 默认配置适用于 HTTP 直连;通过 HTTPS 反向代理访问时,请将公开 URL 协议设为 HTTPS、启用安全 Cookie,并将允许的主机设置为实际域名 +- 数据库和上传的 PDF 分别保存在版本目录的 `data/db` 与 `data/media` 中 + +## Introduction + +PdfDing is a self-hosted PDF manager, viewer and editor with reading progress, workspaces, collections, tags, sharing, annotations, signatures and two-factor authentication. + +## Features + +- Upload, organize, read and edit PDFs in a browser +- Organize documents with workspaces, collections, nested tags, starring and archiving +- Add highlights, comments, drawings, text and signatures +- Share PDFs and collections by link or QR code +- Use local accounts, OIDC single sign-on and two-factor authentication + +## Access + +- Open `http://:` and register the first local account +- The defaults are intended for direct HTTP access; select HTTPS as the public URL scheme, enable secure cookies and set the actual host when using an HTTPS reverse proxy +- The SQLite database and uploaded PDFs are stored under `data/db` and `data/media` in the selected version directory + +Official documentation: diff --git a/apps/pdfding/data.yml b/apps/pdfding/data.yml new file mode 100644 index 000000000..92514685b --- /dev/null +++ b/apps/pdfding/data.yml @@ -0,0 +1,31 @@ +name: PdfDing +tags: +- Tool +title: 自托管 PDF 管理、阅读与编辑工具 +description: 自托管 PDF 管理、阅读与编辑工具 +additionalProperties: + key: pdfding + name: PdfDing + tags: + - Tool + shortDescZh: 自托管 PDF 管理、阅读与编辑工具 + shortDescEn: A self-hosted PDF manager, viewer and editor + description: + en: A self-hosted PDF manager, viewer and editor + zh: 自托管 PDF 管理、阅读与编辑工具 + zh-Hant: 自架 PDF 管理、閱讀與編輯工具 + ja: セルフホスト型の PDF 管理、閲覧、編集ツール + ko: 자체 호스팅 PDF 관리, 보기 및 편집 도구 + ru: Самостоятельно размещаемый менеджер, просмотрщик и редактор PDF + ms: Pengurus, pemapar dan penyunting PDF hos kendiri + pt-br: Gerenciador, visualizador e editor de PDF auto-hospedado + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.pdfding.com + github: https://github.com/mrmn2/PdfDing + document: https://docs.pdfding.com/getting_started/docker/ + architectures: + - amd64 + - arm64 diff --git a/apps/pdfding/latest/.env.sample b/apps/pdfding/latest/.env.sample new file mode 100644 index 000000000..7ebc054bb --- /dev/null +++ b/apps/pdfding/latest/.env.sample @@ -0,0 +1,9 @@ +CONTAINER_NAME=pdfding +PANEL_APP_PORT_HTTP=8000 +PDFDING_HOST_NAME=* +PDFDING_SECRET_KEY=replace-with-a-random-application-secret +PDFDING_CSRF_COOKIE_SECURE=FALSE +PDFDING_SESSION_COOKIE_SECURE=FALSE +PDFDING_DISABLE_USER_SIGNUP=FALSE +PDFDING_ACCOUNT_PROTOCOL=http +TZ=Asia/Shanghai diff --git a/apps/pdfding/latest/data.yml b/apps/pdfding/latest/data.yml new file mode 100644 index 000000000..bf8878942 --- /dev/null +++ b/apps/pdfding/latest/data.yml @@ -0,0 +1,153 @@ +additionalProperties: + formFields: + - default: 8000 + 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: "*" + edit: true + envKey: PDFDING_HOST_NAME + labelEn: Allowed Hosts + labelZh: 允许的主机 + label: + en: Allowed Hosts + zh: 允许的主机 + zh-Hant: 允許的主機 + ja: 許可するホスト + ko: 허용된 호스트 + ru: Разрешенные хосты + ms: Hos yang dibenarkan + pt-br: Hosts permitidos + required: true + type: text + - default: "" + edit: true + envKey: PDFDING_SECRET_KEY + labelEn: Application Secret + labelZh: 应用密钥 + label: + en: Application Secret + zh: 应用密钥 + zh-Hant: 應用程式密鑰 + ja: アプリケーションシークレット + ko: 애플리케이션 비밀 키 + ru: Секрет приложения + ms: Rahsia aplikasi + pt-br: Segredo do aplicativo + random: true + required: true + rule: paramComplexity + type: password + - default: "FALSE" + edit: true + envKey: PDFDING_CSRF_COOKIE_SECURE + labelEn: Secure CSRF Cookie + labelZh: 安全 CSRF Cookie + label: + en: Secure CSRF Cookie + zh: 安全 CSRF Cookie + zh-Hant: 安全 CSRF Cookie + ja: セキュア CSRF Cookie + ko: 보안 CSRF Cookie + ru: Защищенный CSRF Cookie + ms: Cookie CSRF selamat + pt-br: Cookie CSRF seguro + required: true + type: select + values: + - label: "Disabled" + value: "FALSE" + - label: "Enabled" + value: "TRUE" + - default: "FALSE" + edit: true + envKey: PDFDING_SESSION_COOKIE_SECURE + labelEn: Secure Session Cookie + labelZh: 安全会话 Cookie + label: + en: Secure Session Cookie + zh: 安全会话 Cookie + zh-Hant: 安全工作階段 Cookie + ja: セキュアセッション Cookie + ko: 보안 세션 Cookie + ru: Защищенный Cookie сеанса + ms: Cookie sesi selamat + pt-br: Cookie de sessão seguro + required: true + type: select + values: + - label: "Disabled" + value: "FALSE" + - label: "Enabled" + value: "TRUE" + - default: "FALSE" + edit: true + envKey: PDFDING_DISABLE_USER_SIGNUP + labelEn: Disable User Signup + labelZh: 禁止用户注册 + label: + en: Disable User Signup + zh: 禁止用户注册 + zh-Hant: 禁止使用者註冊 + ja: ユーザー登録を無効化 + ko: 사용자 가입 비활성화 + ru: Отключить регистрацию пользователей + ms: Lumpuhkan pendaftaran pengguna + pt-br: Desativar cadastro de usuários + required: true + type: select + values: + - label: "No" + value: "FALSE" + - label: "Yes" + value: "TRUE" + - default: http + edit: true + envKey: PDFDING_ACCOUNT_PROTOCOL + labelEn: Public URL Scheme + labelZh: 公共 URL 协议 + label: + en: Public URL Scheme + zh: 公共 URL 协议 + zh-Hant: 公開 URL 通訊協定 + ja: 公開 URL スキーム + ko: 공개 URL 스킴 + ru: Схема публичного URL + ms: Skema URL awam + pt-br: Esquema da URL pública + required: true + type: select + values: + - label: HTTP + value: http + - label: HTTPS + value: https + - default: Asia/Shanghai + edit: true + envKey: TZ + labelEn: Time Zone + labelZh: 时区 + label: + en: Time Zone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon waktu + pt-br: Fuso horário + required: true + type: text diff --git a/apps/pdfding/latest/docker-compose.yml b/apps/pdfding/latest/docker-compose.yml new file mode 100644 index 000000000..7ae2d4b3f --- /dev/null +++ b/apps/pdfding/latest/docker-compose.yml @@ -0,0 +1,32 @@ +services: + pdfding: + image: "mrmn/pdfding:latest" + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8000" + volumes: + - "./data/db:/home/nonroot/pdfding/db" + - "./data/media:/home/nonroot/pdfding/media" + environment: + - TZ=${TZ} + - SECRET_KEY=${PDFDING_SECRET_KEY} + - HOST_NAME=${PDFDING_HOST_NAME} + - CSRF_COOKIE_SECURE=${PDFDING_CSRF_COOKIE_SECURE} + - SESSION_COOKIE_SECURE=${PDFDING_SESSION_COOKIE_SECURE} + - DISABLE_USER_SIGNUP=${PDFDING_DISABLE_USER_SIGNUP} + - ACCOUNT_DEFAULT_HTTP_PROTOCOL=${PDFDING_ACCOUNT_PROTOCOL} + healthcheck: + test: ["CMD-SHELL", "wget -q -O - http://127.0.0.1:8000/healthz >/dev/null || exit 1"] + interval: 10s + timeout: 5s + start_period: 30s + retries: 12 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/pdfding/latest/scripts/init.sh b/apps/pdfding/latest/scripts/init.sh new file mode 100755 index 000000000..bd556b2af --- /dev/null +++ b/apps/pdfding/latest/scripts/init.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +umask 027 +mkdir -p -- "$ROOT_DIR/data/db" "$ROOT_DIR/data/media" +chown 1000:1000 -- "$ROOT_DIR/data/db" "$ROOT_DIR/data/media" 2>/dev/null || true +chmod 0750 -- "$ROOT_DIR/data/db" "$ROOT_DIR/data/media" diff --git a/apps/pdfding/latest/scripts/uninstall.sh b/apps/pdfding/latest/scripts/uninstall.sh new file mode 100755 index 000000000..6e877466e --- /dev/null +++ b/apps/pdfding/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -euo pipefail diff --git a/apps/pdfding/latest/scripts/upgrade.sh b/apps/pdfding/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/pdfding/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/pdfding/logo.png b/apps/pdfding/logo.png new file mode 100644 index 000000000..a37f7a2e4 Binary files /dev/null and b/apps/pdfding/logo.png differ