下载docker-compose文件

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

给他一个执行权限

sudo chmod +x /usr/local/bin/docker-compose

Paperless-ngx 部署需要用到非常多外部服务,如数据库等,采用docker compose方式,可以一次性把所有的服务全部部署好,简化安装过程,下面开始进行安装。

1. 部署Paperless-ngx

在Linux 中创建一个文件夹,创建后进入该文件夹

sudo vim /usr/local/ngx/docker-compose.yml

把下面参数复制进去docker-compose.yml 文件里面,

version: "3.6"
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - /home/paperless_ngx/redisdata:/data

  db:
    image: docker.io/library/mariadb:10
    restart: unless-stopped
    volumes:
      - /home/paperless_ngx/dbdata:/var/lib/mysql
    environment:
      MARIADB_HOST: paperless
      MARIADB_DATABASE: paperless
      MARIADB_USER: paperless
      MARIADB_PASSWORD: paperless
      MARIADB_ROOT_PASSWORD: paperless


  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "8000:8000"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000"]
      interval: 60s
      timeout: 60s
      retries: 5
    volumes:
      - /home/paperless_ngx/data:/usr/src/paperless/data
      - /home/paperless_ngx/media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBENGINE: mariadb
      PAPERLESS_DBHOST: db
      PAPERLESS_DBUSER: paperless 
      PAPERLESS_DBPASS: paperless 
      PAPERLESS_DBPORT: 3306
      PAPERLESS_TIKAURL: http://tika_container:9998
      PAPERLESS_MAX_UPLOAD_SIZE: 1024MB  # 设置上传文件大小限制为100MB
      paperless_tika_enabled: 1
      paperless_tika_gotenberg_endpoint: http://gotenberg:3000
      paperless_tika_endpoint: http://tika:9998
  gotenberg:
    image: docker.io/gotenberg/gotenberg:7.10
    restart: unless-stopped
    command:
      - "gotenberg"
      - "--chromium-disable-javascript=true"
      - "--chromium-allow-list=file:///tmp/.*"
  tika:
    image: ghcr.io/paperless-ngx/tika:latest
    restart: unless-stopped


volumes:
  data:
  media:
  dbdata:
  redisdata:

设置挂载目录

mkdir -p data media dbdata redisdata consume export

postgres数据库把下面参数复制进去docker-compose.yml 文件里面,

version: "3.6"
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - /home/paperless_ngx/redisdata:/data
  db:
    image: docker.io/library/postgres:15
    restart: unless-stopped
    volumes:
      - /home/paperless_ngx/pgdata:/var/lib/postgresql/data
    environment:
      postgres_db: paperless
      postgres_user: paperless
      postgres_password: paperless
      POSTGRES_HOST_AUTH_METHOD: trust
  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
      - gotenberg
      - tika
    ports:
      - "8000:8000"
    volumes:
      - /home/paperless_ngx/data:/usr/src/paperless/data
      - /home/paperless_ngx/media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    environment:
      paperless_redis: redis://broker:6379
      paperless_dbhost: db
      paperless_tika_enabled: 1
      paperless_tika_gotenberg_endpoint: http://gotenberg:3000
      paperless_tika_endpoint: http://tika:9998
  gotenberg:
    image: docker.io/gotenberg/gotenberg:7.10
    restart: unless-stopped
    command:
      - "gotenberg"
      - "--chromium-disable-javascript=true"
      - "--chromium-allow-list=file:///tmp/.*"
  tika:
    image: ghcr.io/paperless-ngx/tika:latest
    restart: unless-stopped
volumes:
  data:
  media:
  pgdata:
  redisdata:

复制进去后记得保存

一、使用命令行启动容器时配置

当你使用docker run命令启动 PostgreSQL 容器时,可以通过以下方式设置该环境变量:

docker run --name some-postgres -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres

在这个命令中,-e POSTGRES_HOST_AUTH_METHOD=trust设置了环境变量,告诉 PostgreSQL 以信任所有连接,无需密码验证。

二、使用 Docker Compose 配置

如果使用 Docker Compose 来管理容器,可以在docker-compose.yml文件中为 PostgreSQL 服务添加这个环境变量:

version: '3'
services:
  postgres:
    image: postgres
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

以下是一个在docker - compose.env文件中配置PAPERLESS_TIKA_ENABLED的例子:

假设你已经安装好了Tika,并且希望启用它用于文本提取。在docker - compose.env文件中添加以下行: PAPERLESS_TIKA_ENABLED=true 如果你的Tika服务运行在非默认的位置(比如自定义的IP地址或者端口),还需要配置PAPERLESS_TIKA_URL。例如,如果Tika服务运行在IP地址为192.168.1.10,端口为8888的服务器上,那么可以在docker - compose.env文件中添加如下内容: PAPERLESS_TIKA_ENABLED=true PAPERLESS_TIKA_URL=http://192.168.1.10:8888 这些配置可以让Paperless - ngx知道要使用Tika服务来提取文本,并且能找到该服务的位置。

然后运行下面命令进行启动,执行后等待运行完成,如果卡顿或者卡主不动,可以ctrl+c 退出 重新执行下面命令

docker compose up -d

运行后,输入docker ps 命令,即可看到我们运行的Paperless-ngx服务,对外访问端口为8000

Paperless-ngx文档管理系统本地部署_用户名

若使用Docker部署,需先安装Docker和Docker Compose,然后创建docker-compose.yml文件,将相关参数复制进去,运行docker compose up -d命令启动服务,再通过docker compose run --rm webserver createsuperuser设置登录用户名和密码.

下面我们进行设置登录的用户名和密码,运行下面命令

docker-compose run --rm webserver createsuperuser

Paperless-ngx文档管理系统本地部署_docker_02

然后按提示设置用户名,邮箱,密码,本例设置的用户名为test,具体可以自己设置,然后按提示输入邮箱,和设置用户名对应的密码,设置后回车提示successful表示成功,下面我们进行访问

2. 本地访问Paperless-ngx

上面运行服务且设置好登录用户名密码后,我们使用Linux局域网IP加端口8000,即可看到Paperless-ngx登录界面

Paperless-ngx文档管理系统本地部署_用户名_03



配置 Paperless - ngx 使用 Tika 进行 Office 文件处理

  1. 确认 Tika 服务的可用性
  • 确保已经成功部署并运行了Apache Tika服务。如果是通过docker - compose部署,Tika服务的配置可能如下:
tika_service:
  image: apache/tika:latest
  container_name: tika_container
  volumes:
    -./tika_data:/tika_data
  ports:
    - "9998:9998"
  • 可以通过docker ps -a查看Tika容器是否正在运行。同时,检查容器内的Tika服务是否正常响应请求。可以使用curl命令进行简单测试,例如curl -I http://localhost:9998(假设在本地测试且端口映射正确),如果返回状态码为200左右的响应,说明Tika服务可访问。
  1. 在 Paperless - ngx 配置文件中设置 Tika 连接信息
  • 通过环境变量设置(推荐)
  • Paperless - ngxdocker - compose.yml文件中,设置PAPERLESS_TIKAURL环境变量。这个变量应该指向Tika服务的正确位置。例如,如果Tika容器名称是tika_container,并且端口映射为9998,环境变量设置如下:
paperless_ngx:
  image: ghcr.io/paperless - ngx/paperless - ngx:latest
  container_name: paperless_ngx_container
  ports:
    - "8000:8000"
  volumes:
    -./paperless_data:/usr/src/paperless/data
    -./paperless_media:/usr/src/paperless/media
    -./paperless_consume:/usr/src/paperless/consume
  environment:
    PAPERLESS_TIKAURL: http://tika_container:9998
  • 确保docker - compose.yml文件中的服务名称(如tika_container)与实际运行的Tika容器名称一致。
  • 检查其他相关环境变量(可选)
  • 根据Paperless - ngx的具体需求,可能还需要检查和设置其他与文件处理相关的环境变量。例如,可能存在控制文件大小限制、文件类型过滤等环境变量。参考Paperless-ngx官方文档来确定是否需要额外设置这些变量。
  1. 重启 Paperless - ngx 服务
  • 在修改了Paperless-ngxdocker-compose.yml文件后,需要重新启动Paperless-ngx服务,以使新的配置生效。在包含docker - compose.yml文件的目录下,使用docker - compose up -d命令重新启动Paperless - ngx容器。
  • 等待Paperless-ngx服务重新启动完成。可以通过查看docker-compose logs -f来监控启动过程,确保没有出现错误。
  1. 测试 Office 文件处理功能
  • 通过Paperless-ngx的 Web 界面(通常通过http://<服务器IP地址>:<端口>访问,如http://12.34.56.78:8000)登录到系统。
  • 上传一个 Office 文件(如.docx.xlsx.pptx等)。在上传过程中,Paperless-ngx应该能够自动调用Tika服务来提取文件内容、元数据等信息。
  • 检查文件上传后的索引和预览功能是否正常。例如,查看是否能够正确搜索文件中的文字内容、是否能够正确显示文件的预览(如文档中的文字、表格等内容)。如果出现问题,可以再次查看Paperless-ngxTika的容器日志,查找可能的错误原因。