defaults = { 'apt': { 'repos': { 'ntfy': { 'items': { 'deb [arch=amd64] https://archive.heckel.io/apt debian main', }, }, }, 'packages': { 'ntfy': {}, }, }, 'backups': { 'paths': { "/var/cache/ntfy", "/var/lib/ntfy", "/var/opt/ntfy", }, }, 'ntfy': { 'allow_unauthorized_write': False, }, 'zfs': { 'datasets': { 'tank/ntfy': {}, 'tank/ntfy/cache': { 'mountpoint': '/var/cache/ntfy', 'needed_by': { 'directory:/var/cache/ntfy', }, }, 'tank/ntfy/lib': { 'mountpoint': '/var/lib/ntfy', 'needed_by': { 'directory:/var/lib/ntfy', }, }, 'tank/ntfy/attachments': { 'mountpoint': '/var/opt/ntfy', 'needed_by': { 'directory:/var/opt/ntfy', }, }, }, }, } @metadata_reactor.provides( 'nginx/vhosts', ) def nginx(metadata): if not node.has_bundle('nginx'): raise DoNotRunAgain locations = { '/': { 'target': 'http://127.0.0.1:22100', 'proxy_set_header': { 'X-Real-IP': '$remote_addr', }, 'websockets': True, 'proxy_read_timeout': '3m', 'max_body_size': '20m', 'additional_config': { 'proxy_connect_timeout 3m', 'proxy_send_timeout 3m', 'proxy_request_buffering off', 'proxy_redirect off', } }, } vhosts = { 'ntfy': { 'domain': metadata.get('ntfy/domain'), 'locations': locations, # This only does websockets connections, which stay # open for a very long time. This only generates # useless metrics. 'timing_log': False, 'website_check_path': '/', 'website_check_string': 'ntfy', }, } return { 'nginx': { 'vhosts': vhosts }, }