DisOrder
========
-This program is used to play random and chosen tracks from a collection of
-digital audio files (for instance MP3 and OGG files). If you just set it going
-it plays random tracks from your collection, but you can also ask for specific
-tracks to be played, either via a command line program or a web interface, and
-you can 'scratch' the current track.
+DisOrder is a multi-user software jukebox.
+ * It can play either selected tracks or pick tracks at random.
+ * It supports OGG, MP3, FLAC and WAV files, and can be configured to support
+ anything you can supply a player for (up to a point).
+ * It supports both ALSA and OSS and can also broadcast an RTP stream over a
+ LAN; a player for the latter is included.
+ * Tracks may be selected either via a hierarchical interface or by a fast
+ word search.
+ * It has a web interface (allowing access from graphical web browsers) and a
+ GTK+ interface that runs on Linux and Mac systems.
+ * Playing tracks can be paused or cancelled ("scratched").
See CHANGES for details of recent changes to DisOrder.
-Currently it only runs on Linux. It could probably be ported to other UNIX
-variants in some cases without too much effort. Things you will need:
+The server supports Linux and can be made to on a Mac (see README.mac). The
+clients work on both Linux and the Mac. It could probably be ported to some
+other UNIX variants without too much effort. Things you will need:
Build dependencies:
Name Tested Notes
libFLAC 1.1.2
GNU C 4.1.2
GNU Make 3.81
+ GNU Sed 4.1.5
Python 2.4.4 (optional)
GTK+ 2.8.20 (if you want the GTK+ client)
GLIB 2.12.4 (if you want the GTK+ client)
See README.client for setting up a standalone client (or read the
disobedience man page).
- The server is only built by default under Linux. See README.mac concerning
- its use under OS X.
-
2. Install it. Most of the installation is done via the install target:
make installdirs install
- The CGI interface has to be installed separately:
-
- install -m 755 clients/disorder.cgi /usr/local/lib/cgi-bin/disorder
+ The CGI interface has to be installed separately; see under 'Web Interface'
+ below.
3. Create a 'jukebox' user and group, with the jukebox group being the default
group of the jukebox user. The server will run as this user and group.
* edit the 'scratch' commands to supply scratch sounds (or delete them if
you don't want any).
* edit the 'trust' command to reflect the user the web interface will
- eventually run as.
- * edit the 'url' command to give the URL of the web interface.
+ eventually run as (see below).
+ * edit the 'url' command to give the URL of the web interface (see below).
* add or remove 'stopword' entries as necessary (these words won't take
part in track name searches from the web interface).
See disorder_config(5) for more details.
- See README.raw for details on setting up "raw format" players, which allow
- for pausing and gapless play.
-
-5. Create /etc/disorder/config.private. This should be readable only by the
- jukebox group:
-
- touch /etc/disorder/config.private
- chown root:jukebox /etc/disorder/config.private
- chmod 640 /etc/disorder/config.private
+ See README.streams for how to set up network play.
- Set up a username and password for root, for example with line like this:
+ If adding new 'player' commands, see README.raw for details on setting up
+ "raw format" players. Non-raw players are still supported but not in all
+ configurations and they cannot support pausing and gapless play.
- allow root somepassword
-
- Use (for instance) pwgen(1) to create the password. DO NOT use your root
- password - this is a password to give root access to the server, not to give
- access to the root login.
-
- See disorderd(8) and disorder_config(5) for more details.
-
-6. Make sure the server is started at boot time.
+5. Make sure the server is started at boot time.
On many Linux systems, examples/disorder.init should be more or less
suitable; install it in /etc/init.d, adapting it as necessary, and make
appropriate links from /etc/rc[0-6].d.
-7. Make sure the state directory (/var/disorder or /usr/local/var/disorder or
- as determined by configure) exists and is writable by the jukebox user.
-
- mkdir -m 755 /var/disorder
- chown disorder:root /var/disorder
-
- If you want to use some other directory you must put use the 'home' command
- in the configuration file.
-
-8. Start the server.
+6. Start the server.
On Linux systems with sysv-style init:
start up correctly there should be an error message. Correct the problem
and try again.
-9. After a minute it should start to play something. Try scratching it, as any
- of the users you set up in step 5:
+7. After a minute it should start to play something. Try scratching it:
disorder scratch
The track should stop playing, and (if you set any up) a scratch sound play.
-10. Add any other users you want to config.private. Each user's password
- should be stored in a file in their home directory, ~/.disorder/passwd,
- which should be readable only by them, and should take the form of a single
- line:
-
- password MYPASSWORD
-
- (root doesn't need this as the client can read it out of config.private
- when running as root.)
+8. Add any other users you want. These easiest way to do this is:
- Note that the server must be reloaded (e.g. by 'disorder reconfigure')
- when new users are added.
+ disorder authorize USERNAME
- Alternatively the administrator can create /etc/disorder/config.USERNAME
- containing the same thing as above. It can either be owned by the user and
- mode 400, or owned by root and the user's group (if you have per-user
- groups) and mode 440.
+ This will automatically choose a random password and add new line to
+ /etc/disorder/config.private and create /etc/disorder/config.USERNAME.
- You can use 'disorder authorize' to automatically pick passwords and
- create these files.
+ Those users should now be able to access the server from the same host as it
+ runs on, either via the disorder command or Disobedience. To run
+ Disobedience from some other host, File->Login allows hostnames, passwords
+ etc to be configured.
-11. Optionally source completion.bash from /etc/profile or similar, for
- example:
+9. Optionally source completion.bash from /etc/profile or similar, for
+ example:
- . /usr/local/share/disorder/completion.bash
+ . /usr/local/share/disorder/completion.bash
- This provides completion over disorder command and option names.
+ This provides completion over disorder command and option names.
Web Interface
# htpasswd -b /home/jukebox/http.users othername otherpass
Adding password for user othername
-4. The jukebox must be configured to trust the web user. I added the following
- line to my /etc/disorder/config:
-
- trust www-data
-
- This might not be the same on your system! You have to specify the user
- that the CGI script runs as, whatever that is.
+4. The jukebox must be configured to trust the web user. The example
+ configuration assumes that this is www-data, but it might be something else
+ on your system. Edit the 'trust' line if necessary.
5. Install disorder.cgi in an appropriate location. Remember to make it
- executable. With the above configuration I installed it as
- ~jukebox/public_html/index.cgi.
+ executable. For example:
+
+ install -m 755 clients/disorder.cgi ~jukebox/public_html/index.cgi
6. Give www-data (or whatever user it is) a password and edit
/etc/disorder/config.private accordingly. This file should be mode 640 and
configured earlier, and be shown details of what is playing and what other
tracks have been configured for future play.
-9. Some features take time to start working, for instance those involving
- reporting the length of tracks. This is because the server starts up as
- quickly as possible even if the full track data has not yet been gathered;
- the track data is then calculated in the background.
-
-10. If you run into problems, always look at the appropriate error log; the
- message you see in your web browser will usually not be sufficient to
- diagnose the problem all by itself.
+9. If you run into problems, always look at the appropriate error log; the
+ message you see in your web browser will usually not be sufficient to
+ diagnose the problem all by itself.
-11. If you have a huge number of top level directories, then you might find
+10. If you have a huge number of top level directories, then you might find
that the 'Choose' page is unreasonably large. If so add the following line
to /etc/disorder/options.user:
label sidebar.choosewhich choosealpha