From 9d84e957714fd11e8335737650e2c80c6f943ad8 Mon Sep 17 00:00:00 2001
From: Henrik Gerdes <hegerdes@outlook.de>
Date: Thu, 1 Feb 2024 21:42:23 +0100
Subject: [PATCH] feat: add env allowing paperless to run in read_only
 filesystem (#5596)

---
 docker/paperless_cmd.sh | 5 +++--
 docs/configuration.md   | 6 ++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/docker/paperless_cmd.sh b/docker/paperless_cmd.sh
index 81a7c6334..afedb1599 100755
--- a/docker/paperless_cmd.sh
+++ b/docker/paperless_cmd.sh
@@ -1,14 +1,15 @@
 #!/usr/bin/env bash
 
+SUPERVISORD_WORKING_DIR="${PAPERLESS_SUPERVISORD_WORKING_DIR:-$PWD}"
 rootless_args=()
 if [ "$(id -u)" == "$(id -u paperless)" ]; then
 	rootless_args=(
 		--user
 		paperless
 		--logfile
-		supervisord.log
+		"${SUPERVISORD_WORKING_DIR}/supervisord.log"
 		--pidfile
-		supervisord.pid
+		"${SUPERVISORD_WORKING_DIR}/supervisord.pid"
 	)
 fi
 
diff --git a/docs/configuration.md b/docs/configuration.md
index be363c269..6dc341346 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -1341,6 +1341,12 @@ started by the container.
 
     You can read more about this in the [advanced documentation](advanced_usage.md#celery-monitoring).
 
+#### [`PAPERLESS_SUPERVISORD_WORKING_DIR=<defined>`](#PAPERLESS_SUPERVISORD_WORKING_DIR) {#PAPERLESS_SUPERVISORD_WORKING_DIR}
+
+: If this environment variable is defined, the `supervisord.log` and `supervisord.pid` file will be created under the specified path in `PAPERLESS_SUPERVISORD_WORKING_DIR`. Setting `PAPERLESS_SUPERVISORD_WORKING_DIR=/tmp` and `PYTHONPYCACHEPREFIX=/tmp/pycache` would allow paperless to work on a read-only filesystem.
+
+    Please take note that the `PAPERLESS_DATA_DIR` and `PAPERLESS_MEDIA_ROOT` paths still have to be writable, just like the `PAPERLESS_SUPERVISORD_WORKING_DIR`. The can be archived by using bind or volume mounts. Only works in the container is run as user *paperless*
+
 ## Frontend Settings
 
 #### [`PAPERLESS_APP_TITLE=<bool>`](#PAPERLESS_APP_TITLE) {#PAPERLESS_APP_TITLE}