defaults = { 'apt': { 'packages': { 'ffmpeg': {}, 'mpv': {}, }, }, 'backups': { 'paths': { '/var/opt/navidrome', }, }, 'navidrome': { 'config': { 'Address': '127.0.0.1', 'DataFolder': '/var/opt/navidrome', 'EnableExternalServices': False, 'EnableInsightsCollector': False, 'LastFM.Enabled': False, 'ListenBrainz.Enabled': False, 'PasswordEncryptionKey': repo.vault.password_for('{} encryption navidrome'.format(node.name)), 'Port': 4533, 'Scanner.Schedule': '@every 72h', }, }, 'zfs': { 'datasets': { 'tank/navidrome': {}, 'tank/navidrome/install': { 'mountpoint': '/opt/navidrome', 'needed_by': { 'directory:/opt/navidrome', }, }, 'tank/navidrome/home': { 'mountpoint': '/var/opt/navidrome', 'needed_by': { 'directory:/var/opt/navidrome', }, }, }, }, } @metadata_reactor.provides( 'navidrome/config/baseurl', ) def baseurl(metadata): return { 'navidrome': { 'config': { 'BaseUrl': f'https://{metadata.get('navidrome/domain')}', }, }, } @metadata_reactor.provides( 'nginx/vhosts/navidrome', ) def nginx(metadata): if not node.has_bundle('nginx'): raise DoNotRunAgain return { 'nginx': { 'vhosts': { 'navidrome': { 'domain': metadata.get('navidrome/domain'), 'locations': { '/': { 'target': f'http://127.0.0.1:{metadata.get('navidrome/config/Port')}', }, }, 'website_check_path': '/user/login', 'website_check_string': 'Sign in', }, }, }, } @metadata_reactor.provides( 'icinga2_api/navidrome/services', ) def icinga_check_for_new_release(metadata): version = metadata.get('navidrome/version') return { 'icinga2_api': { 'pretalx': { 'services': { 'NAVIDROME UPDATE': { 'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release navidrome/navidrome {}'.format(version), 'vars.notification.mail': True, 'check_interval': '60m', }, }, }, }, }