name: Install Python dependencies
run: |
pipenv --python ${{ steps.setup-python.outputs.python-version }} sync --dev
+ -
+ name: Patch whitenoise
+ run: |
+ curl --fail --silent --show-error --location --output 484.patch https://github.com/evansd/whitenoise/pull/484.patch
+ patch -d $(pipenv --venv)/lib/python3.10/site-packages --verbose -p2 < 484.patch
+ rm 484.patch
-
name: Install system dependencies
run: |
&& python3 -m pip install --no-cache-dir --upgrade wheel \
&& echo "Installing Python requirements" \
&& python3 -m pip install --default-timeout=1000 --requirement requirements.txt \
+ && echo "Patching whitenoise for compression speedup" \
+ && curl --fail --silent --show-error --location --output 484.patch https://github.com/evansd/whitenoise/pull/484.patch \
+ && patch -d /usr/local/lib/python3.11/site-packages --verbose -p2 < 484.patch \
+ && rm 484.patch \
&& echo "Installing NLTK data" \
&& python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" snowball_data \
&& python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" stopwords \
&& truncate --size 0 /var/log/*log
# copy backend
-COPY ./src ./
+COPY --chown=1000:1000 ./src ./
# copy frontend
-COPY --from=compile-frontend /src/src/documents/static/frontend/ ./documents/static/frontend/
+COPY --from=compile-frontend --chown=1000:1000 /src/src/documents/static/frontend/ ./documents/static/frontend/
# add users, setup scripts
# Mount the compiled frontend to expected location
&& mkdir --parents --verbose /usr/src/paperless/consume \
&& mkdir --parents --verbose /usr/src/paperless/export \
&& echo "Adjusting all permissions" \
- && chown --recursive paperless:paperless /usr/src/paperless \
+ && chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless \
&& echo "Collecting static files" \
&& gosu paperless python3 manage.py collectstatic --clear --no-input --link \
&& gosu paperless python3 manage.py compilemessages
import tempfile
from os import PathLike
from pathlib import Path
+from platform import machine
from typing import Final
from typing import Optional
from typing import Union
STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", BASE_URL + "static/")
WHITENOISE_STATIC_PREFIX = "/static/"
+if machine().lower() == "aarch64": # pragma: no cover
+ _static_backend = "django.contrib.staticfiles.storage.StaticFilesStorage"
+else:
+ _static_backend = "whitenoise.storage.CompressedStaticFilesStorage"
+
+STORAGES = {
+ "staticfiles": {
+ "BACKEND": _static_backend,
+ },
+}
+
_CELERY_REDIS_URL, _CHANNELS_REDIS_URL = _parse_redis_url(
os.getenv("PAPERLESS_REDIS", None),
)