More documentation updates.
[paraslash.git] / INSTALL
1 INSTALL
2 =======
3
4 ----
5 Any knowledge of how to work with mouse and icons is not required.
6
7 ---------------------------
8 Install all needed packages
9 ---------------------------
10
11 See REQUIREMENTS for a list of required software. You don't need
12 everything listed there. In particular, mp3, ogg vorbis and aac, ortp
13 support is optional. Autoconf will detect what is installed on your
14 system and will only try to build those executables that can be built
15 with your setup.
16
17 Note that no special library (not even the mp3 decoding library libmad)
18 is needed for para_server if you only want to stream mp3 files.
19 Also, it's fine to use para_server on a box without sound card as
20 para_server only sends the audio stream to connected clients.
21
22 -------------------------
23 Install server and client
24 -------------------------
25
26 Install the package on all machines, you'd like this software to run on:
27
28 (./configure && make) > /dev/null
29
30 There should be no errors but probably some warnings about missing
31 software packages which usually implies that not all audio formats will
32 be supported. If headers or libs are installed at unusual locations
33 you might need to tell the configure script to find them. Try
34
35 ./configure --help
36
37 to see a list of options. If the paraslash package was compiled
38 successfully, execute as root,
39
40 make install
41
42 -----------------------------------
43 Setup user list and create rsa keys
44 -----------------------------------
45
46 If you already have your rsa keys, skip this step. If you are new
47 to paraslash, you have to generate an rsa key pair for each user you
48 want to allow to connect. You need at least one user.
49
50 Let's assume that you'd like to run the server on host server_host
51 as user foo, and that you want to connect from client_host as user bar.
52
53 As foo@server_host, create ~/.paraslash/server.users by typing the
54 following commands:
55
56 target=~/.paraslash/server.users
57 key=~/.paraslash/key.pub.bar
58 perms=AFS_READ,AFS_WRITE,VSS_READ,VSS_WRITE
59 mkdir -p ~/.paraslash
60 echo "user bar $key $perms" >> $target
61
62 This gives "bar" the full privileges.
63
64 Change to the bar account on client_host and generate the key-pair
65 with the commands
66
67 key=~/.paraslash/key.bar
68 mkdir -p ~/.paraslash
69 (umask 077 && openssl genrsa -out $key)
70
71 Next, extract its public part:
72
73 pubkey=~/.paraslash/key.pub.bar
74 openssl rsa -in $key -pubout -out $pubkey
75
76 and copy the public key just created to server_host (you may
77 skip this step for a single-user setup, i.e. if foo=bar and
78 server_host=client_host):
79
80 scp $pubkey foo@server_host:.paraslash/
81
82 Finally, tell para_client to connect to server_host:
83
84 conf=~/.paraslash/client.conf
85 echo 'hostname server_host' > $conf
86
87 -----------------
88 Start para_server
89 -----------------
90
91 For this first try, we'll use a debug level of two to make the
92 output of para_server more verbose.
93
94 para_server -l 2
95
96 Now you can use para_client to connect to the server and issue
97 commands. Open a new shell (as "bar" on "client_host" in the above
98 example) and try
99
100 para_client help
101 para_client si
102
103 to retrieve the list of available commands and some server info.
104 Don't proceed if this doesn't work.
105
106 -------------------
107 Create the database
108 -------------------
109
110 para_client init
111
112 This creates some empty tables under ~/.paraslash/afs_database.
113 You normally don't need to look at these tables, but it's good
114 to know that you can start from scratch with
115
116 rm -rf ~/.paraslash/afs_database
117
118 in case something went wrong.
119
120 Next, you need to fill the audio file table of that database with
121 contents so that para_server knows about your audio files. Choose an
122 absolute path to a directory containing some audio files and add them
123 to the audio file table:
124
125 para_client add /my/mp3/dir
126
127 This might take a while, so it is a good idea to start with a directory
128 containing not too many audio files. Note that the table only contains
129 data about the audio files found, not the files themselves.
130
131 Print a list of all audio files found with
132
133 para_client ls
134
135 ------------------------
136 Start streaming manually
137 ------------------------
138
139 para play
140 para stat 2
141
142 This starts streaming and dumps some information about the current
143 audio file to stdout.
144
145 You should now be able to receive the stream and listen to it. If
146 you have mpg123 or xmms handy, execute on client_host
147
148 mpg123 http://server_host:8000/
149 or
150 xmms http://server_host:8000/
151
152 Paraslash comes with its own receiving and playing software, which
153 will be described next. Try the following on client_host (assuming
154 Linux/ALSA and an mp3 stream):
155
156 para_recv -l 2 -r 'http -i server_host' > file.mp3
157 # (interrupt with CTRL+C after a few seconds)
158 ls -l file.mp3 # should not be empty
159 para_filter -f mp3dec -f wav < file.mp3 > file.wav
160 ls -l file.wav # should be much bigger than file.mp3
161 para_write -w alsa < file.wav
162
163 If this works, proceed. Otherwise double check what is logged by
164 para_server and use the --loglevel option of para_recv, para_filter
165 and para_write to increase verbosity.
166
167 Next, put the pieces together:
168
169 para_recv -r 'http -i server_host' \
170 | para_filter -f mp3dec -f wav \
171 | para_write -w alsa
172
173 ---------------------
174 Configure para_audiod
175 ---------------------
176
177 In order to automatically start the right decoder at the right time
178 and to offer to the clients some information on the current audio
179 stream and on paraslash's internal state, you should run the local
180 audio daemon, para_audiod, on every machine in your network which is
181 supposed to play the audio stream. Try
182
183 para_audiod -h
184
185 for help. Usually you have to specify only server_host as the receiver
186 specifier for each supported audio format, like this:
187
188 para_audiod -l 2 -r 'mp3:http -i server_host'
189
190 The preferred way to use para_audiod is to run it once at system start
191 as an unprivileged user. para_audiod needs to create a "well-known"
192 socket for the clients to connect to. The default path for this
193 socket is
194
195 /var/paraslash/audiod_socket.$HOSTNAME
196
197 so the /var/paraslash directory should be owned by the user who
198 runs para_audiod.
199
200 If you want to change the location of the socket, use the -s option
201 for para_audiod or the config file ~/.paraslash/audiod.conf to change
202 the default. Note that in this case you'll also have to specify the
203 same value for para_audioc's -s option.
204
205 If para_server is playing, you should be able to listen to the audio
206 stream as soon as para_audiod is started. Once it is running, try
207
208 para_audioc stat
209
210 That should dump some information to stdout. Other commands include
211
212 para_audioc off
213 para_audioc on
214 para_audioc sb
215 para_audioc term
216 para_audioc cycle
217
218 --------------
219 Start para_gui
220 --------------
221
222 para_gui reads the output of "para_audioc stat" and displays that
223 information in a curses window. It also allows you to bind keys to
224 arbitrary commands. There are several flavours of key-bindings:
225
226 - internal: These are the built-in commands that can not be
227 changed (help, quit, loglevel, version...).
228 - external: Shutdown curses before launching the given command.
229 Useful for starting other ncurses programs from within
230 para_gui, e.g. aumix or dialog scripts. Or, use the mbox
231 output format to write a mailbox containing one mail for each
232 (admissible) file the audio file selector knows about. Then
233 start mutt from within para_gui to browse your collection!
234 - display: Launch the command and display its stdout in
235 para_gui's bottom window.
236 - para: Like display, but start "para_client <specified
237 command>" instead of "<specified command>".
238
239 This concludes the installation notes. Next thing you might to have a look
240 at is how to use paraslash's audio file selector. See README.afs.