                 Welcome to GNUnet


What is GNUnet?
===============

GNUnet is an anonymous, distributed file-sharing
system that is currently developed at Purdue University. 
GNUnet is a part of the GNU project (http://www.gnu.org/).

This is a BETA release. The network has not been tested
on a large scale yet. While there are no known significant
bugs, the performance may be worse that for the final 
version. Do not run GNUnet on production machines. 

Anonymization and the format for the content stored
are already finalized and tested. Future versions will
support the same format for content.

For a longer description of the GNUnet System see our 
webpages http://www.gnu.org/projects/GNUnet/ or
http://www.ovmj.org/GNUnet/


How to install?
===============

The fast way for a single-user installation to
$HOME is to run contrib/autoinstall in this directory.
If you want to do it step-by-step or install to
a different directory, read on.

GNUnet can be build using the default build
GNU build process. Additionally, you need to download
an initial list of hosts to connect to and
start a server process. The GNU compilation 
process is described in the INSTALL file.

You may need to specify --with-crypto= to point to the base
for your openssl installation, i.e. ./configure
--with-crypto=/usr/local/openssl. In addition, if you
receive an error during the running of ./autogen.sh or
that looks like " macro `AM_PATH_GTK' not
found in library", then you may need to run aclocal by hand
with the -I option, pointing to your aclocal m4 macros, i.e.
aclocal -I /usr/local/share/aclocal

A default-configuration file for users is provided
unter contrib/gnunet.conf and should be put under
"/etc/skel/.gnunet/gnunet.conf". Users (including root, 
though running GNUnet as root is discouraged) must copy that 
file into their home directory before they can use
GNUnet. 

In order to start a permanent node, just create a
new user "gnunet" and start "gnunetd" as that user
whenever the system boots. contrib/ also contains
some scripts that may be helpful for that purpose.

GDBM is currently required. Soon there will be a configurable
content store.

autoconf >= 2.52 is recommended.
libextractor >= 0.1.0 is also recommended.

Trouble with OpenSSL
====================

A user remarked that if you get errors relating 
to OpenSSL, such as openssl/rsa.h not found or
linking against -lcrypt failed, you may want to try
to install openssl (0.9.6c) using some arguments
to config:

./config --prefix=/usr/local --openssldir=/usr/local/openssl

You can also try to specify --with-crypto=PREFIX
when configuring GNUnet to point to your ssl
directory.

Configuration
=============

The defaults are usually ok, you may want to adjust
the limitations (limit space consumption, etc.) though.
If you want to configure, edit "~/.gnunet/gnunet.conf".

If you want to use a different configuration file, 
pass the name of the configuration file as an 
argument with the option -c to any GNUnet application.


Usage
=====

First, you must obtain an initial list of
GNUnet hosts. A single host is sufficient. The
GNUnet webpage has a public directory. Copy
the file(s) from there to "~/.gnunet/data/hosts"
(or to another directory, depending on your
"~/.gnunet/gnunet.conf" configuration file).

Now start the local node "gnunetd". This process
should run whenever you are online. You may start
it as a service with /etc/init.d/gnunetd start. To 
insert files into GNUnet, use the tools "gnunet-insert" and
"gnunet-insert-multi". 

If want to use a GUI, just invoke gnunet-gtk. 
If you want to use the shell, use
"gnunet-search KEYWORD". This will display a list
of results to the console. Then use 
"gnunet-download -o FILENAME -- HASH FILESIZE CRC" to 
retrieve a file. The HASH, FILESIZE and CRC are printed by
gnunet-search together with a description. 

For further documentation, see our webpage.


Hacking GNUnet
==============

Contributions are welcome, please submit bugs
to http://www.ovmj.org/~mantis/. Please make sure
to run contrib/report.sh and include the output with your
bug reports. Submit patches via E-Mail to gnunet-developers@gnu.org.


Stay tuned
==========

Various GNUnet mailinglists exist or will be
introduced soon. Check out the webpages:
* http://www.gnu.org/software/GNUnet/
* http://www.ovmj.org/GNUnet/

