mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-05-28 11:24:04 +02:00
Switch to paperless NGX
This commit is contained in:
13
paperless_ngx/CHANGELOG.md
Normal file
13
paperless_ngx/CHANGELOG.md
Normal file
@@ -0,0 +1,13 @@
|
||||
- Major : switch to paperless NGX
|
||||
- Add codenotary sign
|
||||
- Cleanup: config base folder changed to /config/addons_config (thanks @bruvv)
|
||||
- MultiOCR: in OCRLANG field use comma separated value. Ex: fra,deu (working)
|
||||
- Manual install pikepdf
|
||||
- New standardized logic for Dockerfile build and packages installation
|
||||
- Allow !secrets in config.yaml (see Home Assistant documentation)
|
||||
|
||||
## 1.5.0 (27-11-2021)
|
||||
|
||||
- Update to latest version from linuxserver/docker-paperless-ng
|
||||
- Add config.yaml configurable options (see readme)
|
||||
- Initial build
|
||||
108
paperless_ngx/Dockerfile
Normal file
108
paperless_ngx/Dockerfile
Normal file
@@ -0,0 +1,108 @@
|
||||
#============================#
|
||||
# ALEXBELGIUM'S DOCKERFILE #
|
||||
#============================#
|
||||
# _.------.
|
||||
# _.-` ('>.-`"""-.
|
||||
# '.--'` _'` _ .--.)
|
||||
# -' '-.-';` `
|
||||
# ' - _.' ``'--.
|
||||
# '---` .-'""`
|
||||
# /`
|
||||
#=== Home Assistant Addon ===#
|
||||
|
||||
#################
|
||||
# 1 Build Image #
|
||||
#################
|
||||
|
||||
ARG BUILD_FROM
|
||||
ARG BUILD_VERSION
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
##################
|
||||
# 2 Modify Image #
|
||||
##################
|
||||
|
||||
ENV PAPERLESS_DATA_DIR=/config/addons_config/paperless_ng
|
||||
# spellcheck disable=SC2015
|
||||
# hadolint ignore=SC2015
|
||||
RUN \
|
||||
#################
|
||||
# Correct image #
|
||||
#################
|
||||
# Allow UID and GID setting
|
||||
sed -i 's/bash/bashio/g' /etc/cont-init.d/10-adduser \
|
||||
&& sed -i 's/{PUID:-911}/(bashio::config "PUID")/g' /etc/cont-init.d/10-adduser \
|
||||
&& sed -i 's/{PGID:-911}/(bashio::config "PGID")/g' /etc/cont-init.d/10-adduser \
|
||||
# Change config location
|
||||
&& sed -i "s|/config|$PAPERLESS_DATA_DIR|g" /etc/cont-init.d/10-adduser \
|
||||
&& sed -i "s|/config|$PAPERLESS_DATA_DIR|g" /etc/cont-init.d/50-config
|
||||
|
||||
##################
|
||||
# 3 Install apps #
|
||||
##################
|
||||
|
||||
# Add rootfs
|
||||
COPY rootfs/ /
|
||||
|
||||
# Modules
|
||||
ARG MODULES="00-banner.sh 92-local_mounts.sh 92-smb_mounts.sh 90-config_yaml.sh"
|
||||
|
||||
# Automatic modules download
|
||||
RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \
|
||||
&& if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \
|
||||
&& mkdir -p /etc/cont-init.d \
|
||||
&& for scripts in $MODULES; do echo "$scripts" && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" && [ "$(sed -n '/\/bin/p;q' /etc/cont-init.d/"$scripts")" != "" ] || (echo "script failed to install $scripts" && exit 1); done \
|
||||
&& chmod -R 755 /etc/cont-init.d || printf '%s\n' "${MODULES}" >/MODULESFILE
|
||||
|
||||
# Manual apps
|
||||
ENV PACKAGES="yamllint \
|
||||
pip \
|
||||
libxml2-dev libxslt-dev python-dev libjpeg-dev zlib1g-dev python3-dev build-essential"
|
||||
|
||||
# Automatic apps & bashio
|
||||
RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \
|
||||
&& if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \
|
||||
&& curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \
|
||||
&& chmod 777 /automatic_packages.sh \
|
||||
&& eval /./automatic_packages.sh "${PACKAGES:-}" \
|
||||
&& rm /automatic_packages.sh || printf '%s\n' "${PACKAGES:-}" > /ENVFILE
|
||||
|
||||
################
|
||||
# 4 Entrypoint #
|
||||
################
|
||||
|
||||
#RUN chmod 777 /entrypoint.sh
|
||||
#WORKDIR /
|
||||
#ENTRYPOINT [ "/usr/bin/env" ]
|
||||
#CMD [ "/entrypoint.sh" ]
|
||||
#SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
############
|
||||
# 5 Labels #
|
||||
############
|
||||
|
||||
ARG BUILD_ARCH
|
||||
ARG BUILD_DATE
|
||||
ARG BUILD_DESCRIPTION
|
||||
ARG BUILD_NAME
|
||||
ARG BUILD_REF
|
||||
ARG BUILD_REPOSITORY
|
||||
ARG BUILD_VERSION
|
||||
LABEL \
|
||||
io.hass.name="${BUILD_NAME}" \
|
||||
io.hass.description="${BUILD_DESCRIPTION}" \
|
||||
io.hass.arch="${BUILD_ARCH}" \
|
||||
io.hass.type="addon" \
|
||||
io.hass.version=${BUILD_VERSION} \
|
||||
maintainer="alexbelgium (https://github.com/alexbelgium)" \
|
||||
org.opencontainers.image.title="${BUILD_NAME}" \
|
||||
org.opencontainers.image.description="${BUILD_DESCRIPTION}" \
|
||||
org.opencontainers.image.vendor="Home Assistant Add-ons" \
|
||||
org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \
|
||||
org.opencontainers.image.licenses="MIT" \
|
||||
org.opencontainers.image.url="https://github.com/alexbelgium" \
|
||||
org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \
|
||||
org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \
|
||||
org.opencontainers.image.created=${BUILD_DATE} \
|
||||
org.opencontainers.image.revision=${BUILD_REF} \
|
||||
org.opencontainers.image.version=${BUILD_VERSION}
|
||||
71
paperless_ngx/README.md
Normal file
71
paperless_ngx/README.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# Home assistant add-on: Paperless NGX
|
||||
|
||||
[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium)
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
[](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade)
|
||||
[](https://github.com/marketplace/actions/super-linter)
|
||||
[](https://github.com/alexbelgium/hassio-addons/actions/workflows/builder.yaml)
|
||||
|
||||
[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white
|
||||
|
||||
_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_
|
||||
|
||||
[](https://github.com/alexbelgium/hassio-addons/stargazers)
|
||||
|
||||
## About
|
||||
|
||||
[Paperless NGX](https://github.com/paperless-ngx/paperless-ngx) is a cross-platform free and open-source BitTorrent client.
|
||||
This addon is based on the docker image from [linuxserver.io](https://www.linuxserver.io/).
|
||||
|
||||
## Configuration
|
||||
|
||||
Options can be configured through two ways :
|
||||
|
||||
- Addon options
|
||||
|
||||
```yaml
|
||||
GUID: user
|
||||
GPID: user
|
||||
localdisks: sda1 #put the hardware name of your drive to mount separated by commas, or its label. Ex: sda1, sdb1, MYNAS...
|
||||
networkdisks: "<//SERVER/SHARE>" # list of smbv2/3 servers to mount (optional)
|
||||
cifsusername: "username" # smb username (optional)
|
||||
cifspassword: "password" # smb password (optional)
|
||||
CONFIG_LOCATION: Location of the config.yaml (see below)
|
||||
OCRLANG: fra,eng #Any language can be set from this page (always three letters) [here](https://tesseract-ocr.github.io/tessdoc/Data-Files#data-files-for-version-400-november-29-2016).
|
||||
TZ: Europe/Paris # Sets a specific timezone
|
||||
```
|
||||
|
||||
- Config.yaml
|
||||
|
||||
Custom env variables can be added to the config.yaml file referenced in the addon options. Full env variables can be found here : https://paperless-ngx.readthedocs.io/en/latest/configuration.html. It must be entered in a valid yaml format, that is verified at launch of the addon.
|
||||
|
||||
## Installation
|
||||
|
||||
The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on.
|
||||
|
||||
1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA)
|
||||
[](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons)
|
||||
1. Install this add-on.
|
||||
1. Click the `Save` button to store your configuration.
|
||||
1. Set the add-on options to your preferences
|
||||
1. Start the add-on.
|
||||
1. Check the logs of the add-on to see if everything went well.
|
||||
1. Open the webUI and adapt the software options
|
||||
|
||||
## Integration with HA
|
||||
|
||||
No specific integration, it is a self hosted system
|
||||
|
||||
## Support
|
||||
|
||||
Create an issue on github
|
||||
|
||||
## Illustration
|
||||
|
||||
---
|
||||
|
||||

|
||||
57
paperless_ngx/apparmor.txt
Normal file
57
paperless_ngx/apparmor.txt
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <tunables/global>
|
||||
|
||||
profile addon_db21ed7f_paperless_ngx flags=(attach_disconnected,mediate_deleted) {
|
||||
#include <abstractions/base>
|
||||
|
||||
capability,
|
||||
file,
|
||||
signal,
|
||||
mount,
|
||||
umount,
|
||||
remount,
|
||||
network udp,
|
||||
network tcp,
|
||||
network dgram,
|
||||
network stream,
|
||||
network inet,
|
||||
network inet6,
|
||||
network netlink raw,
|
||||
|
||||
capability setgid,
|
||||
capability setuid,
|
||||
capability sys_admin,
|
||||
capability dac_read_search,
|
||||
# capability dac_override,
|
||||
# capability sys_rawio,
|
||||
|
||||
# S6-Overlay
|
||||
/bin/** ix,
|
||||
/usr/bin/** ix,
|
||||
/usr/lib/bashio/** ix,
|
||||
/etc/s6/** rix,
|
||||
/run/s6/** rix,
|
||||
/etc/services.d/** rwix,
|
||||
/etc/cont-init.d/** rwix,
|
||||
/etc/cont-finish.d/** rwix,
|
||||
/init rix,
|
||||
/var/run/** mrwkl,
|
||||
/var/run/ mrwkl,
|
||||
/dev/i2c-1 mrwkl,
|
||||
# Files required
|
||||
/dev/sda1 mrwkl,
|
||||
/dev/sdb1 mrwkl,
|
||||
/dev/mmcblk0p1 mrwkl,
|
||||
/dev/ttyUSB0 mrwkl,
|
||||
/dev/* mrwkl,
|
||||
/tmp/** mrkwl,
|
||||
|
||||
# Data access
|
||||
/data/** rw,
|
||||
|
||||
# suppress ptrace denials when using 'docker ps' or using 'ps' inside a container
|
||||
ptrace (trace,read) peer=docker-default,
|
||||
|
||||
# docker daemon confinement requires explict allow rule for signal
|
||||
signal (receive) set=(kill,term) peer=/usr/bin/docker,
|
||||
|
||||
}
|
||||
10
paperless_ngx/build.json
Normal file
10
paperless_ngx/build.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"build_from": {
|
||||
"aarch64": "lscr.io/linuxserver/paperless-ngx:arm64v8-latest",
|
||||
"amd64": "lscr.io/linuxserver/paperless-ngx:amd64-latest",
|
||||
"armv7": "lscr.io/linuxserver/paperless-ngx:arm32v7-latest"
|
||||
},
|
||||
"codenotary": {
|
||||
"signer": "alexandrep.github@gmail.com"
|
||||
}
|
||||
}
|
||||
73
paperless_ngx/config.json
Normal file
73
paperless_ngx/config.json
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"apparmor": true,
|
||||
"arch": ["aarch64", "amd64", "armv7"],
|
||||
"boot": "auto",
|
||||
"codenotary": "alexandrep.github@gmail.com",
|
||||
"description": "scan, index and archive all your physical documents",
|
||||
"devices": [
|
||||
"/dev/sda",
|
||||
"/dev/sdb",
|
||||
"/dev/sdc",
|
||||
"/dev/sdd",
|
||||
"/dev/sde",
|
||||
"/dev/sdf",
|
||||
"/dev/sdg",
|
||||
"/dev/nvme",
|
||||
"/dev/mmcblk",
|
||||
"/dev/sda1",
|
||||
"/dev/sdb1",
|
||||
"/dev/sdc1",
|
||||
"/dev/sdd1",
|
||||
"/dev/sde1",
|
||||
"/dev/sdf1",
|
||||
"/dev/sdg1",
|
||||
"/dev/sda2",
|
||||
"/dev/sdb2",
|
||||
"/dev/sdc2",
|
||||
"/dev/sdd2",
|
||||
"/dev/sde2",
|
||||
"/dev/sdf2",
|
||||
"/dev/sdg2",
|
||||
"/dev/sda3",
|
||||
"/dev/sdb3",
|
||||
"/dev/sda4",
|
||||
"/dev/sdb4",
|
||||
"/dev/nvme0",
|
||||
"/dev/nvme1",
|
||||
"/dev/nvme2"
|
||||
],
|
||||
"environment": {
|
||||
"PGID": "0",
|
||||
"PUID": "0"
|
||||
},
|
||||
"map": ["config:rw", "share:rw", "media:rw", "config:rw"],
|
||||
"name": "Paperless NGX",
|
||||
"options": {
|
||||
"CONFIG_LOCATION": "/config/addons_config/paperless_ng/config.yaml",
|
||||
"PGID": 0,
|
||||
"PUID": 0
|
||||
},
|
||||
"ports": {
|
||||
"8000/tcp": 8011
|
||||
},
|
||||
"ports_description": {
|
||||
"8000/tcp": "web interface"
|
||||
},
|
||||
"privileged": ["SYS_ADMIN", "DAC_READ_SEARCH"],
|
||||
"schema": {
|
||||
"CONFIG_LOCATION": "str",
|
||||
"OCRLANG": "str?",
|
||||
"PGID": "int",
|
||||
"PUID": "int",
|
||||
"TZ": "str?",
|
||||
"cifspassword": "str?",
|
||||
"cifsusername": "str?",
|
||||
"localdisks": "str?",
|
||||
"networkdisks": "str?"
|
||||
},
|
||||
"slug": "paperless_ng",
|
||||
"upstream": "1.5.0",
|
||||
"url": "https://github.com/alexbelgium/hassio-addons",
|
||||
"version": "1.5.0-8",
|
||||
"webui": "http://[HOST]:[PORT:8000]"
|
||||
}
|
||||
BIN
paperless_ngx/icon.png
Normal file
BIN
paperless_ngx/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 100 KiB |
BIN
paperless_ngx/logo.png
Normal file
BIN
paperless_ngx/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 100 KiB |
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
# If dockerfile failed install manually
|
||||
|
||||
##############################
|
||||
# Automatic modules download #
|
||||
##############################
|
||||
if [ -e "/MODULESFILE" ]; then
|
||||
MODULES=$(</MODULESFILE)
|
||||
MODULES="${MODULES:-00-banner.sh}"
|
||||
echo "Executing modules script : $MODULES"
|
||||
|
||||
if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \
|
||||
&& if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \
|
||||
&& mkdir -p /etc/cont-init.d \
|
||||
&& for scripts in $MODULES; do echo "$scripts" && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" && [ "$(sed -n '/\/bin/p;q' /etc/cont-init.d/"$scripts")" != "" ] || (echo "script failed to install $scripts" && exit 1); done \
|
||||
&& chmod -R 755 /etc/cont-init.d
|
||||
fi
|
||||
|
||||
#######################
|
||||
# Automatic installer #
|
||||
#######################
|
||||
if [ -e "/ENVFILE" ]; then
|
||||
PACKAGES=$(</ENVFILE)
|
||||
echo "Executing dependency script with custom elements : $PACKAGES"
|
||||
|
||||
if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \
|
||||
&& if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \
|
||||
&& curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \
|
||||
&& chmod 777 /automatic_packages.sh \
|
||||
&& eval /./automatic_packages.sh "${PACKAGES:-}" \
|
||||
&& rm /automatic_packages.sh
|
||||
fi
|
||||
19
paperless_ngx/rootfs/etc/cont-init.d/20-folders.sh
Normal file
19
paperless_ngx/rootfs/etc/cont-init.d/20-folders.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
slug=paperless
|
||||
|
||||
if [ ! -d /config/addons_config/$slug ]; then
|
||||
|
||||
if [ -d /config/$slug ]; then
|
||||
echo "Moving to new location /config/addons_config/$slug"
|
||||
mkdir -p /config/addons_config/$slug
|
||||
chmod 777 /config/addons_config/$slug
|
||||
mv /config/$slug/* /config/addons_config/$slug/
|
||||
rm -r /config/$slug
|
||||
fi
|
||||
|
||||
echo "Creating /config/addons_config/$slug"
|
||||
mkdir -p /config/addons_config/$slug
|
||||
chmod 777 /config/addons_config/$slug
|
||||
fi
|
||||
14
paperless_ngx/rootfs/etc/cont-init.d/91-pikepdf.sh
Normal file
14
paperless_ngx/rootfs/etc/cont-init.d/91-pikepdf.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
echo "Installing pikepdf..."
|
||||
(
|
||||
export DEBIAN_FRONTEND="noninteractive"
|
||||
export TERM="xterm-256color"
|
||||
apt-get update
|
||||
apt-get install -yq libxml2-dev libxslt-dev python-dev
|
||||
apt-get install -yq libjpeg-dev zlib1g-dev
|
||||
apt-get install -yq python3-dev build-essential
|
||||
pip install pikepdf --force-reinstall
|
||||
) >/dev/null
|
||||
echo "... success!"
|
||||
16
paperless_ngx/rootfs/etc/cont-init.d/93-multiocr.sh
Normal file
16
paperless_ngx/rootfs/etc/cont-init.d/93-multiocr.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
OCRLANG=$(bashio::config 'OCRLANG')
|
||||
if [ -n "$OCRLANG" ]; then
|
||||
apt-get update &>/dev/null
|
||||
echo "OCRLANG variable is set, processing the language packages"
|
||||
for i in ${OCRLANG//,/ }; do
|
||||
if apt-cache show tesseract-ocr-"${i}" >/dev/null 2>&1; then
|
||||
apt-get install -yq tesseract-ocr-"${i}"
|
||||
bashio::log.info "OCR Language installed : $i" || bashio::log.fatal "Couldn't install OCR lang $i. Please check its format is conform"
|
||||
else
|
||||
echo "package tesseract-ocr-${i} not found in the repository, skipping"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
12
paperless_ngx/rootfs/templates/config.yaml
Normal file
12
paperless_ngx/rootfs/templates/config.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
#============================#
|
||||
# ALEXBELGIUM'S ENV INJECTOR #
|
||||
#============================#
|
||||
#
|
||||
# All env variables set in this file will be enabled in the app
|
||||
# This allows enabling more options that normally available in the addon options
|
||||
# This file must be filled according to the yaml format. If the format is invalid, the addon will note an error. To validate your yaml, you can use the free online tool http://www.yamllint.com/
|
||||
|
||||
# EXAMPLE of the format (you need to remove the # for it to become active)
|
||||
# TZ: Europe/Paris
|
||||
PAPERLESS_OCR_LANGUAGE: eng
|
||||
PAPERLESS_OCR_MODE: skip
|
||||
Reference in New Issue
Block a user