# Docker Compose file for running paperless from the docker container registry. # This file contains everything paperless needs to run. # Paperless supports amd64, arm and arm64 hardware. # # All compose files of paperless configure paperless in the following way: # # - Paperless is (re)started on system boot, if it was running before shutdown. # - Docker volumes for storing data are managed by Docker. # - Folders for importing and exporting files are created in the same directory # as this file and mounted to the correct folders inside the container. # - Paperless listens on port 8000. # # In addition to that, this Docker Compose file adds the following optional # configurations: # # - Instead of SQLite (default), PostgreSQL is used as the database server. # - Apache Tika and Gotenberg servers are started with paperless and paperless # is configured to use these services. These provide support for consuming # Office documents (Word, Excel, Power Point and their LibreOffice counter- # parts. # # To install and update paperless with this file, do the following: # # - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' # and '.env' into a folder. # - Run 'docker compose pull'. # - Run 'docker compose run --rm webserver createsuperuser' to create a user. # - Run 'docker compose up -d'. # # For more extensive installation and update instructions, refer to the # documentation. services: broker: image: docker.io/library/redis:7 restart: unless-stopped deploy: resources: limits: cpus: "0.5" memory: 256M reservations: cpus: "0.25" memory: 128M volumes: - redisdata:/data webserver: image: ghcr.io/paperless-ngx/paperless-ngx:latest restart: unless-stopped ports: - "15003:8000" # internal LAN access only (not proxied externally) deploy: resources: limits: cpus: "2.0" memory: 2G reservations: cpus: "1.0" memory: 1G labels: - "homepage.group=productivity" - "homepage.name=Paperless-ngx" - "homepage.icon=sh-paperless-ngx" - "homepage.href=https://paperless.nuclide.systems" - "homepage.instance.internal.href=http://192.168.1.40:15003" - "homepage.instance.public.href=https://paperless.nuclide.systems" - "homepage.widget.type=paperlessngx" - "homepage.widget.url=http://paperless-ngx-webserver-1:8000" volumes: - data:/usr/src/paperless/data - /mnt/pve/unas/media/documents/public/paperless-ngx/library:/usr/src/paperless/media - /mnt/pve/unas/media/documents/public/paperless-ngx/export:/usr/src/paperless/export - /mnt/pve/unas/media/documents/public/paperless-ngx/consume:/usr/src/paperless/consume environment: USERMAP_UID: ${USERMAP_UID} USERMAP_GID: ${USERMAP_GID} PAPERLESS_OCR_LANGUAGES: ${PAPERLESS_OCR_LANGUAGES} PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE} PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY} PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE} PAPERLESS_CONSUMER_DELETE_DUPLICATES: ${PAPERLESS_CONSUMER_DELETE_DUPLICATES} PAPERLESS_CONSUMER_POLLING: ${PAPERLESS_CONSUMER_POLLING} PAPERLESS_CONSUMER_INOTIFY_DELAY: ${PAPERLESS_CONSUMER_INOTIFY_DELAY} PAPERLESS_FILENAME_FORMAT: ${PAPERLESS_FILENAME_FORMAT} PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBHOST: 192.168.1.6 PAPERLESS_TIKA_ENABLED: 1 PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 PAPERLESS_TIKA_ENDPOINT: http://tika:9998 gotenberg: image: docker.io/gotenberg/gotenberg:8.7 restart: unless-stopped deploy: resources: limits: cpus: "1.0" memory: 1G reservations: cpus: "0.5" memory: 512M # The gotenberg chromium route is used to convert .eml files. We do not # want to allow external content like tracking pixels or even javascript. command: - gotenberg - --chromium-disable-javascript=true - --chromium-allow-list=file:///tmp/.* tika: image: docker.io/apache/tika:latest restart: unless-stopped deploy: resources: limits: cpus: "1.0" memory: 1G reservations: cpus: "0.5" memory: 512M volumes: data: null media: null redisdata: null networks: default: name: shared_backend external: true