首页 公告 项目 RSS

⬇️⬇️⬇️ 欢迎关注我的 telegram 频道和 twitter ⬇️⬇️⬇️


联系方式: Twitter Github Email Telegram

paperless-ngx部署

June 23, 2025 本文有 1066 个字 需要花费 3 分钟阅读

简介

paperless-ngx 是一个开源的文档管理系统,旨在帮助用户将纸质文件数字化并进行高效管理。它允许用户通过扫描、上传 PDF 或图片,将文件自动分类、索引,并支持全文搜索和标签管理。项目的核心目标是让“无纸化办公”变得简单和自动化。

对于我来说最主要就是文件上传之后就会自动ocr,然后我想要一些文件的时候,直接搜索就可以,很方便

部署

我直接给个deployment.yaml应该就可以

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: paperless-ngx
  namespace: app
spec:
  selector:
    matchLabels:
      app: paperless-ngx
  serviceName: paperless-ngx
  replicas: 1
  template:
    metadata:
      labels:
        app: paperless-ngx
    spec:
      initContainers:
        - name: install-tessdata
          image: ghcr.io/astral-sh/uv:0.7.9-python3.12-bookworm-slim
          command:
            - sh
            - -c
            - |
              apt-get update && \
              apt-get install -y tesseract-ocr-chi-sim && \
              cp -r /usr/share/tesseract-ocr/5/tessdata/* /tessdata/
          volumeMounts:
            - name: tesseract-lang
              mountPath: /tessdata
      containers:
      - name: paperless-ngx
        image: ghcr.io/paperless-ngx/paperless-ngx:2.17.1
        ports:
        - containerPort: 8000
          name: web
        env:
        - name: TZ
          value: Asia/Shanghai
        - name: PAPERLESS_REDIS
          value: redis://:passwd@redis:6379
        - name: PAPERLESS_DBHOST
          value: postgresql
        - name: PAPERLESS_URL
          value: https://xxxx.xxxx.com
        - name: PAPERLESS_SECRET_KEY
          value: xxxxxxxxx
        - name: PAPERLESS_TIME_ZONE
          value: Asia/Shanghai
        - name: PAPERLESS_OCR_LANGUAGE
          value: chi_sim
        - name: PAPERLESS_OCR_LANGUAGES
          value: eng,chi_tra
        - name: PAPERLESS_DBUSER
          value: postgres
        - name: PAPERLESS_DBPASS
          value: xxxxxxxxxxx
        volumeMounts:
        - name: tesseract-lang
          mountPath: /usr/share/tesseract-ocr/5/tessdata
        - name: data
          mountPath: /usr/src/paperless/data
          subpath: data
        - name: data
          mountPath: /usr/src/paperless/media
          subpath: media   
        - name: data
          mountPath: /usr/src/paperless/export
          subpath: export     
        - name: data
          mountPath: /usr/src/paperless/consume
          subpath: consume          
        - name: timezone
          mountPath: /etc/localtime                           # 挂载到容器的目录
      volumes:
        - name: timezone
          hostPath: 
            path: /usr/share/zoneinfo/Asia/Shanghai 
        - name: tesseract-lang
          emptyDir: {} 
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 100Gi

要注意

        - name: install-tessdata
          image: ghcr.io/astral-sh/uv:0.7.9-python3.12-bookworm-slim
          command:
            - sh
            - -c
            - |
              apt-get update && \
              apt-get install -y tesseract-ocr-chi-sim && \
              cp -r /usr/share/tesseract-ocr/5/tessdata/* /tessdata/
          volumeMounts:
            - name: tesseract-lang
              mountPath: /tessdata

介绍下Tesseract OCR

tesseract-ocr-chi-sim 是 Tesseract OCR 的简体中文语言包。Tesseract 是一个开源的光学字符识别(OCR)引擎,支持多种语言的文字识别。默认情况下,Tesseract 只包含英文语言包,如果需要识别中文(简体),就需要额外安装 tesseract-ocr-chi-sim。

所以镜像里面默认是没有tesseract-ocr-chi-sim的,需要手动安装,但是我又不想去修改镜像,所以就使用了initContainers去安装

之后就是各种环境变量

  • TZ:设置容器时区,这里设置为 Asia/Shanghai,保证日志和系统时间一致。
  • PAPERLESS_REDIS:Redis 连接地址,格式为 redis://:密码@主机:端口,用于缓存和任务队列。
  • PAPERLESS_DBHOST:PostgreSQL 数据库主机名。
  • PAPERLESS_DBUSER / PAPERLESS_DBPASS:数据库用户名和密码。
  • PAPERLESS_URL:服务的外部访问地址,建议配置为你的域名或公网地址。
  • PAPERLESS_SECRET_KEY:Django 项目的密钥,建议用随机字符串,保证安全。
  • PAPERLESS_TIME_ZONE:Paperless-ngx 的时区设置,建议和 TZ 保持一致。
  • PAPERLESS_OCR_LANGUAGE:默认 OCR 语言,比如 chi_sim 表示简体中文。
  • PAPERLESS_OCR_LANGUAGES:支持的 OCR 语言列表,用逗号分隔,比如 eng,chi_tra 表示英文和繁体中文。

其他

我觉得这个项目已经很可以了,如果想要其他项目,可以关注下

https://github.com/papra-hq/papra

欢迎关注我的博客www.bboy.app

Have Fun