add bundle:snapserver
This commit is contained in:
parent
575474af83
commit
a4d4b0b8e0
4 changed files with 106 additions and 0 deletions
|
@ -31,6 +31,17 @@ defaults = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if node.has_bundle('snapserver'):
|
||||||
|
defaults['navidrome']['config']['Jukebox'] = {
|
||||||
|
'Enabled': True,
|
||||||
|
}
|
||||||
|
defaults['navidrome']['config']['MPVCmdTemplate'] = 'mpv --no-audio-display --pause %f --input-ipc-server=%s --audio-channels=stereo --audio-samplerate=48000 --audio-format=s16 --ao=pcm --ao-pcm-file=/tmp/snapserver_navidrome_fifo'
|
||||||
|
defaults['snapserver'] = {
|
||||||
|
'sources': {
|
||||||
|
'pipe:///tmp/snapserver_navidrome_fifo?name=Navidrome',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@metadata_reactor.provides(
|
@metadata_reactor.provides(
|
||||||
'zfs/datasets',
|
'zfs/datasets',
|
||||||
|
|
24
bundles/snapserver/files/snapserver.conf
Normal file
24
bundles/snapserver/files/snapserver.conf
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
[server]
|
||||||
|
threads = -1
|
||||||
|
|
||||||
|
[stream]
|
||||||
|
bind_to_address = 0.0.0.0
|
||||||
|
port = 1704
|
||||||
|
|
||||||
|
% for source in sorted(node.metadata.get('snapserver/sources')):
|
||||||
|
source = ${source}
|
||||||
|
% endfor
|
||||||
|
|
||||||
|
[streaming_client]
|
||||||
|
initial_volume = 100
|
||||||
|
|
||||||
|
[http]
|
||||||
|
enabled = true
|
||||||
|
port = 1780
|
||||||
|
hostname = ${node.metadata.get('snapserver/domain')}
|
||||||
|
doc_root = /usr/share/snapweb/
|
||||||
|
|
||||||
|
[tcp]
|
||||||
|
enabled = true
|
||||||
|
bind_to_address = 0.0.0.0
|
||||||
|
port = 1705
|
13
bundles/snapserver/items.py
Normal file
13
bundles/snapserver/items.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
files['/etc/snapserver.conf'] = {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'triggers': {
|
||||||
|
'svc_systemd:snapserver:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
svc_systemd['snapserver'] = {
|
||||||
|
'needs': {
|
||||||
|
'file:/etc/snapserver.conf',
|
||||||
|
'pkg_apt:snapserver',
|
||||||
|
},
|
||||||
|
}
|
58
bundles/snapserver/metadata.py
Normal file
58
bundles/snapserver/metadata.py
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
from bundlewrap.metadata import atomic
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
'apt': {
|
||||||
|
'packages': {
|
||||||
|
'snapserver': {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'snapserver': {
|
||||||
|
'sources': set(),
|
||||||
|
},
|
||||||
|
'sysctl': {
|
||||||
|
'options': {
|
||||||
|
'fs.protected_fifos': '0',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'nginx/vhosts/snapserver',
|
||||||
|
)
|
||||||
|
def nginx(metadata):
|
||||||
|
if not node.has_bundle('nginx'):
|
||||||
|
raise DoNotRunAgain
|
||||||
|
|
||||||
|
return {
|
||||||
|
'nginx': {
|
||||||
|
'vhosts': {
|
||||||
|
'snapserver': {
|
||||||
|
'domain': metadata.get('snapserver/domain'),
|
||||||
|
'locations': {
|
||||||
|
'/': {
|
||||||
|
'target': f'http://127.0.0.1:1780',
|
||||||
|
'websockets': True,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'website_check_path': '/',
|
||||||
|
'website_check_string': 'Snapweb',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'firewall/port_rules',
|
||||||
|
'firewall/port_rules',
|
||||||
|
)
|
||||||
|
def firewall(metadata):
|
||||||
|
return {
|
||||||
|
'firewall': {
|
||||||
|
'port_rules': {
|
||||||
|
'1704/tcp': atomic(metadata.get('snapserver/restrict-to', set())),
|
||||||
|
'1705/tcp': atomic(metadata.get('snapserver/restrict-to', set())),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue