Dokploy

Paperless-ngx

Paperless-ngx is a self-hosted document management system for scanning, indexing, and archiving documents.

Paperless-ngx logo

Configuration

version: "3.8"

services:
  paperless-ngx:
    image: ghcr.io/paperless-ngx/paperless-ngx:2.20.15
    restart: unless-stopped
    depends_on:
      paperless-ngx-db:
        condition: service_healthy
      paperless-ngx-broker:
        condition: service_healthy
    expose:
      - 8000
    environment:
      PAPERLESS_REDIS: redis://paperless-ngx-broker:6379
      PAPERLESS_DBHOST: paperless-ngx-db
      PAPERLESS_DBNAME: paperless
      PAPERLESS_DBUSER: paperless
      PAPERLESS_DBPASS: ${POSTGRES_PASSWORD}
      PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
      PAPERLESS_URL: ${PAPERLESS_URL}
      PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE}
      PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE}
    volumes:
      - paperless-data:/usr/src/paperless/data
      - paperless-media:/usr/src/paperless/media
      - paperless-export:/usr/src/paperless/export
      - paperless-consume:/usr/src/paperless/consume

  paperless-ngx-db:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - paperless-db:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U paperless -d paperless"]
      interval: 10s
      timeout: 5s
      retries: 5

  paperless-ngx-broker:
    image: redis:8-alpine
    restart: unless-stopped
    volumes:
      - paperless-redis:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  paperless-data: {}
  paperless-media: {}
  paperless-export: {}
  paperless-consume: {}
  paperless-db: {}
  paperless-redis: {}
[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
paperless_secret_key = "${password:64}"
paperless_url = "http://${main_domain}"
paperless_timezone = "UTC"
paperless_ocr_language = "eng"

[config]
[[config.domains]]
serviceName = "paperless-ngx"
port = 8000
host = "${main_domain}"

[config.env]
POSTGRES_PASSWORD = "${postgres_password}"
PAPERLESS_SECRET_KEY = "${paperless_secret_key}"
PAPERLESS_URL = "${paperless_url}"
PAPERLESS_TIME_ZONE = "${paperless_timezone}"
PAPERLESS_OCR_LANGUAGE = "${paperless_ocr_language}"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHBhcGVybGVzcy1uZ3g6XG4gICAgaW1hZ2U6IGdoY3IuaW8vcGFwZXJsZXNzLW5neC9wYXBlcmxlc3Mtbmd4OjIuMjAuMTVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICBwYXBlcmxlc3Mtbmd4LWRiOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgcGFwZXJsZXNzLW5neC1icm9rZXI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZXhwb3NlOlxuICAgICAgLSA4MDAwXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQQVBFUkxFU1NfUkVESVM6IHJlZGlzOi8vcGFwZXJsZXNzLW5neC1icm9rZXI6NjM3OVxuICAgICAgUEFQRVJMRVNTX0RCSE9TVDogcGFwZXJsZXNzLW5neC1kYlxuICAgICAgUEFQRVJMRVNTX0RCTkFNRTogcGFwZXJsZXNzXG4gICAgICBQQVBFUkxFU1NfREJVU0VSOiBwYXBlcmxlc3NcbiAgICAgIFBBUEVSTEVTU19EQlBBU1M6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBQQVBFUkxFU1NfU0VDUkVUX0tFWTogJHtQQVBFUkxFU1NfU0VDUkVUX0tFWX1cbiAgICAgIFBBUEVSTEVTU19VUkw6ICR7UEFQRVJMRVNTX1VSTH1cbiAgICAgIFBBUEVSTEVTU19USU1FX1pPTkU6ICR7UEFQRVJMRVNTX1RJTUVfWk9ORX1cbiAgICAgIFBBUEVSTEVTU19PQ1JfTEFOR1VBR0U6ICR7UEFQRVJMRVNTX09DUl9MQU5HVUFHRX1cbiAgICB2b2x1bWVzOlxuICAgICAgLSBwYXBlcmxlc3MtZGF0YTovdXNyL3NyYy9wYXBlcmxlc3MvZGF0YVxuICAgICAgLSBwYXBlcmxlc3MtbWVkaWE6L3Vzci9zcmMvcGFwZXJsZXNzL21lZGlhXG4gICAgICAtIHBhcGVybGVzcy1leHBvcnQ6L3Vzci9zcmMvcGFwZXJsZXNzL2V4cG9ydFxuICAgICAgLSBwYXBlcmxlc3MtY29uc3VtZTovdXNyL3NyYy9wYXBlcmxlc3MvY29uc3VtZVxuXG4gIHBhcGVybGVzcy1uZ3gtZGI6XG4gICAgaW1hZ2U6IHBvc3RncmVzOjE4LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1NUR1JFU19EQjogcGFwZXJsZXNzXG4gICAgICBQT1NUR1JFU19VU0VSOiBwYXBlcmxlc3NcbiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIHBhcGVybGVzcy1kYjovdmFyL2xpYi9wb3N0Z3Jlc3FsXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJwZ19pc3JlYWR5IC1VIHBhcGVybGVzcyAtZCBwYXBlcmxlc3NcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA1XG5cbiAgcGFwZXJsZXNzLW5neC1icm9rZXI6XG4gICAgaW1hZ2U6IHJlZGlzOjgtYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSBwYXBlcmxlc3MtcmVkaXM6L2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcInJlZGlzLWNsaVwiLCBcInBpbmdcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA1XG5cbnZvbHVtZXM6XG4gIHBhcGVybGVzcy1kYXRhOiB7fVxuICBwYXBlcmxlc3MtbWVkaWE6IHt9XG4gIHBhcGVybGVzcy1leHBvcnQ6IHt9XG4gIHBhcGVybGVzcy1jb25zdW1lOiB7fVxuICBwYXBlcmxlc3MtZGI6IHt9XG4gIHBhcGVybGVzcy1yZWRpczoge31cbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxucGFwZXJsZXNzX3NlY3JldF9rZXkgPSBcIiR7cGFzc3dvcmQ6NjR9XCJcbnBhcGVybGVzc191cmwgPSBcImh0dHA6Ly8ke21haW5fZG9tYWlufVwiXG5wYXBlcmxlc3NfdGltZXpvbmUgPSBcIlVUQ1wiXG5wYXBlcmxlc3Nfb2NyX2xhbmd1YWdlID0gXCJlbmdcIlxuXG5bY29uZmlnXVxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwicGFwZXJsZXNzLW5neFwiXG5wb3J0ID0gODAwMFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuXG5bY29uZmlnLmVudl1cblBPU1RHUkVTX1BBU1NXT1JEID0gXCIke3Bvc3RncmVzX3Bhc3N3b3JkfVwiXG5QQVBFUkxFU1NfU0VDUkVUX0tFWSA9IFwiJHtwYXBlcmxlc3Nfc2VjcmV0X2tleX1cIlxuUEFQRVJMRVNTX1VSTCA9IFwiJHtwYXBlcmxlc3NfdXJsfVwiXG5QQVBFUkxFU1NfVElNRV9aT05FID0gXCIke3BhcGVybGVzc190aW1lem9uZX1cIlxuUEFQRVJMRVNTX09DUl9MQU5HVUFHRSA9IFwiJHtwYXBlcmxlc3Nfb2NyX2xhbmd1YWdlfVwiXG4iCn0=

Tags

documents, ocr, productivity, self-hosted


Version: 2.20.15

On this page