Skip to content

Commit 753522d

Browse files
authored
Merge pull request #32 from compgeniuses/dev-1
Updates to Paperless NGX and its Dependecies
2 parents 61d5d5e + 857f233 commit 753522d

File tree

8 files changed

+629
-556
lines changed

8 files changed

+629
-556
lines changed

build-images.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ images=()
1414
repobase="${REPOBASE:-ghcr.io/compgeniuses}"
1515
# Configure the image name
1616
reponame="paperlessngx"
17-
paperless_version="2.4.2"
18-
17+
paperless_version="2.11.4"
18+
gotenberg_version="8.9.1"
19+
tika_version="3.0.0.0-BETA2-full"
1920
# Create a new empty container image
2021
container=$(buildah from scratch)
2122

@@ -40,7 +41,7 @@ buildah config --entrypoint=/ \
4041
--label="org.nethserver.authorizations=traefik@node:routeadm" \
4142
--label="org.nethserver.tcp-ports-demand=1" \
4243
--label="org.nethserver.rootfull=0" \
43-
--label="org.nethserver.images=docker.io/library/redis:7.2.3-bookworm docker.io/library/postgres:15.5-bookworm docker.io/paperlessngx/paperless-ngx:${paperless_version} ghcr.io/paperless-ngx/tika:2.9.0-full docker.io/gotenberg/gotenberg:7.10.2" \
44+
--label="org.nethserver.images=docker.io/library/redis:7.2.3-bookworm docker.io/library/postgres:15.5-bookworm docker.io/paperlessngx/paperless-ngx:${paperless_version} docker.io/apache/tika:${tika_version} docker.io/gotenberg/gotenberg:${gotenberg_version}" \
4445
--label="org.nethserver.tcp-ports-demand=1" \
4546
"${container}"
4647
# Commit the image

imageroot/actions/configure-module/20configure

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,22 @@ import json
99
import sys
1010
# agent is a NethServer library which provides function to communicate with the agent
1111
import agent
12-
12+
rdb = agent.redis_connect(use_replica=True)
13+
smtp_settings = agent.get_smarthost_settings(rdb)
1314
data = json.load(sys.stdin)
14-
15+
# PAPERLESS_EMAIL_HOST=<str>
16+
# Defaults to 'localhost'.
17+
# PAPERLESS_EMAIL_PORT=<int>
18+
# Defaults to port 25.
19+
# PAPERLESS_EMAIL_HOST_USER=<str>
20+
# Defaults to ''.
21+
# PAPERLESS_EMAIL_FROM=<str>
22+
# Defaults to PAPERLESS_EMAIL_HOST_USER if not set.
23+
# PAPERLESS_EMAIL_HOST_PASSWORD=<str>
24+
# Defaults to ''.
25+
# PAPERLESS_EMAIL_USE_TLS=<bool>
26+
# Defaults to false.
27+
# PAPERLESS_EMAIL_USE_SSL=<bool>
1528
# Setup default values
1629
paperless_name = data.get("paperless_name","paperless-ngx")
1730
PAPERLESS_ADMIN_USER = data.get("PAPERLESS_ADMIN_USER","paperlessadmin")
@@ -21,52 +34,47 @@ PAPERLESS_TIME_ZONE = data.get("PAPERLESS_TIME_ZONE","America/Los_Angeles")
2134
PAPERLESS_OCR_LANGUAGE = data.get("PAPERLESS_OCR_LANGUAGE","eng")
2235
PAPERLESS_COOKIE_PREFIX = data.get("PAPERLESS_COOKIE_PREFIX","paperlessngx")
2336
PAPERLESS_FILENAME_FORMAT = data.get("PAPERLESS_FILENAME_FORMAT","{created_year}/{correspondent}/{doc_pk}-{title}")
24-
37+
# Email Settings
38+
PAPERLESS_EMAIL_HOST = smtp_settings['host']
39+
PAPERLESS_EMAIL_PORT = smtp_settings['port']
40+
PAPERLESS_EMAIL_HOST_USER = smtp_settings['username']
41+
PAPERLESS_EMAIL_FROM = smtp_settings['username']
42+
PAPERLESS_EMAIL_HOST_PASSWORD = smtp_settings['password']
43+
PAPERLESS_EMAIL_USE_TLS = 'true' if smtp_settings['tls_verify'] else 'false'
44+
PAPERLESS_EMAIL_USE_SSL = 'false' if smtp_settings['tls_verify'] else 'true'
2545
# PAperless CSRF settings
2646
host = data.get("host", "")
2747
PAPERLESS_URL = "https://"+host
2848

49+
paperless_config = {
50+
"PAPERLESS_NGX_NAME": paperless_name,
51+
"PAPERLESS_TIME_ZONE": PAPERLESS_TIME_ZONE,
52+
"PAPERLESS_OCR_LANGUAGE": PAPERLESS_OCR_LANGUAGE,
53+
"PAPERLESS_COOKIE_PREFIX": PAPERLESS_COOKIE_PREFIX,
54+
"PAPERLESS_ADMIN_USER": PAPERLESS_ADMIN_USER,
55+
"PAPERLESS_ADMIN_PASSWORD": PAPERLESS_ADMIN_PASSWORD,
56+
"PAPERLESS_ADMIN_MAIL": PAPERLESS_ADMIN_MAIL,
57+
"PAPERLESS_FILENAME_FORMAT": PAPERLESS_FILENAME_FORMAT,
58+
"PAPERLESS_URL": PAPERLESS_URL,
59+
"PAPERLESS_TIKA_ENABLED": "1",
60+
"PAPERLESS_TIKA_GOTENBERG_ENDPOINT": "http://127.0.0.1:3000",
61+
"PAPERLESS_TIKA_ENDPOINT": "http://127.0.0.1:9998",
62+
"PAPERLESS_EMAIL_HOST": PAPERLESS_EMAIL_HOST,
63+
"PAPERLESS_EMAIL_PORT": PAPERLESS_EMAIL_PORT,
64+
"PAPERLESS_EMAIL_HOST_USER": PAPERLESS_EMAIL_HOST_USER,
65+
"PAPERLESS_EMAIL_FROM": PAPERLESS_EMAIL_FROM,
66+
"PAPERLESS_EMAIL_HOST_PASSWORD": PAPERLESS_EMAIL_HOST_PASSWORD,
67+
"PAPERLESS_EMAIL_USE_TLS": PAPERLESS_EMAIL_USE_TLS,
68+
"PAPERLESS_EMAIL_USE_SSL": PAPERLESS_EMAIL_USE_SSL,
2969

30-
# Db Config
31-
32-
POSTGRES_DB = data.get("POSTGRES_DB","paperless")
33-
POSTGRES_USER = data.get("POSTGRES_USER","paperless")
34-
POSTGRES_PASSWORD = data.get("POSTGRES_PASSWORD","p@perle$$")
35-
36-
db_config = {
37-
38-
"POSTGRES_ROOT_HOST": "localhost",
39-
"POSTGRES_DATABASE": POSTGRES_DB,
40-
"POSTGRES_USER": POSTGRES_USER,
41-
"POSTGRES_PASSWORD": POSTGRES_PASSWORD,
42-
4370
}
44-
agent.write_envfile('database.env', db_config)
45-
46-
# Talk with agent using file descriptor.
47-
48-
# Setup configuration from user input.
49-
agent.set_env("PAPERLESS_NGX_NAME", paperless_name)
50-
agent.set_env("PAPERLESS_TIME_ZONE", PAPERLESS_TIME_ZONE)
51-
agent.set_env("PAPERLESS_OCR_LANGUAGE", PAPERLESS_OCR_LANGUAGE)
52-
agent.set_env("PAPERLESS_COOKIE_PREFIX", PAPERLESS_COOKIE_PREFIX)
53-
agent.set_env("PAPERLESS_ADMIN_USER", PAPERLESS_ADMIN_USER)
54-
agent.set_env("PAPERLESS_ADMIN_PASSWORD", PAPERLESS_ADMIN_PASSWORD)
55-
agent.set_env("PAPERLESS_ADMIN_MAIL", PAPERLESS_ADMIN_MAIL)
56-
agent.set_env("PAPERLESS_FILENAME_FORMAT", PAPERLESS_FILENAME_FORMAT)
5771

58-
#paperless CSRF settings
59-
agent.set_env("PAPERLESS_URL", PAPERLESS_URL)
72+
agent.write_envfile('paperless-ngx.env', paperless_config)
6073

61-
# Setup tika and gotenberg configuration from user input.
62-
agent.set_env("PAPERLESS_TIKA_ENABLED", "1")
63-
agent.set_env("PAPERLESS_TIKA_GOTENBERG_ENDPOINT", "http://127.0.0.1:3000")
64-
agent.set_env("PAPERLESS_TIKA_ENDPOINT", "http://127.0.0.1:9998")
6574

6675
# Setup PHP with safe defaults
6776
agent.set_env("PHP_ENABLE_OPCACHE", "1")
6877
agent.set_env("PHP_MEMORY_LIMIT", "512M")
69-
# Configure Traefik to route "/paperlessngx" path requests to the paperlessngx service
7078

7179

7280
# Make sure everything is saved inside the environment file

imageroot/actions/create-module/20configure

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,36 @@ data = json.load(sys.stdin)
1717
random_key = secrets.token_hex(16)
1818
PAPERLESS_SECRET_KEY = data.get("PAPERLESS_SECRET_KEY",random_key)
1919

20-
# Talk with agent using file descriptor.
20+
# database Credentials
21+
def generate_random_password():
22+
return secrets.token_urlsafe(16)
2123

22-
agent.set_env("PAPERLESS_SECRET_KEY", PAPERLESS_SECRET_KEY)
24+
# Db Config
25+
26+
POSTGRES_DB = data.get("POSTGRES_DB","paperless")
27+
POSTGRES_USER = data.get("POSTGRES_USER","paperless")
28+
POSTGRES_PASSWORD = generate_random_password()
29+
30+
db_config = {
31+
"POSTGRES_DATABASE": POSTGRES_DB,
32+
"POSTGRES_USER": POSTGRES_USER,
33+
"POSTGRES_PASSWORD": POSTGRES_PASSWORD,
34+
}
35+
agent.write_envfile('database.env', db_config)
36+
37+
paperless_config = {
38+
"PAPERLESS_DBENGINE": "postgresql",
39+
"PAPERLESS_DBHOST": "paperless-pgsql",
40+
"PAPERLESS_DBNAME": POSTGRES_DB,
41+
"PAPERLESS_DBUSER": POSTGRES_USER,
42+
"PAPERLESS_DBPASS": POSTGRES_PASSWORD,
43+
}
44+
agent.write_envfile('paperless-db.env', paperless_config)
45+
46+
secret_key = {
47+
"PAPERLESS_SECRET_KEY": PAPERLESS_SECRET_KEY,
48+
}
49+
agent.write_envfile('secret_key.env', secret_key)
2350

2451
# Make sure everything is saved inside the environment file
2552
# just before starting systemd unit

imageroot/bin/discover-database

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env python3
2+
3+
#
4+
# Copyright (C) 2023 Nethesis S.r.l.
5+
# SPDX-License-Identifier: GPL-3.0-or-later
6+
#
7+
8+
import sys
9+
import agent
10+
import os
11+
12+
# Connect the local Redis replica. This is necessary to consistently start
13+
database = "paperless-db.env"
14+
# check if it exists
15+
# set the default values
16+
17+
if not os.path.exists(database):
18+
POSTGRES_DB = "paperless"
19+
POSTGRES_USER = "paperless"
20+
POSTGRES_PASSWORD = "p@perle$$"
21+
paperless_config = {
22+
"PAPERLESS_DBENGINE": "postgresql",
23+
"PAPERLESS_DBHOST": "paperless-pgsql",
24+
"PAPERLESS_DBNAME": POSTGRES_DB,
25+
"PAPERLESS_DBUSER": POSTGRES_USER,
26+
"PAPERLESS_DBPASS": POSTGRES_PASSWORD,
27+
}
28+
agent.write_envfile("paperless-db.env", paperless_config)
29+
30+
if not os.path.exists("secret_key.env"):
31+
PAPERLESS_SECRET_KEY = os.getenv("PAPERLESS_SECRET_KEY", "")
32+
secret_key = {
33+
"PAPERLESS_SECRET_KEY": PAPERLESS_SECRET_KEY,
34+
}
35+
agent.write_envfile("secret_key.env", secret_key)

imageroot/etc/state-include.conf

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@ volumes/paperlessngx-export
44
volumes/paperlessngx-consume
55
volumes/paperless-redis-data
66
state/paperless.pg_dump
7-
state/database.env
7+
state/database.env
8+
state/paperless-ngx.env
9+
state/paperless-db.env
10+
state/secret_key.env

imageroot/systemd/user/paperless-server.service

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ WorkingDirectory=%S/state
1919
Restart=always
2020
ExecStartPre=/bin/rm -f %t/ns8-paperless-ngx.pid %t/ns8-paperless-ngx.ctr-id
2121
ExecStartPre=/usr/local/bin/runagent discover-smarthost
22+
ExecStartPre=/usr/local/bin/runagent discover-database
2223
ExecStart=/usr/bin/podman run \
2324
--detach \
2425
--conmon-pidfile=%t/ns8-paperless-ngx.pid \
@@ -27,12 +28,9 @@ ExecStart=/usr/bin/podman run \
2728
--cgroups=no-conmon \
2829
--replace --name=%N \
2930
--env-file=smarthost.env \
30-
--env=PAPERLESS_* \
31-
--env=PAPERLESS_DBENGINE=postgresql \
32-
--env=PAPERLESS_DBHOST=127.0.0.1 \
33-
--env=PAPERLESS_DBNAME=${POSTGRES_DATABASE} \
34-
--env=PAPERLESS_DBUSER=${POSTGRES_USER} \
35-
--env=PAPERLESS_DBPASS=${POSTGRES_PASSWORD} \
31+
--env-file=%S/state/paperless-db.env \
32+
--env-file=%S/state/secret_key.env \
33+
--env-file=%S/state/paperless-ngx.env \
3634
--volume=paperlessngx-data:/usr/src/paperless/data \
3735
--volume=paperlessngx-media:/usr/src/paperless/media \
3836
--volume=paperlessngx-export:/usr/src/paperless/export \

ui/public/i18n/en/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
"enabled": "Enabled",
3434
"http_to_https": "http2https",
3535
"save": "Save",
36-
"test_field": "Test field"
36+
"test_field": "Test field",
37+
"instance_configuration": "Configuring {instance} instance"
3738
},
3839
"about": {
3940
"title": "About"

0 commit comments

Comments
 (0)