Add Ian McDonald to CREDITS
[paraslash.git] / INSTALL
1 Paraslash install notes
2 =======================
3
4 Any knowledge of how to work with mouse and icons is not required.
5
6 Install all needed packages
7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 See README for a list of required software. Don't be afraid of the long
9 list of unusal libraries: Most of them are only needed for optional
10 programs. Autoconf will detect what is installed on your system and
11 will only build those executables that can be built with your setup.
12
13
14 Install server and client
15 ~~~~~~~~~~~~~~~~~~~~~~~~~
16 Install the package on all machines, you'd like this software to run on:
17
18         (./configure && make) > /dev/null
19
20 There should be no errors (but probably many warnings about missing
21 software). Then, as root,
22
23         make install
24
25
26 Setup user list and create rsa keys
27 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28 If you already have your rsa keys, skip this step. If you are new
29 to paraslash, you have to generate an rsa key pair for each user you
30 want to allow to connect. You need at least one user.
31
32 Let's assume that you'd like to run the server on host server_host
33 as user foo, and that you want to connect from client_host as user bar.
34
35 As foo@server_host, create ~/.paraslash/server.users:
36
37         target=~/.paraslash/server.users
38         key=~/.paraslash/key.pub.bar
39         perms=DB_READ,DB_WRITE,AFS_READ,AFS_WRITE
40         mkdir -p ~/.paraslash
41         echo "user bar $key $perms" >> $target
42
43 This gives bar full privileges.
44
45 Change to the bar account on client_host and generate the key-pair
46 with the commands
47
48         key=~/.paraslash/key.bar
49         mkdir -p ~/.paraslash
50         (umask 077 && openssl genrsa -out $key)
51
52 Next, extract its public part:
53
54         pubkey=~/.paraslash/key.pub.bar
55         openssl rsa -in $key -pubout -out $pubkey
56
57 and copy the public key just created to server_host:
58
59         scp $pubkey foo@server_host:.paraslash/
60
61 Finally, tell para_client to connect to server_host:
62
63         echo 'hostname server_host' > ~/.paraslash/client.conf
64
65 Start para_server
66 ~~~~~~~~~~~~~~~~~
67         para_server
68
69 Now you can use para_client to connect to the server and issue
70 commands. Open a new shell (as "bar" on "client_host" in the above
71 example) and try
72
73         para_client help
74         para_client si
75
76 to retrieve the list of available commands and some server info.
77
78
79 Choose your database tool (dbtool)
80 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81 You have two options:
82
83         1. Use the mysql dbtool which comes with paraslash and requires
84         mysql.
85
86         2. If you can not use the mysql dbtool and you just want
87         to quickly make paraslash working, use the random dbtool.
88         The directory which is searched for audio files can be given
89         via the server option --random_dbtool_dir.
90
91         Note, however, that this database tool is really dopey. It
92         scans the given directory on every audio file change and
93         chooses one randomly. There is no further functionality.
94
95 The current database tool can be changed at runtime via
96
97         para_client cdt new_dbtool
98
99 If you have choosen 1. above, read README.mysql and follow the
100 instructions given there.  Return to this document when ready.
101
102
103 Start streaming manually
104 ~~~~~~~~~~~~~~~~~~~~~~~~
105
106         para_client play
107         para_client stat 2
108
109 This starts streaming and dumps some information on the current song
110 to stdout.
111
112 You should now be able to listen to the stream with any player
113 capable of reading from stdin. To check this, try the following
114 on client_host:
115
116         mp3:
117
118         para_recv -r 'http -i server_host' | para_filter -f mp3dec -f wav | para_play
119         or
120         mpg123 http://server_host:8000/
121         or
122         xmms http://server_host:8000/
123
124         ogg:
125
126         para_recv -r 'http -i server_host' | para_filter -f oggdec -f wav | para_play
127
128 If this works, proceede. Otherwise doublecheck what is logged by
129 para_server and use the --loglevel option of para_recv, para_filter
130 to increase verbosity.
131
132 Configure para_audiod
133 ~~~~~~~~~~~~~~~~~~~~~
134 In order to automatically start the right decoder at the right time
135 and to offer to the clients some information on the current audio
136 stream and on paraslash's internal state, you should run the local
137 audio daemon, para_audiod, on every machine that is supposed to play
138 the audio stream. Try
139
140         para_audiod -h
141
142 for help. Usually you have to specify at least server_host as the
143 receiver specifier, like this:
144
145         -r 'mp3:http -i server_host'
146
147 The prefered way to use para_audiod is to run it once at system start
148 as an unprivileged user. para_audiod needs to create a "well-known"
149 socket for the clients to connect to. If you want to change the
150 default socket (e.g. because you do not have write access for the
151 directory where the socket resides), use the -s option or the config
152 file to change the default. Note that in this case you'll also have
153 to specify the same value for para_audioc's -s option.
154
155 If para_server is playing, you should be able to listen to the audio
156 stream as soon as para_audiod is started.  Once it is running, try
157
158         para_audioc stat
159
160 That should dump some information to stdout. Other commands include
161
162         para_audioc off
163         para_audioc on
164         para_audioc sb
165         para_audioc term
166         para_audioc cycle
167
168
169 Start para_gui
170 ~~~~~~~~~~~~~~
171 para_gui reads the output of "para_audioc stat" and displays that
172 information in a curses window. It also allows you to bind keys to
173 arbitrary commands. There are several flavours of key-bindings:
174
175         o internal: These are the built-in commands that can not be
176           changed (help, quit, loglevel, version...).
177
178         o external: Shutdown curses before launching the given command.
179           Useful for starting other ncurses programs from within
180           para_gui, e.g. aumix or para_dbadm. Or, use
181
182                 para_client mbox
183
184           to write a mailbox containing one mail for each file
185           in the mysql database and start mutt from within para_gui
186           to browse your collection!
187
188         o display: Launch the command and display its stdout in
189           para_gui's bottom window.
190
191         o para: Like display, but start "para_client <specified
192           command>" instead of "<specified command>".
193
194
195 That's all, congratulations. Check out all the other optional gimmics!
196
197 Troubles?
198 ~~~~~~~~~
199 If something went wrong, look at the output. If that does not give
200 you a clue, use loglevel one (option -l 1 for most commands) to show
201 debugging info. Almost all paraslash executables have a brief online
202 help which is displayed by using the -h switch.
203
204 Still not working? Mail the author Andre Noll <maan@systemlinux.org>
205 (english, german, or spanish language). Please provide enough info
206 such as the version of paraslash you are using and relevant parts of
207 the logs.