Paraslash install notes ======================= Any knowledge of how to work with mouse and icons is not required. Install all needed packages ~~~~~~~~~~~~~~~~~~~~~~~~~~~ See README for a list of required software. Don't be afraid of the long list of unusal libraries: Most of them are only needed for optional programs. Autoconf will detect what is installed on your system and will only build those executables that can be built with your setup. Install server and client ~~~~~~~~~~~~~~~~~~~~~~~~~ Install the package on all machines, you'd like this software to run on: (./configure && make) > /dev/null There should be no errors (but probably many warnings about missing software). Then, as root, make install Setup user list and create rsa keys ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you already have your rsa keys, skip this step. If you are new to paraslash, you have to generate an rsa key pair for each user you want to allow to connect. You need at least one user. Let's assume that you'd like to run the server on host server_host as user foo, and that you want to connect from client_host as user bar. As foo@server_host, create ~/.paraslash/server.users: target=~/.paraslash/server.users key=~/.paraslash/key.pub.bar perms=DB_READ,DB_WRITE,AFS_READ,AFS_WRITE mkdir -p ~/.paraslash echo "user bar $key $perms" >> $target This gives bar full privileges. Change to the bar account on client_host and generate the key-pair with the commands key=~/.paraslash/key.bar mkdir -p ~/.paraslash (umask 077 && openssl genrsa -out $key) Next, extract its public part: pubkey=~/.paraslash/key.pub.bar openssl rsa -in $key -pubout -out $pubkey and copy the public key just created to server_host: scp $pubkey foo@server_host:.paraslash/ Finally, tell para_client to connect to server_host: echo 'hostname server_host' > ~/.paraslash/client.conf Start para_server ~~~~~~~~~~~~~~~~~ para_server Now you can use para_client to connect to the server and issue commands. Open a new shell (as "bar" on "client_host" in the above example) and try para_client help para_client si to retrieve the list of available commands and some server info. Choose an audio file selector ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ paraslash has three different audio file selectors: random (default), plm (the playlist manager) and mysql. The random selector chooses files randomly from the given directory. The playlist selector allows to send a playlist to para_server via the lpl (load playlist) command. para_server will choose files from the loaded playlist in sequential order. The mysql selector stores information about your audio files in a mysql database. It is much more involved than the other two selectors and lets you chose files in many interesting ways. If you like to use the mysql selector, read README.mysql and follow the instructions given there. Return to this document when ready. The current audio file selector can be changed at runtime via para_client cdt new_selector Start streaming manually ~~~~~~~~~~~~~~~~~~~~~~~~ para_client play para_client stat 2 This starts streaming and dumps some information on the current song to stdout. You should now be able to listen to the stream with any player capable of reading from stdin. To check this, try the following on client_host: mp3: para_recv -r 'http -i server_host' | para_filter -f mp3dec -f wav | para_play or mpg123 http://server_host:8000/ or xmms http://server_host:8000/ ogg: para_recv -r 'http -i server_host' | para_filter -f oggdec -f wav | para_play If this works, proceede. Otherwise doublecheck what is logged by para_server and use the --loglevel option of para_recv, para_filter to increase verbosity. Configure para_audiod ~~~~~~~~~~~~~~~~~~~~~ In order to automatically start the right decoder at the right time and to offer to the clients some information on the current audio stream and on paraslash's internal state, you should run the local audio daemon, para_audiod, on every machine that is supposed to play the audio stream. Try para_audiod -h for help. Usually you have to specify at least server_host as the receiver specifier, like this: -r 'mp3:http -i server_host' The prefered way to use para_audiod is to run it once at system start as an unprivileged user. para_audiod needs to create a "well-known" socket for the clients to connect to. If you want to change the default socket (e.g. because you do not have write access for the directory where the socket resides), use the -s option or the config file to change the default. Note that in this case you'll also have to specify the same value for para_audioc's -s option. If para_server is playing, you should be able to listen to the audio stream as soon as para_audiod is started. Once it is running, try para_audioc stat That should dump some information to stdout. Other commands include para_audioc off para_audioc on para_audioc sb para_audioc term para_audioc cycle Start para_gui ~~~~~~~~~~~~~~ para_gui reads the output of "para_audioc stat" and displays that information in a curses window. It also allows you to bind keys to arbitrary commands. There are several flavours of key-bindings: o internal: These are the built-in commands that can not be changed (help, quit, loglevel, version...). o external: Shutdown curses before launching the given command. Useful for starting other ncurses programs from within para_gui, e.g. aumix or para_dbadm. Or, use para_client mbox to write a mailbox containing one mail for each file in the mysql database and start mutt from within para_gui to browse your collection! o display: Launch the command and display its stdout in para_gui's bottom window. o para: Like display, but start "para_client " instead of "". That's all, congratulations. Check out all the other optional gimmics! Troubles? ~~~~~~~~~ If something went wrong, look at the output. If that does not give you a clue, use loglevel one (option -l 1 for most commands) to show debugging info. Almost all paraslash executables have a brief online help which is displayed by using the -h switch. Still not working? Mail the author Andre Noll (english, german, or spanish language). Please provide enough info such as the version of paraslash you are using and relevant parts of the logs.