Merge pull request #5414 from okxlin/adapt/pdfding-20260731-single-commit

feat: add PdfDing
This commit is contained in:
okxlin
2026-07-31 08:01:17 +08:00
committed by GitHub
15 changed files with 486 additions and 0 deletions
+9
View File
@@ -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
+153
View File
@@ -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
+32
View File
@@ -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
+9
View File
@@ -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"
+2
View File
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
set -euo pipefail
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
+39
View File
@@ -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://<server-ip>:<configured-port>` 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: <https://docs.pdfding.com/getting_started/docker/>
+31
View File
@@ -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
+9
View File
@@ -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
+153
View File
@@ -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
+32
View File
@@ -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
+9
View File
@@ -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"
+2
View File
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
set -euo pipefail
+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.7 KiB