123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- Welcome to GNUnet
- What is GNUnet?
- ===============
- GNUnet is peer-to-peer framework focusing on security. The first and
- primary application for GNUnet is anonymous file-sharing. GNUnet is
- currently developed by a worldwide group of independent free software
- developers. GNUnet is a GNU package (http://www.gnu.org/).
- This is an ALPHA release. There are known and significant bugs as
- well as many missing features in this release.
- Additional documentation about GNUnet can be found at
- https://gnunet.org/.
- Dependencies:
- =============
- Please note that for many of its dependencies GNUnet requires very
- recent versions of the libraries which are often NOT to be found in
- stable distributions in 2011. While using older packages may in some
- cases on some operating systems may seem to work in some limited
- fashion, we are in many cases aware of serious problems with older
- packages. Hence please make sure to use the versions listed below.
- These are the direct dependencies for running GNUnet:
- - libextractor >= 0.6.1
- - libmicrohttpd >= 0.9.2
- - libgcrypt >= 1.2
- - libcurl >= 7.21.0
- - libltdl >= 2.2 (part of GNU libtool)
- - sqlite >= 3.0 (default database)
- - mysql >= 5.1 (alternative to sqLite)
- - postgres >= 8.3 (alternative to sqLite)
- Recommended autotools for compiling the SVN version are:
- - autoconf >= 2.59
- - automake >= 1.11.1
- - libtool >= 2.2
- How to install?
- ===============
- The fastest way is to use a binary package if it is available for your
- system. For a more detailed description, read the installation
- instructions on the webpage at https://gnunet.org/installation.
- Note that some functions of GNUnet require "root" access. GNUnet will
- install (tiny) SUID binaries for those functions is you run "make
- install" as root. If you do not, GNUnet will still work, but some
- functionality will not be available (including certain forms of NAT
- traversal).
- GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/)
- and libgcrypt (http://www.gnupg.org/). You can specify the path to
- libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also
- need either sqlite (http://www.sqlite.org/), MySQL
- (http://www.mysql.org/) or PostGres (http://www.postgres.org/).
- If you install from source, you need to install GNU libextractor first
- (download from http://www.gnu.org/software/libextractor/). We also
- recommend installing GNU libmicrohttpd (download from
- http://www.gnu.org/software/libmicrohttpd/). Then you can start the
- actual GNUnet compilation process with:
- $ ./configure --prefix=$HOME --with-extractor=$HOME
- $ make
- # make install
- # sudo -u gnunet mkdir ~/.gnunet/
- # sudo -u gnunet touch ~/.gnunet/gnunet.conf
- # sudo -u gnunet gnunet-arm -s
- This will compile and install GNUnet to $HOME/bin/, $HOME/lib/ and
- $HOME/share/ and start the system with the default configuration. It
- is recommended that you add a user "gnunet" to run "gnunet-arm". You
- can then still run the end-user applications as another user. If you
- create a user "gnunet", it is recommended that you edit the
- configuration file slightly so that data can be stored in
- "/var/lib/gnunet"; you may also want to use "/etc/gnunet.conf" for the
- location of the configuration file in this case.
- Note that additional, per-user configuration files
- (~/.gnunet/gnunet.conf) need to be created by each user (for example,
- by running gnunet-setup). Note that gnunet-setup is a separate
- download and requires recent versions of GTK+ and Glade; you can also
- edit the configuration file by hand, but this is not recommended. For
- more general information about the GNU build process read the INSTALL
- file.
- If you are compiling the code from subversion, you have to run
- ". bootstrap" before ./configure. If you receive an error during the
- running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not
- found in library", 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
- Configuration
- =============
- GNUnet uses two types of configuration files, one that specifies the
- system-wide defaults (typically located in /usr/share/gnunet/defaults
- .conf) and a second one that overrides default values with
- user-specific preferences. The user-specific configuration file
- should be located in "~/.gnunet/gnunet.conf" or its location can be
- specified by giving the "-c" option to the respective GNUnet
- application.
- The defaults that are shipped with the installation are usually ok,
- you may want to adjust the limitations (space consumption, bandwidth,
- etc.) though. The configuration files are human-readable. Note that
- you MUST create "~/.gnunet/gnunet.conf" explicitly before starting
- GNUnet. You can either copy "defaults.conf" or simply create an empty
- file.
- Usage
- =====
- First, you must obtain an initial list of GNUnet hosts. Knowing a
- single peer is sufficient since after that GNUnet propagates
- information about other peers. Note that the default "gnunet.conf"
- contains URLs from where GNUnet downloads an initial hostlist
- whenever it is started. If you want to create an alternative URL for
- others to use, the file can be generated on any machine running
- GNUnet by periodically executing
- $ cat $SERVICEHOME/data/hosts/* > the_file
- and offering 'the_file' via your web server. Alternatively, you can
- run the build-in web server by adding '-p' to the OPTIONS value
- in the "hostlist" section of gnunet.conf and opening the respective
- HTTPPORT to the public.
- If the solution with the hostlist URL is not feasible for your
- situation, you can also add hosts manually. Simply copy the hostkeys
- to "$SERVICEHOME/data/hosts/" (where $SERVICEHOME is the directory
- specified in the gnunet.conf configuration file).
- Now start the local node using "gnunet-arm -s". GNUnet should run 24/7 if
- you want to maximize your anonymity.
- You should then be able to access GNUnet using the shell:
- $ gnunet-search KEYWORD
- This will display a list of results to the console. Then use
- $ gnunet-download -o FILENAME GNUNET_URI
- to retrieve a file. The GNUNET_URI is printed by gnunet-search
- together with a description. To publish files on GNUnet, use the
- "gnunet-publish" command.
- The GTK user interface is shipped separately. After downloading and
- installing gnunet-gtk, you can invoke the GUI with:
- $ gnunet-gtk
- For further documentation, see our webpage.
- Hacking GNUnet
- ==============
- Contributions are welcome, please submit bugs to
- https://gnunet.org/bugs/. Please make sure to run contrib/report.sh
- and include the output with your bug reports. More about how to
- report bugs can be found in the GNUnet FAQ on the webpage. Submit
- patches via E-Mail to gnunet-developers@gnu.org.
- In order to run the unit tests with "make check", you need to
- set an environment variable ("GNUNET_PREFIX") to the directory
- where GNUnet is installed (usually, GNUnet will use OS specific
- tricks in order to try to figure out the PREFIX, but since the
- testcase binaries are not installed, that trick does not work
- for them). Also, before running any testcases, you must
- complete the installation first. Quick summary:
- $ ./configure --prefix=$SOMEWHERE
- $ make
- $ make install
- $ export GNUNET_PREFIX=$SOMEWHERE
- $ make check
- If any testcases fail to pass on your system, run "contrib/report.sh"
- and report the output together with information about the failing
- testcase to the Mantis bugtracking system at
- https://gnunet.org/bugs/.
- Running http on port 80 and https on port 443
- =============================================
- In order to hide GNUnet's HTTP/HTTPS traffic perfectly, you might
- consider running GNUnet's HTTP/HTTPS transport on port 80/443.
- However, we do not recommend running GNUnet as root. Instead, forward
- port 80 to say 8080 with this command (as root, in your startup
- scripts):
- # iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
- or for HTTPS
- # iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 4433
- Then set in the HTTP section of gnunet.conf the "ADVERTISED-PORT" to
- "80" and "PORT" to 8080 and similarly in the HTTPS section the
- "ADVERTISED-PORT" to "443" and "PORT" to 4433.
- You can do the same trick for the TCP and UDP transports if you want
- to map them to a priviledged port (from the point of view of the
- network). However, we are not aware of this providing any advantages
- at this point.
- Stay tuned
- ==========
- * https://gnunet.org/
- * https://gnunet.org/bugs/
- * https://gnunet.org/svn/
- * http://www.gnu.org/software/gnunet/
- * http://mail.gnu.org/mailman/listinfo/gnunet-developers
- * http://mail.gnu.org/mailman/listinfo/help-gnunet
- * http://mail.gnu.org/mailman/listinfo/info-gnunet
- * http://mail.gnu.org/mailman/listinfo/gnunet-svn
|