bundlewrap/bundles/paperless-ng/metadata.py

114 lines
3.1 KiB
Python

defaults = {
'apt': {
'packages': {
# for paperless itself
'fonts-liberation': {},
'gnupg': {},
'imagemagick': {},
'libmagic-dev': {},
'default-libmysqlclient-dev': {},
'libpq-dev': {},
'mariadb-client': {},
'mime-support': {},
'optipng': {},
'python3-wheel': {},
# for OCRmyPDF
'ghostscript': {},
'icc-profiles-free': {},
'liblept5': {},
'libxml2': {},
'pngquant': {},
'qpdf': {},
'tesseract-ocr': {},
'tesseract-ocr-deu': {},
'tesseract-ocr-eng': {},
'unpaper': {},
'zlib1g': {},
},
},
'backups': {
'paths': {
'/mnt/paperless',
},
},
'postgresql': {
'roles': {
'paperless': {
'password': repo.vault.password_for(f'{node.name} postgresql paperless'),
},
},
'databases': {
'paperless': {
'owner': 'paperless',
},
},
},
}
@metadata_reactor.provides(
'apt/packages',
)
def paperless_tesseract_languages(metadata):
packages = {}
for lang in metadata.get('paperless/ocr_languages', {'deu', 'eng'}):
packages[f'tesseract-ocr-{lang}'] = {}
return {
'apt': {
'packages': packages,
},
}
@metadata_reactor.provides(
'icinga2_api/paperless/services',
)
def icinga_check_for_new_release(metadata):
return {
'icinga2_api': {
'paperless': {
'services': {
'PAPERLESS UPDATE': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release paperless-ngx/paperless-ngx {}'.format(metadata.get('paperless/version')),
'vars.notification.mail': True,
'check_interval': '60m',
},
},
},
},
}
@metadata_reactor.provides(
'nginx/vhosts/paperless',
)
def nginx(metadata):
if not node.has_bundle('nginx'):
raise DoNotRunAgain
return {
'nginx': {
'vhosts': {
'paperless': {
'domain': metadata.get('paperless/domain'),
'locations': {
'/': {
'target': 'http://127.0.0.1:22070',
'websockets': True,
'proxy_set_header': {
'X-Forwarded-Host': '$server_name',
},
},
'/static/': {
'alias': '/opt/paperless/src/paperless-ngx/static/',
},
},
'max_body_size': '100M',
'website_check_path': '/accounts/login/',
'website_check_string': 'Paperless-ngx',
},
},
},
}