diff --git a/docker-compose.env b/docker-compose.env new file mode 100644 index 0000000..b9e6084 --- /dev/null +++ b/docker-compose.env @@ -0,0 +1,37 @@ +############################################################################### +# Paperless-ngx settings # +############################################################################### + +# See http://docs.paperless-ngx.com/configuration/ for all available options. + +# The UID and GID of the user used to run paperless in the container. Set this +# to your UID and GID on the host so that you have write access to the +# consumption directory. +USERMAP_UID=1026 +USERMAP_GID=100 + +# See the documentation linked above for all options. A few commonly adjusted settings +# are provided below. + +# This is required if you will be exposing Paperless-ngx on a public domain +# (if doing so please consider security measures such as reverse proxy) +PAPERLESS_URL=https://paperless.sda.zone + +# Required. A unique secret key for session tokens and signing. +# Generate with: python3 -c "import secrets; print(secrets.token_urlsafe(64))" +PAPERLESS_SECRET_KEY=C@ptn&mo + +# Use this variable to set a timezone for the Paperless Docker containers. Defaults to UTC. +#PAPERLESS_TIME_ZONE=America/Los_Angeles + +# The default language to use for OCR. Set this to the language most of your +# documents are written in. +PAPERLESS_OCR_LANGUAGE=fre + +# Additional languages to install for text recognition, separated by a whitespace. +# Note that this is different from PAPERLESS_OCR_LANGUAGE (default=eng), which defines +# the language used for OCR. +# The container installs English, German, Italian, Spanish and French by default. +# See https://packages.debian.org/search?keywords=tesseract-ocr-&searchon=names +# for available languages. +#PAPERLESS_OCR_LANGUAGES=tur ces \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ae65475..a7d8e52 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,67 +1,83 @@ +# 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, PowerPoint 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 up -d'. +# +# For more extensive installation and update instructions, refer to the +# documentation. services: - redis: - image: redis:7 - command: - - /bin/sh - - -c - - redis-server --requirepass redispass - container_name: PaperlessNGX-REDIS - hostname: paper-redis - mem_limit: 512m - mem_reservation: 256m - cpu_shares: 768 - security_opt: - - no-new-privileges:true - read_only: true - healthcheck: - test: ["CMD-SHELL", "redis-cli ping || exit 1"] + broker: + image: docker.io/library/redis:8 + restart: unless-stopped volumes: - - /var/lib/docker/volumes/paperlessngx/redis:/data:rw - environment: - TZ: Europe/Paris - restart: on-failure:5 - + - redisdata:/data db: - image: postgres:17 - container_name: PaperlessNGX-DB - hostname: paper-db - mem_limit: 1g - cpu_shares: 768 - security_opt: - - no-new-privileges:true - healthcheck: - test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"] - timeout: 45s - interval: 10s - retries: 10 + image: docker.io/library/postgres:18 + restart: unless-stopped volumes: - - /var/lib/docker/volumes/paperlessngx/db:/var/lib/postgresql/data:rw + - pgdata:/var/lib/postgresql environment: POSTGRES_DB: paperless - POSTGRES_USER: paperlessuser - POSTGRES_PASSWORD: paperlesspass - restart: on-failure:5 - + POSTGRES_USER: paperless + POSTGRES_PASSWORD: paperless + webserver: + image: ghcr.io/paperless-ngx/paperless-ngx:latest + restart: unless-stopped + depends_on: + - db + - broker + - gotenberg + - tika + ports: + - "8000:8000" + volumes: + - data:/usr/src/paperless/data + - media:/usr/src/paperless/media + - /volume1/Datas/_ToPaperless/Export:/usr/src/paperless/export + - /volume1/Datas/_ToPaperless/Consume:/usr/src/paperless/consume + env_file: docker-compose.env + environment: + PAPERLESS_REDIS: redis://broker:6379 + PAPERLESS_DBHOST: db + PAPERLESS_DBENGINE: postgresql + PAPERLESS_TIKA_ENABLED: 1 + PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 + PAPERLESS_TIKA_ENDPOINT: http://tika:9998 gotenberg: - image: gotenberg/gotenberg:latest - container_name: PaperlessNGX-GOTENBERG - hostname: gotenberg - security_opt: - - no-new-privileges:true + image: docker.io/gotenberg/gotenberg:8.27 + restart: unless-stopped + # 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/.*" - restart: on-failure:5 - tika: - image: ghcr.io/paperless-ngx/tika:latest - container_name: PaperlessNGX-TIKA - hostname: tika - security_opt: - - no-new-privileges:true - restart: on-failure:5 - + image: docker.io/apache/tika:latest + restart: unless-stopped paperlessngx-ai: image: clusterzx/paperless-ai container_name: PaperlessNGX-AI @@ -72,62 +88,13 @@ services: retries: 3 start_period: 90s volumes: - - /var/lib/docker/volumes/paperlessngxai:/app/data:rw + - paperlessngxai:/app/data:rw ports: - - 3747:3000 + - "3747:3000" restart: on-failure:5 - - paperless: - image: ghcr.io/paperless-ngx/paperless-ngx:latest - container_name: PaperlessNGX - hostname: paperless-ngx - mem_limit: 6g - cpu_shares: 1024 - security_opt: - - no-new-privileges:true - healthcheck: - test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"] - interval: 30s - timeout: 10s - retries: 5 - ports: - - 8777:8000 - volumes: - - /var/lib/docker/volumes/paperlessngx/data:/usr/src/paperless/data:rw - - /var/lib/docker/volumes/paperlessngx/media:/usr/src/paperless/media:rw - - /var/lib/docker/volumes/paperlessngx/export:/usr/src/paperless/export:rw - - /network/Datas/_ToConsume:/usr/src/paperless/consume:rw - - /var/lib/docker/volumes/paperlessngx/trash:/usr/src/paperless/trash:rw - environment: - PAPERLESS_REDIS: redis://:redispass@paper-redis:6379 - PAPERLESS_DBENGINE: postgresql - PAPERLESS_DBHOST: paper-db - PAPERLESS_DBNAME: paperless - PAPERLESS_DBUSER: paperlessuser - PAPERLESS_DBPASS: paperlesspass - PAPERLESS_EMPTY_TRASH_DIR: ../trash - PAPERLESS_FILENAME_FORMAT: '{{ created_year }}/{{ correspondent }}/{{ document_type }}/{{ title }}' - PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD: 6 - PAPERLESS_TASK_WORKERS: 1 - PAPERLESS_CONSUMER_POLLING: 60 - PAPERLESS_TIME_ZONE: Europe/Paris - PAPERLESS_ADMIN_USER: thedarty - PAPERLESS_ADMIN_PASSWORD: St&ph@ne10Nove.@1976 - PAPERLESS_URL: http://paperlessngx-dev.maison - PAPERLESS_CSRF_TRUSTED_ORIGINS: http://paperlessngx-dev.maison - PAPERLESS_OCR_LANGUAGE: fra+eng - PAPERLESS_TIKA_ENABLED: 1 - PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 - PAPERLESS_TIKA_ENDPOINT: http://tika:9998 - restart: on-failure:5 - depends_on: - db: - condition: service_healthy - redis: - condition: service_healthy - tika: - condition: service_started - gotenberg: - condition: service_started - paperlessngx-ai: - condition: service_started \ No newline at end of file +volumes: + data: + media: + pgdata: + redisdata: + paperlessngxai: \ No newline at end of file