############################################################################### # ______ # # / _____) # # ( (____ ____ _____ ____ ___ _____ ____ _ _ _____ ____ # # \____ \ | _ \ (____ || _ \ /___)| ___ | / ___)| | | || ___ | / ___) # # _____) )| | | |/ ___ || |_| ||___ || ____|| | \ V / | ____|| | # # (______/ |_| |_|\_____|| __/ (___/ |_____)|_| \_/ |_____)|_| # # |_| # # # # Snapserver config file # # # ############################################################################### # default values are commented # uncomment and edit to change them # Settings can be overwritten on command line with: # "--
.=", e.g. --server.threads=4 # General server settings ##################################################### # [server] # Number of additional worker threads to use # - For values < 0 the number of threads will be 2 (on single and dual cores) # or 4 (for quad and more cores) # - 0 will utilize just the processes main thread and might cause audio drops # in case there are a couple of longer running tasks, such as encoding # multiple audio streams #threads = -1 # the pid file when running as daemon (-d or --daemon) #pidfile = /var/run/snapserver/pid # the user to run as when daemonized (-d or --daemon) #user = snapserver # the group to run as when daemonized (-d or --daemon) #group = snapserver # directory where persistent data is stored (server.json) # if empty, data dir will be # - "/var/lib/snapserver/" when running as daemon # - "$HOME/.config/snapserver/" when not running as daemon #datadir = # ############################################################################### # Secure Socket Layer ######################################################### # [ssl] # Certificate files are either specified by their full or relative path. Certificates with # relative path are searched for in the current path and in "/etc/snapserver/certs" # Certificate file in PEM format #certificate = # Private key file in PEM format #certificate_key = # Password for decryption of the certificate_key (only needed for encrypted certificate_key file) #key_password = # Verify client certificates #verify_clients = false # List of client CA certificate files, can be configured multiple times #client_cert = #client_cert = # ############################################################################### # HTTP RPC #################################################################### # [http] # enable HTTP Json RPC (HTTP POST and websockets) #enabled = true # address to listen on, can be specified multiple times # use "0.0.0.0" to bind to any IPv4 address or :: to bind to any IPv6 address # or "127.0.0.1" or "::1" to bind to localhost IPv4 or IPv6, respectively # use the address of a specific network interface to just listen to and accept # connections from that interface #bind_to_address = :: # which port the server should listen to #port = 1780 # enable HTTPS Json RPC (HTTPS POST and ssl websockets) #ssl_enabled = false # same as 'bind_to_address' but for SSL #ssl_bind_to_address = :: # same as 'port' but for SSL #ssl_port = 1788 # serve a website from the doc_root location # disabled if commented or empty doc_root = /usr/share/snapserver/snapweb # Hostname or IP under which clients can reach this host # used to serve cached cover art # use as placeholder for your actual host name #host = # Optional custom URL prefix for generated URLs where clients can reach # cached album art, to e.g. match scheme behind a reverse proxy. #url_prefix = https:// # ############################################################################### # TCP RPC ##################################################################### # [tcp] # enable TCP Json RPC #enabled = true # address to listen on, can be specified multiple times # use "0.0.0.0" to bind to any IPv4 address or :: to bind to any IPv6 address # or "127.0.0.1" or "::1" to bind to localhost IPv4 or IPv6, respectively # use the address of a specific network interface to just listen to and accept # connections from that interface #bind_to_address = :: # which port the server should listen to #port = 1705 # ############################################################################### # Stream settings ############################################################# # [stream] # address to listen on, can be specified multiple times # use "0.0.0.0" to bind to any IPv4 address or :: to bind to any IPv6 address # or "127.0.0.1" or "::1" to bind to localhost IPv4 or IPv6, respectively # use the address of a specific network interface to just listen to and accept # connections from that interface #bind_to_address = :: # which port the server should listen to #port = 1704 # source URI of the PCM input stream, can be configured multiple times # The following notation is used in this paragraph: # : the whole expression must be replaced with your specific setting # [square brackets]: the whole expression is optional and can be left out # [key=value]: if you leave this option out, "value" will be the default for "key" # # Format: TYPE://host/path?name=[&codec=][&sampleformat=][&chunk_ms=][&controlscript=[&controlscriptparams=]] # parameters have the form "key=value", they are concatenated with an "&" character # parameter "name" is mandatory for all sources, while codec, sampleformat and chunk_ms are optional # and will override the default codec, sampleformat or chunk_ms settings # Available types are: # pipe: pipe:///?name=[&mode=create], mode can be "create" or "read" # librespot: librespot:///?name=[&username=&password=][&devicename=Snapcast][&bitrate=320][&wd_timeout=7800][&volume=100][&onevent=""][&normalize=false][&autoplay=false][¶ms=] # note that you need to have the librespot binary on your machine # sampleformat will be set to "44100:16:2" # file: file:///?name= # process: process:///?name=[&wd_timeout=0][&log_stderr=false][¶ms=] # airplay: airplay:///?name=[&port=5000] # note that you need to have the airplay binary on your machine # sampleformat will be set to "44100:16:2" # tcp server: tcp://:?name=[&mode=server] # tcp client: tcp://:?name=&mode=client # alsa: alsa:///?name=&device=[&send_silence=false][&idle_threshold=100][&silence_threshold_percent=0.0] # meta: meta://///.../?name= #source = pipe:///tmp/snapfifo?name=default source = meta:///Announcements/default?name=MainAudio source = tcp://0.0.0.0:4953?name=Announcements&sampleformat=48000:16:2&codec=pcm source = pipe:///run/snapserver/snapfifo?name=default #source = spotify:///librespot?name=Spotify&username=guzzbinkles&password=Finn05092013&devicename=Snapcast&bitrate=320 #announcements #source = tcp://0.0.0.0:4953?name=Announcements&sampleformat=22050:16:1&codec=pcm #source = spotify:///librespot?name=Spotify&devicename=Snapcast&bitrate=320 # Plugin directory, containing scripts, referred by "controlscript" #plugin_dir = /usr/share/snapserver/plug-ins # Default sample format: :: #sampleformat = 48000:16:2 # Default transport codec # (flac|ogg|opus|pcm)[:options] # Start Snapserver with "--stream:codec=:?" to get codec specific options #codec = flac # Default source stream read chunk size [ms]. # The server will continously read this number of milliseconds from the source into buffer and pass this buffer to the encoder. # The encoded buffer is sent to the clients. Some codecs have a higher latency and will need more data, e.g. Flac will need ~26ms chunks #chunk_ms = 20 # Buffer [ms] # The end-to-end latency, from capturing a sample on the server until the sample is played-out on the client #buffer = 1000 # Send audio to muted clients #send_to_muted = false # # Streaming client options #################################################### # [streaming_client] # Volume assigned to new snapclients [percent] # Defaults to 100 if unset #initial_volume = 100 # ############################################################################### # Logging options ############################################################# # [logging] # log sink [null,system,stdout,stderr,file:] # when left empty: if running as daemon "system" else "stdout" #sink = # log filter :[,:]* # with tag = * or and level = [trace,debug,info,notice,warning,error,fatal] #filter = *:info # ###############################################################################