From 84d4f44a701cdcd980b92b7e601da654249fc3f4 Mon Sep 17 00:00:00 2001 From: Phil Date: Thu, 7 Nov 2024 09:29:59 -0700 Subject: [PATCH] added paperlessngx to stack --- dns.yml | 2 + roles/docker/files/Caddyfile | 4 ++ roles/docker/tasks/main.yml | 6 ++- roles/docker/tasks/paperlessngx.yml | 26 ++++++++++ .../templates/paperlessngx-compose.yml.j2 | 50 +++++++++++++++++++ roles/docker/templates/paperlessngx.env.j2 | 42 ++++++++++++++++ 6 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 roles/docker/tasks/paperlessngx.yml create mode 100644 roles/docker/templates/paperlessngx-compose.yml.j2 create mode 100644 roles/docker/templates/paperlessngx.env.j2 diff --git a/dns.yml b/dns.yml index 8575e04..f13e243 100644 --- a/dns.yml +++ b/dns.yml @@ -21,6 +21,8 @@ ip: "152.53.36.98" - name: "books" ip: "152.53.36.98" + - name: "paper" + ip: "152.53.36.98" tasks: - name: Add A records for subdomains diff --git a/roles/docker/files/Caddyfile b/roles/docker/files/Caddyfile index f429b81..9f02369 100644 --- a/roles/docker/files/Caddyfile +++ b/roles/docker/files/Caddyfile @@ -2,6 +2,10 @@ auth.thesatelliteoflove.com { reverse_proxy authentik-server-1:9000 } +paper.thesatelliteoflove.com { + reverse_proxy paperlessngx-webserver-1:8000 +} + pin.thesatelliteoflove.com { reverse_proxy pinry-pinry-1:80 } diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 5e707a2..9ba7e3a 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -116,4 +116,8 @@ - name: Install calibre import_tasks: calibre.yml - tags: calibre \ No newline at end of file + tags: calibre + +- name: Install paperlessngx + import_tasks: paperlessngx.yml + tags: paperlessngx \ No newline at end of file diff --git a/roles/docker/tasks/paperlessngx.yml b/roles/docker/tasks/paperlessngx.yml new file mode 100644 index 0000000..66394ef --- /dev/null +++ b/roles/docker/tasks/paperlessngx.yml @@ -0,0 +1,26 @@ +- name: make paperlessngx directories + ansible.builtin.file: + path: "{{ item}}" + state: directory + loop: + - /opt/stacks/paperlessngx + +- name: Template out the compose file + ansible.builtin.template: + src: paperlessngx-compose.yml.j2 + dest: /opt/stacks/paperlessngx/compose.yml + owner: root + mode: 644 + +- name: Template out the .env file + ansible.builtin.template: + src: paperlessngx.env.j2 + dest: /opt/stacks/paperlessngx/docker-compose.env + owner: root + mode: 644 + +- name: deploy paperlessngx stack + community.docker.docker_compose_v2: + project_src: /opt/stacks/paperlessngx + files: + - compose.yml \ No newline at end of file diff --git a/roles/docker/templates/paperlessngx-compose.yml.j2 b/roles/docker/templates/paperlessngx-compose.yml.j2 new file mode 100644 index 0000000..50702ae --- /dev/null +++ b/roles/docker/templates/paperlessngx-compose.yml.j2 @@ -0,0 +1,50 @@ +services: + broker: + image: docker.io/library/redis:7 + restart: unless-stopped + volumes: + - redisdata:/data + + webserver: + image: ghcr.io/paperless-ngx/paperless-ngx:latest + restart: unless-stopped + depends_on: + - 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 + environment: + PAPERLESS_REDIS: redis://broker:6379 + 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 + + # 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 + +volumes: + data: + media: + redisdata: + +networks: + default: + external: true + name: lava \ No newline at end of file diff --git a/roles/docker/templates/paperlessngx.env.j2 b/roles/docker/templates/paperlessngx.env.j2 new file mode 100644 index 0000000..8193b64 --- /dev/null +++ b/roles/docker/templates/paperlessngx.env.j2 @@ -0,0 +1,42 @@ +# 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=tur ces + +############################################################################### +# 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://paper.thesatelliteoflove.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={{ paperlessngx_secret }} + +# Use this variable to set a timezone for the Paperless Docker containers. If not specified, defaults to UTC. +PAPERLESS_TIME_ZONE=America/Denver + +# The default language to use for OCR. Set this to the language most of your +# documents are written in. +#PAPERLESS_OCR_LANGUAGE=eng + +# 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 \ No newline at end of file