Paperless-ngx
Paperless-ngx is a self-hosted document management system for scanning, indexing, and archiving documents.
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 → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHBhcGVybGVzcy1uZ3g6XG4gICAgaW1hZ2U6IGdoY3IuaW8vcGFwZXJsZXNzLW5neC9wYXBlcmxlc3Mtbmd4OjIuMjAuMTVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICBwYXBlcmxlc3Mtbmd4LWRiOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgcGFwZXJsZXNzLW5neC1icm9rZXI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZXhwb3NlOlxuICAgICAgLSA4MDAwXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQQVBFUkxFU1NfUkVESVM6IHJlZGlzOi8vcGFwZXJsZXNzLW5neC1icm9rZXI6NjM3OVxuICAgICAgUEFQRVJMRVNTX0RCSE9TVDogcGFwZXJsZXNzLW5neC1kYlxuICAgICAgUEFQRVJMRVNTX0RCTkFNRTogcGFwZXJsZXNzXG4gICAgICBQQVBFUkxFU1NfREJVU0VSOiBwYXBlcmxlc3NcbiAgICAgIFBBUEVSTEVTU19EQlBBU1M6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBQQVBFUkxFU1NfU0VDUkVUX0tFWTogJHtQQVBFUkxFU1NfU0VDUkVUX0tFWX1cbiAgICAgIFBBUEVSTEVTU19VUkw6ICR7UEFQRVJMRVNTX1VSTH1cbiAgICAgIFBBUEVSTEVTU19USU1FX1pPTkU6ICR7UEFQRVJMRVNTX1RJTUVfWk9ORX1cbiAgICAgIFBBUEVSTEVTU19PQ1JfTEFOR1VBR0U6ICR7UEFQRVJMRVNTX09DUl9MQU5HVUFHRX1cbiAgICB2b2x1bWVzOlxuICAgICAgLSBwYXBlcmxlc3MtZGF0YTovdXNyL3NyYy9wYXBlcmxlc3MvZGF0YVxuICAgICAgLSBwYXBlcmxlc3MtbWVkaWE6L3Vzci9zcmMvcGFwZXJsZXNzL21lZGlhXG4gICAgICAtIHBhcGVybGVzcy1leHBvcnQ6L3Vzci9zcmMvcGFwZXJsZXNzL2V4cG9ydFxuICAgICAgLSBwYXBlcmxlc3MtY29uc3VtZTovdXNyL3NyYy9wYXBlcmxlc3MvY29uc3VtZVxuXG4gIHBhcGVybGVzcy1uZ3gtZGI6XG4gICAgaW1hZ2U6IHBvc3RncmVzOjE4LWFscGluZVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1NUR1JFU19EQjogcGFwZXJsZXNzXG4gICAgICBQT1NUR1JFU19VU0VSOiBwYXBlcmxlc3NcbiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIHBhcGVybGVzcy1kYjovdmFyL2xpYi9wb3N0Z3Jlc3FsXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJwZ19pc3JlYWR5IC1VIHBhcGVybGVzcyAtZCBwYXBlcmxlc3NcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA1XG5cbiAgcGFwZXJsZXNzLW5neC1icm9rZXI6XG4gICAgaW1hZ2U6IHJlZGlzOjgtYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSBwYXBlcmxlc3MtcmVkaXM6L2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcInJlZGlzLWNsaVwiLCBcInBpbmdcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA1XG5cbnZvbHVtZXM6XG4gIHBhcGVybGVzcy1kYXRhOiB7fVxuICBwYXBlcmxlc3MtbWVkaWE6IHt9XG4gIHBhcGVybGVzcy1leHBvcnQ6IHt9XG4gIHBhcGVybGVzcy1jb25zdW1lOiB7fVxuICBwYXBlcmxlc3MtZGI6IHt9XG4gIHBhcGVybGVzcy1yZWRpczoge31cbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxucGFwZXJsZXNzX3NlY3JldF9rZXkgPSBcIiR7cGFzc3dvcmQ6NjR9XCJcbnBhcGVybGVzc191cmwgPSBcImh0dHA6Ly8ke21haW5fZG9tYWlufVwiXG5wYXBlcmxlc3NfdGltZXpvbmUgPSBcIlVUQ1wiXG5wYXBlcmxlc3Nfb2NyX2xhbmd1YWdlID0gXCJlbmdcIlxuXG5bY29uZmlnXVxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwicGFwZXJsZXNzLW5neFwiXG5wb3J0ID0gODAwMFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuXG5bY29uZmlnLmVudl1cblBPU1RHUkVTX1BBU1NXT1JEID0gXCIke3Bvc3RncmVzX3Bhc3N3b3JkfVwiXG5QQVBFUkxFU1NfU0VDUkVUX0tFWSA9IFwiJHtwYXBlcmxlc3Nfc2VjcmV0X2tleX1cIlxuUEFQRVJMRVNTX1VSTCA9IFwiJHtwYXBlcmxlc3NfdXJsfVwiXG5QQVBFUkxFU1NfVElNRV9aT05FID0gXCIke3BhcGVybGVzc190aW1lem9uZX1cIlxuUEFQRVJMRVNTX09DUl9MQU5HVUFHRSA9IFwiJHtwYXBlcmxlc3Nfb2NyX2xhbmd1YWdlfVwiXG4iCn0=Links
Tags
documents, ocr, productivity, self-hosted
Version: 2.20.15