apps/paperless-ngx/compose.yaml
Rama main · réplica de lectura del repositorio original.
name: paperless-ngx
services:
webserver:
image: paperlessngx/paperless-ngx:3.3.4
restart: unless-stopped
depends_on:
database:
condition: service_healthy
broker:
condition: service_healthy
ports:
- "127.0.0.1:${PAPERLESS_PORT:-8000}:8000"
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBENGINE: postgresql
PAPERLESS_DBHOST: database
PAPERLESS_DBPORT: "5432"
PAPERLESS_DBNAME: ${PAPERLESS_DB_NAME:-paperless}
PAPERLESS_DBUSER: ${PAPERLESS_DB_USER:-paperless}
PAPERLESS_DBPASS: ${PAPERLESS_DB_PASSWORD}
PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
PAPERLESS_URL: ${PAPERLESS_URL:-https://paperless.example.com}
PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE:-Etc/UTC}
PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE:-eng}
PAPERLESS_OCR_LANGUAGES: ${PAPERLESS_OCR_LANGUAGES:-eng}
PAPERLESS_ACCOUNT_ALLOW_SIGNUPS: "false"
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
healthcheck:
test: ["CMD-SHELL", "curl --fail --silent --output /dev/null http://127.0.0.1:8000/"]
interval: 30s
timeout: 10s
retries: 10
start_period: 90s
security_opt:
- no-new-privileges:true
stop_grace_period: 60s
database:
image: postgres:18-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${PAPERLESS_DB_NAME:-paperless}
POSTGRES_USER: ${PAPERLESS_DB_USER:-paperless}
POSTGRES_PASSWORD: ${PAPERLESS_DB_PASSWORD}
POSTGRES_INITDB_ARGS: "--data-checksums"
volumes:
- paperless-database:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${PAPERLESS_DB_USER:-paperless} -d ${PAPERLESS_DB_NAME:-paperless}"]
interval: 10s
timeout: 5s
retries: 10
security_opt:
- no-new-privileges:true
stop_grace_period: 60s
broker:
image: valkey/valkey:9-alpine
restart: unless-stopped
volumes:
- paperless-broker:/data
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
interval: 10s
timeout: 5s
retries: 10
security_opt:
- no-new-privileges:true
volumes:
paperless-data:
name: ${PAPERLESS_DATA_VOLUME:-paperless-data}
paperless-media:
name: ${PAPERLESS_MEDIA_VOLUME:-paperless-media}
paperless-export:
name: ${PAPERLESS_EXPORT_VOLUME:-paperless-export}
paperless-consume:
name: ${PAPERLESS_CONSUME_VOLUME:-paperless-consume}
paperless-database:
name: ${PAPERLESS_DB_VOLUME:-paperless-database}
paperless-broker:
name: ${PAPERLESS_BROKER_VOLUME:-paperless-broker}