From f29cc1130162f2050789eb5893cfd166f9a001c2 Mon Sep 17 00:00:00 2001 From: hcornet Date: Sat, 7 Dec 2024 16:25:27 +0100 Subject: [PATCH] first sync --- .env | 2 +- docker-compose.env | 61 +++++++++ docker-compose.yml | 137 ++++++++++++++++---- export.sh | 2 + install-docker.sh => install-docker copy.sh | 0 5 files changed, 176 insertions(+), 26 deletions(-) create mode 100644 docker-compose.env create mode 100644 export.sh rename install-docker.sh => install-docker copy.sh (100%) diff --git a/.env b/.env index 630b323..0bd5be6 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -# Template \ No newline at end of file +COMPOSE_PROJECT_NAME=paperless diff --git a/docker-compose.env b/docker-compose.env new file mode 100644 index 0000000..a1d3628 --- /dev/null +++ b/docker-compose.env @@ -0,0 +1,61 @@ +# 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=1000 +USERMAP_GID=1000 + +# 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&suite=buster +# for available languages. +PAPERLESS_OCR_LANGUAGES=eng+fra + +############################################################################### +# Paperless-specific settings # +############################################################################### + +# All settings defined in the paperless.conf.example can be used here. The +# Docker setup does not use the configuration file. +# 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.tips-of-mine.com + +# Adjust this key if you plan to make paperless available publicly. It should +# be a very long sequence of random characters. You don't need to remember it. +#PAPERLESS_SECRET_KEY=change-me + +# Use this variable to set a timezone for the Paperless Docker containers. If not specified, defaults to UTC. +PAPERLESS_TIME_ZONE=Europe/Paris + +# The default language to use for OCR. Set this to the language most of your +# documents are written in. +PAPERLESS_OCR_LANGUAGE=eng+fra + +# Set if accessing paperless via a domain subpath e.g. https://domain.com/PATHPREFIX and using a reverse-proxy like traefik or nginx +#PAPERLESS_FORCE_SCRIPT_NAME=/PATHPREFIX +#PAPERLESS_STATIC_URL=/PATHPREFIX/static/ # trailing slash required + +# +PAPERLESS_EMAIL_HOST=paperless-msmtpd +PAPERLESS_EMAIL_PORT=2500 +PAPERLESS_EMAIL_HOST_USER=. +PAPERLESS_EMAIL_FROM=hostinfo@tips-of-mine.fr +PAPERLESS_EMAIL_HOST_PASSWORD=. +PAPERLESS_EMAIL_USE_TLS=false +PAPERLESS_EMAIL_USE_SSL=false + +PAPERLESS_CONSUMPTION_DIR=/usr/src/paperless/consume +PAPERLESS_CONSUMER_RECURSIVE=1 +PAPERLESS_CONSUMER_POLLING=1 +PAPERLESS_CONSUMER_POLLING=10 +PAPERLESS_CONSUMER_DELETE_DUPLICATES=true +PAPERLESS_CONSUMER_RECURSIVE=true + +PAPERLESS_TASK_WORKERS=4 +PAPERLESS_THREADS_PER_WORKER=2 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 4054566..303bce8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,41 +2,128 @@ networks: traefik_front_network: external: true - back_network_: + back_network_paperless: driver: bridge attachable: true #### SERVICES services: -### hello_world - hello_world: - container_name: gitea-app - hostname: gitea-app - image: hello-world - environment: - restart: always - networks: -# - back_network_gitea - - traefik_front_network +### + broker: + container_name: paperless-broker + hostname: paperless-broker + image: docker.io/library/redis:7 + restart: unless-stopped volumes: + - ./redisdata:/data + networks: + - back_network_paperless + +### postgres + db: + container_name: paperless-postgres + hostname: paperless-postgres + image: docker.io/library/postgres:16 + restart: unless-stopped + volumes: + - ./pgdata:/var/lib/postgresql/data + networks: + - back_network_paperless + environment: + PGDATA: /var/lib/postgresql/data/paperless + POSTGRES_DB: paperless + POSTGRES_USER: paperless + POSTGRES_PASSWORD: paperless + +### paperless-ngx + webserver: + container_name: paperless-app + hostname: paperless-app + image: ghcr.io/paperless-ngx/paperless-ngx:latest + restart: unless-stopped + depends_on: + - db + - broker + - gotenberg + - tika + volumes: + - ./data:/usr/src/paperless/data + - ./media:/usr/src/paperless/media + - ./export:/usr/src/paperless/export + - ./consume:/usr/src/paperless/consume + env_file: docker-compose.env + networks: + - back_network_paperless + - traefik_front_network + environment: + PAPERLESS_REDIS: redis://broker:6379 + PAPERLESS_DBHOST: db + PAPERLESS_TIKA_ENABLED: 1 + PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 + PAPERLESS_TIKA_ENDPOINT: http://tika:9998 labels: - "traefik.enable=true" - "traefik.docker.network=traefik_front_network" # HTTP - - "traefik.http.routers.hello-world-http.rule=Host(`hello-world.tips-of-mine.com`)" - - "traefik.http.routers.hello-world-http.entrypoints=http" - - "traefik.http.routers.hello-world-http.priority=49" + - "traefik.http.routers.paperless-http.rule=Host(`paperless.tips-of-mine.com`)" + - "traefik.http.routers.paperless-http.entrypoints=http" # HTTPS - - "traefik.http.routers.hello-world-https.rule=Host(`hello-world.tips-of-mine.com`)" - - "traefik.http.routers.hello-world-https.entrypoints=https" - - "traefik.http.routers.hello-world-https.tls=true" - - "traefik.http.routers.hello-world-https.priority=50" - - "traefik.http.routers.gitea.service=gitea-https-service" + - "traefik.http.routers.paperless-https.rule=Host(`paperless.tips-of-mine.com`)" + - "traefik.http.routers.paperless-https.entrypoints=https" + - "traefik.http.routers.paperless-https.service=paperless-service" + - "traefik.http.routers.paperless-https.tls=true" # Middleware # Service -# - "traefik.http.services.gitea-https-service.loadbalancer.server.port=3000" -# - "traefik.http.services.gitea-https-service.loadbalancer.server.scheme=https" -# - "traefik.http.services.gitea-https-service.loadbalancer.healthcheck.hostname=gitea.traefik.me" -# - "traefik.http.services.gitea-https-service.loadbalancer.healthcheck.method=foobar" -# - "traefik.http.services.gitea-https-service.loadbalancer.healthcheck.timeout=10" -# - "traefik.http.services.gitea-https-service.loadbalancer.healthcheck.interval=30" + - "traefik.http.services.paperless-service.loadbalancer.server.port=8000" + +### + gotenberg: + container_name: paperless-gotenberg + hostname: paperless-gotenberg + image: docker.io/gotenberg/gotenberg:8.7 + restart: unless-stopped + networks: + - back_network_paperless + # 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: + container_name: paperless-tika + hostname: paperless-tika + image: docker.io/apache/tika:latest + restart: unless-stopped + networks: + - back_network_paperless + +### + msmtpd: + container_name: paperless-msmtpd + hostname: paperless-msmtpd + image: crazymax/msmtpd:latest + networks: + - back_network_paperless + environment: + - "TZ=Europe/Paris" + - "PUID=1500" + - "PGID=1500" + - "SMTP_HOST=10.0.4.52" + - "SMTP_PORT=587" + - "SMTP_TLS=on" + - "SMTP_STARTTLS=on" + - "SMTP_TLS_CHECKCERT=off" + - "SMTP_AUTH=on" + - "SMTP_USER=hostinfo@tips-of-mine.fr" + - "SMTP_PASSWORD=P@ssw0rd!12345+" + - "SMTP_DOMAIN=localhost" + - "SMTP_FROM=hostinfo@tips-of-mine.fr" + restart: always + healthcheck: + test: ["CMD-SHELL", "echo EHLO localhost"] + interval: 5s + timeout: 5s + retries: 5 diff --git a/export.sh b/export.sh new file mode 100644 index 0000000..ac97c5c --- /dev/null +++ b/export.sh @@ -0,0 +1,2 @@ +#!/bin/sh +docker compose exec -T webserver document_exporter ../export \ No newline at end of file diff --git a/install-docker.sh b/install-docker copy.sh similarity index 100% rename from install-docker.sh rename to install-docker copy.sh