什么是 PdfDing ?
PdfDing
是一款自托管Docker
设置。
功能特点
- 在多种设备上无缝基于浏览器的
PDF
查看 - 使用标签整理
PDF
- 干净且响应迅速的用户界面
- 暗黑模式
- 记住当前位置 - 从停止的地方继续阅读
- 通过
OIDC
支持SSO
- 每个用户都可以上传自己的
PDF
,无需管理员管理内容。
软件的使用很简单,看官方的动图一目了然
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 pdfding
,选择第一个 mrmn/pdfding
,版本选择 latest
。
本文写作时,
latest
版本对应为0.1.2
;
卷
在 docker
文件夹中,创建一个新文件夹 pdfding
,并在其中建两个子文件夹 data
和 media
默认情况下,这两个子文件夹,Everyone
都只有读权限
需要赋予 Everyone
读写权限
最后要成这样才行
data
和 media
两个目录都需要修改权限,如果 data
没修改的话,容器会启动失败,因为无法写入数据库,而 media
没修改的话,在上传 pdf
时会报错
PdfDing
默认使用SQLite
数据库。另外,PdfDing
也支持PostgreSQL
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/pdfding/data | /home/nonroot/pdfding/db | 存放数据库 |
docker/pdfding/media | /home/nonroot/pdfding/media | 存放数据库 |
端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
8340 | 8000 |
默认没有对外暴露端口
需要点 +
号自己添加
环境
可变 | 值 |
---|---|
HOST_NAME | 设为 192.168.0.197 ,这是老苏群晖主机的 IP |
SECRET_KEY | 密码,可以改的复杂一点 |
CSRF_COOKIE_SECURE | 通过 HTTP 传输 CSRF cookie |
SESSION_COOKIE_SECURE | 通过 HTTP 传输 session cookie |
更多的环境变量,请参考官方文档:https://codeberg.org/mrmn/PdfDing#configuration
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
# 新建文件夹 pdfding 和 子目录
mkdir -p /volume1/docker/pdfding/{data,media}
# 进入 pdfding 目录
cd /volume1/docker/pdfding
# 修改目录权限
chmod a+w {data,media}
# 运行容器
docker run -d \
--restart unless-stopped \
--name pdfding \
-p 8340:8000 \
-v $(pwd)/data:/home/nonroot/pdfding/db \
-v $(pwd)/media:/home/nonroot/pdfding/media \
-e HOST_NAME=192.168.0.197 \
-e SECRET_KEY=some_secret \
-e CSRF_COOKIE_SECURE=FALSE \
-e SESSION_COOKIE_SECURE=FALSE \
mrmn/pdfding:latest
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3'
services:
pdfding:
image: mrmn/pdfding:latest
container_name: pdfding
restart: unless-stopped
ports:
- 8340:8000
volumes:
- ./data:/home/nonroot/pdfding/db
- ./media:/home/nonroot/pdfding/media
environment:
- HOST_NAME=192.168.0.197
- SECRET_KEY=some_secret
- CSRF_COOKIE_SECURE=FALSE
- SESSION_COOKIE_SECURE=FALSE
然后执行下面的命令
# 新建文件夹 pdfding 和 子目录
mkdir -p /volume1/docker/pdfding/{data,media}
# 进入 pdfding 目录
cd /volume1/docker/pdfding
# 修改目录权限
chmod a+w {data,media}
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
运行
在浏览器中输入 http://群晖IP:8340
就能看到登录界面
普通用户
第一次需要点 Sign up
注册账号
密码不能少于
8
位,不能太常见,不能全是数字等等
注册成功后的主界面
因为没有设置
smtp
参数,所以是不会收到邮件的
点 Add PDF
添加文件,填写标题、描述和标签,然后点击 Sunmit
提交
上传成功
点标题可以查看 pdf
的内容
文件保存在 /media
目录中
移动端
在手机浏览器上登录
找到上传的 pdf
打开阅读 pdf
的速度挺快的,支持缩放操作
管理员
如果要创建管理员,需要进入容器操作
严格来说,是将已有的用户转为管理员,如果你输入的用户邮箱不存在,是会报错的
django.contrib.auth.models.User.DoesNotExist: User matching query does not exist.
# 以 root 身份进入容器
docker exec -it --user root pdfding /bin/bash
# 创建管理员用户
python pdfding/manage.py make_admin -e wbsu2003@gmail.com
现在可以访问 http://群晖IP:8340/admin
,对用户,pdf
做一些增、删、改、查的操作
参考文档
mrmn/PdfDing: PdfDing is a selfhosted PDF manager and viewer offering a seamless user experience on multiple devices. It’s designed be to be minimal, fast, and easy to set up using Docker. - Codeberg.org
地址:https://codeberg.org/mrmn/PdfDing