网站首页/ 信息中心/ 档案百科/

Docker部署Paperless-ngx搭建文书档案管理系统实操

发布时间:2026年09月13日 06:10:01 浏览量:0

一、环境准备与Docker安装

本文以Ubuntu 22.04 LTS操作系统为例,演示如何通过Docker容器化技术快速部署一套功能完备的文书档案管理系统。该方案无需复杂的编译过程,配置完成后即可实现文档的自动归档、OCR识别及全文检索。

更新系统源并安装必要的依赖工具:

sudo apt-get update
sudo apt-get install -y curl git

接着,执行官方脚本一键安装Docker及Docker Compose插件。确保当前用户具有执行权限,若权限不足请添加sudo:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

安装完成后,验证Docker及Compose版本,确保服务正常运行:

docker --version
docker compose version

二、创建项目目录结构

为了保持数据持久化及配置管理的清晰,我们需要在宿主机创建专门的目录用于映射容器内的数据。执行以下命令创建目录结构:

mkdir -p ~/paperless/data
mkdir -p ~/paperless/media
mkdir -p ~/paperless/export
mkdir -p ~/paperless/consume
mkdir -p ~/paperless/db
mkdir -p ~/paperless/redis

目录用途说明如下,请根据实际需求调整路径:

三、编写Docker Compose配置文件

进入项目根目录并创建配置文件:

cd ~/paperless
nano docker-compose.yml

将以下完整配置复制到文件中。该配置集成了Web服务、数据库、缓存、OCR转换器及任务消费者,并针对中文环境优化了时区与OCR语言包设置:

version: "3.5"
services:
broker:
image: docker.io/library/redis:7
restart: always
volumes:
- ./redis:/data
db:
image: docker.io/postgres:15
restart: always
volumes:
- ./db:/var/lib/postgresql/data
environment:
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
POSTGRES_DB: paperless
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: always
depends_on:
- db
- broker
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file:
- .env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBPASS: paperless
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
gotenberg:
image: docker.io/gotenberg/gotenberg:7
restart: always
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/."
tika:
image: apache/tika:latest
restart: always
consumer:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: always
depends_on:
- db
- broker
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file:
- .env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBPASS: paperless
PAPERLESS_CONSUMER_POLLING: 30
PAPERLESS_CONSUMER_RECURSIVE: true
command: /usr/src/paperless/src/manage.py document_consumer

保存并退出编辑器。接下来创建环境变量文件以配置系统核心参数:

nano .env

写入以下内容,注意调整时区和OCR语言包以支持中文识别:

PAPERLESS_URL=http://localhost:8000
PAPERLESS_TIME_ZONE=Asia/Shanghai
PAPERLESS_OCR_LANGUAGE=chi_sim+eng
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=adminpassword

注意:这里的OCR语言包设置为chi_sim+eng,表示同时识别简体中文和英文。若服务器内存较小(低于2GB),建议仅保留eng以防OCR进程崩溃。

四、启动服务并验证

~/paperless目录下执行以下命令拉取镜像并启动所有容器:

docker compose up -d

首次启动需要下载镜像,耗时取决于网络速度。启动后查看容器运行状态,确保所有服务均为Up状态:

docker compose ps

webserver服务未正常运行,可通过以下命令查看日志排查错误:

Docker部署Paperless-ngx搭建文书档案管理系统实操

docker compose logs -f webserver

日志中看到Booting worker with pid即表示Web服务已成功启动。

五、初始化系统与用户配置

虽然我们在.env文件中预设了管理员密码,但为了安全起见,建议在首次运行后通过命令行创建或重置管理员账户。执行以下命令进入容器环境:

docker compose exec webserver python manage.py createsuperuser

按照提示输入用户名、邮箱和密码。完成后,打开浏览器访问http://服务器IP:8000,使用刚创建的账户登录。

登录后,进入Settings -> Numbering,设置文档归档的编号规则,例如按年份+流水号格式,这对于文书档案管理至关重要。

六、文书档案自动归档实操

系统提供两种主要的文档归档方式:Web界面上传和文件监控导入。

1. 文件监控导入

这是最高效的实操方式。将需要归档的PDF或图片文件直接复制到宿主机的~/paperless/consume目录下:

cp /path/to/your/scanned_contract.pdf ~/paperless/consume/

后台的consumer容器会自动检测到新文件,并在30秒内(由PAPERLESS_CONSUMER_POLLING参数控制)将其抓取、进行OCR处理并导入数据库。处理完成后,该文件会从consume目录消失。

2. Web界面上传

在系统首页点击右上角的Upload Documents按钮,拖拽文件即可。上传后,系统会自动进入处理队列。

七、OCR识别与全文检索配置

文档导入后,Paperless-ngx会自动调用Tesseract和Gotenberg进行内容识别。在文档列表页,点击文档标题进入详情页,右侧会显示识别出的文本内容。

若发现中文识别率低,请检查.env文件中PAPERLESS_OCR_LANGUAGE是否正确设置为chi_sim。修改后需重建容器生效:

docker compose down
docker compose up -d

配置正确后,利用左上角的Search栏,输入文档中的任意关键词(如合同号、人名、特定条款),系统可瞬间检索出对应的文书档案。点击搜索结果,可直接在线预览或下载原文。

八、数据备份与恢复

为了确保档案数据安全,必须定期备份数据库和媒体文件。编写以下脚本backup.sh实现自动备份:

!/bin/bash
BACKUP_DIR=~/backups
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
备份数据库
docker compose exec -T db pg_dump -U paperless paperless > $BACKUP_DIR/db_dump_$DATE.sql
备份媒体文件和数据
tar -czf $BACKUP_DIR/paperless_data_$DATE.tar.gz ./data ./media ./export
echo "Backup completed: $BACKUP_DIR"

赋予执行权限并运行:

chmod +x backup.sh
./backup.sh

恢复数据时,先停止服务,导入数据库,再解压文件覆盖即可。此方案完整覆盖了文书档案管理中从采集、识别、检索到备份的全生命周期,可直接用于企业或个人的文档库管理。

嘉峪关档案管理系统:老档案人的数字化生存指南
嘉峪关档案管理系统:老档案人的数字化生存指南
干了这么多年档案管理,你有没有发现,最怕的不是活儿多,而是“找不到”。一份关键文件,明明记得归档了,真要用的时候,翻箱倒柜,满头大汗,最后发现它静静地“躺”在某个早已遗忘的角落。这事儿吧,在传统纸质管...
2026年09月13日 06:10:01
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818