				INSTALLATION

Get and install XMake if you don't have it.  You can get XMake from
http://www.backplane.com/xmake/.  XMake is a required package to build
Diablo.

Please read the README.READER and README.SERVER files if you haven't
already.

RELEASE_NOTES contains details on the revision history of Diablo.

TUNING_NOTES contains general information on tuning of your new Diablo
system.  It is somewhat dated, though.  The information is still valid
but some of the configurations have changed over the years.

Edit lib/vendor.h if required.

	You may wish to set certain options or just read the file.
	Most people shouldn't have to change anything, however.  Note
	that many things can be set in diablo.config and need not be
	hardwired in lib/vendor.h

	#define POST_CKADDRESS if you wish to check the validity of
	the From: address of a users post.

	#define POST_CKPATHLOOP if you have users that suck news from
	you and then repost them back upstream through your servers.
	This will disallow such activity and reject the article.

	#define POST_FORCEMSGID if you wish to be facist and force new
	posts from your users to follow a specific message-ID format.
	This is considered extremely controversial, DO NOT ENABLE THIS
	UNLESS YOU ABSOLUTELY HAVE A NEED TO.  You must also enable
	POST_CKPATHLOOP as well.

	#define POST_BOFHCLEANUP to remove old and obsolete headers
	from newly posted articles.

	#define POST_RESTRICTCANCEL to verify that the message being
	cancelled originated on this server/cluster.  Requires
	POST_FORCEMSGID as well to operate.

	#define POST_HIDENNTPPOSTHOST to encode the IP address of your
	user in the NNTP-Posting-Host: header line.  This is highly
	recommended.

	#define POST_CRYPTXTRACE to encryupted the X-Trace: header
	line.  This is highly recommended.

	#define RADIUS_ENABLED to enable RADIUS authentication on your
	server.  Requires an operational RADIUS server and
	understanding of how to update and maintain RADIUS
	configurations.

Edit lib/config.h

	You shouldn't need to modify anything in here, but this is
	where the port-specific defaults reside.

xmake clean
xmake

Create a news home called /news (in recognition that usenet news is a
major subsystem, we have no need of this /usr/local/news crap :).
/news can also be a symlink to wherever the real news home is.

Create a news user-id and a news group-id.  Determine whether you are
going to run the Diablo feeder side, the Diablo reader side, or both
subsystems on your box.  Anything marked MOUNTED PARTITION below is
recommended to be a separately mounted partition.  The suggested
MINIMUM partition sizes for a full feed are shown.

	mkdir /news		(reader and feeder, MOUNTED PARTITION/ 4G)
	mkdir /news/dbin	(reader and feeder)
	mkdir /news/spool	(reader and feeder)
	mkdir /news/dqueue	(feeder only)
	mkdir /news/spool/news	(feeder only, MOUNTED PARTITION, 8G)
	mkdir /news/spool/cache	(reader only, MOUNTED PARTITION, 2G)
	mkdir /news/spool/group	(reader only, MOUNTED PARTITION, 16G)
	chown -R news.news /news

	xmake install

Make sure that all *underlying* mount points are properly chown'd and
chmod'd to prevent weirdness on a number of UNIX platforms.  These
mount points should be owned by the same user you will be running news
as.  For most configurations, this will be user 'news'.

Generally speaking, when you do an 'xmake install', Diablo will
install defaults for all system files.  The following systems files
must be in /news/etc or placed in /news/etc if not placed there by the
'xmake install'.  The required files are:

	diablo.config	(reader and feeder)
	dhistory	(feeder only, created on startup of diablo)
	dspool.ctl	(feeder only)
	dnewsfeeds	(feeder only)
	dactive.kp	(required for reader, optional for feeder (1))
	dcontrol.ctl	(reader only)
	dexpire.ctl	(reader only)
	moderators	(reader only)
	dreader.access	(reader only)
	dserver.hosts	(reader only)

	(1): The dsyncgroups program can be used to generate an initial
	  dactive.kp database, see the manual page for dsyncgroups.
	  You can configure either the Diablo feeder OR the Diablo
	  reader to master the article numbering.  If you want the
	  feeder to master article numbering in order to then push out
	  a slave feed to one or more readers, dactive.kp must be
	  maintained on the machine running the feeder.  Otherwise the
	  feeder does not need to use dactive.kp.  See diablo.config
	  for more information.

Don't forget the adm directory with the sample crontabs.  You will
have to edit the sample crontab as appropriate for your system, and
then install it for the 'news' user.

And you are off.

			WHEN UPGRADING FROM AN EARLIER RELEASE

We now recommend that if you are upgrading from 1.13 or earlier, that
you completely wipe and reinstall diablo including wiping the history
file and spool.  Large changes were done to the Diablo codebase since
1.13 and starting fresh will save you a lot of headaches going
forward.

If upgrading from a later release you should be able to simply install
over the previous release (though making a backup is highly
recommended).  Do remember that since the 1.x days, dreader.hosts file
is no longer valid as the configuration has changed significantly and
is now read from the dreader.access file instead.

			CHECKLIST ONCE IT IS RUNNING

Here's a checklist for once you have Diablo running:

* Make sure syslog is logging news.  Read your /etc/syslog.conf file
  to determine if you are logging news related syslog message, and to
  figure out the location of your log files.  Usually located in
  /var/log/news/*.

* If you are running a feeder system:
  'grep DIABLO /var/log/news/news.notice' (or wherever your syslog
  puts the log) and use the uptime and 'arts' numbers to calculate
  the articles per minute.  The uptime is in HH:MM, so calculate:
  arts / (HH * 60 + MM) .  For a full feed as of March 2001, you
  should wind up with between 500 and 800 articles/min if you
  properly primed the history file.  If you have not primed the
  history file and are taking multiple feeds, you may see a higher
  article rate for several days until the history file stabilizes.

* After Diablo has been running for a day, check the logs generated by
  the cron scripts.  Make sure that the expire is being run every four
  hours.  These logs are located in /news/logs/.  Ensure that your
  cronjobs are rotating these logs as they can grow very large.

* After Diablo has been running for a few days, check the logs again.
  Make sure that expire is still running properly, and that the 
  history rewrite (biweekly.atrim) is running properly.

* After a few weeks of operation, double check that biweekly.atrim has
  been running properly and that the dhistory file has stabilized to a
  reasonable size (as of July 1997, between 200 and 300 MBytes).  This
  size will vary greatly depending on your diablo.config setting of
  'remember'.

  If you have a lot of feeds and a lot of memory, it may be worthwhile 
  increasing the dhistory table hash size from 4 million entries to 
  8 or 16 million, see adm/biweekly.atrim and the manual page to diload for
  more information.

* When running Diablo in a reader configuration, you need to periodically
  (like once a month) clean dactive.kp.  This is not yet automated... you
  have to shut the whole diablo system down and do 'dkp -t dactive.kp'.

