X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=README;h=b2b7233eda51e2df7789cfbb0a9fb18c4c46b008;hb=3d663c1dcd930c7e5fda7eadf0fabbb3e3f0beb8;hp=8404e6b3aedeaa78315dfb894f5193caef406dac;hpb=180a7971cde5f6dca292133c9b5471baf1de4b8e;p=oweals%2Fgnunet.git diff --git a/README b/README index 8404e6b3a..b2b7233ed 100644 --- a/README +++ b/README @@ -7,44 +7,41 @@ 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 part of the GNU project (http://www.gnu.org/). +developers. GNUnet is a GNU package (http://www.gnu.org/). -This is a BETA release. While there are no known significant bugs, we -are still changing significant aspects of the system in any other -version. While we believe that the system is usable, quite a few -important features -- which would improve performance make the life of -users easier -- are still missing. Also, the documentation may not be -adequate for inexperienced users. +This is an ALPHA release. There are known and significant bugs as +well as many missing features in this release. -For a longer description of the GNUnet System see our webpages -http://www.gnu.org/software/gnunet/ and http://gnunet.org/. +Additional documentation about GNUnet can be found at +https://gnunet.org/. Dependencies: ============= -For the impatient, here is the list of immediate dependencies for -running GNUnet: +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. -- libextractor >= 0.5.23 -- libmicrohttpd >= 0.4.2 +These are the direct dependencies for running GNUnet: + +- libextractor >= 0.6.1 +- libmicrohttpd >= 0.9.18 - libgcrypt >= 1.2 -- libgmp >= 4.0 -- libcurl >= 7.15.4 +- libcurl >= 7.21.0 +- libunistring >= 0.9.2 - libltdl >= 2.2 (part of GNU libtool) -- mysql >= 5.0 (strongly recommended) -- sqlite >= 3.0 (alternative to MySQL) - -Certain gnunet-setup plugins would also like to have: -- GTK >= 2.6.0 -- Qt >= 4.0 +- 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.9.4 -- libtool >= 2.2 (only in Debian experimental) - -See also README.debian for a list of Debian packages. +- automake >= 1.11.1 +- libtool >= 2.2 How to install? @@ -52,37 +49,64 @@ 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 http://gnunet.org/documentation.php3. - +instructions on the webpage at https://gnunet.org/installation. -If you install from source, you need to install libextractor -first (download from http://gnunet.org/libextractor/). Then -you can start the actual GNUnet compilation process with: +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). -$ ./configure --prefix=$HOME --with-extractor=$HOME +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 and installation process with: + +$ export GNUNET_PREFIX=/usr/local # or other directory of your choice +$ addgroup gnunetdns +$ adduser gnunet gnunet +$ ./configure --prefix=$GNUNET_PREFIX --with-extractor=$LE_PREFIX $ make # make install -# gnunet-setup # (note: does not yet exist!) -# gnunet-arm -s - -This will compile and install GNUnet to ~/bin/, ~/lib/ and ~/man/. -gnunet-setup will create the configuration; this step is -interactive. You can run gnunet-setup as root for a system-wide -installation or as a particular user to create a personal -installation. If you do not want to run gnunetd as root, gnunet-setup -can be used to add a user "gnunet". Data will then be stored in -/var/lib/gnunet and gnunetd will run as that user. Note that -additional, per-user configuration files (~/.gnunet/gnunet.conf) also -need to be created by each user by running gnunet-setup without the -d -option. Depending on your operating system the wizards of -gnunet-setup can also be used to create an init script that starts -gnunetd each time the system boots. For more general information -about the GNU build process read the INSTALL file. - -GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/) -and libgcrypt. You can specify the path to libgcrypt by passing -"--with-gcrypt=PATH" to configure. You will also need either sqlite -(version 3 or higher) or MySQL (version 5.0 or higher). +# sudo -u gnunet mkdir ~/.gnunet/ +# sudo -u gnunet touch ~/.gnunet/gnunet.conf +# sudo -u gnunet gnunet-arm -s + +This will create the users and groups needed for running GNUnet +securely and then compile and install GNUnet to $GNUNET_PREFIX/bin/, +$GNUNET_PREFIX/lib/ and $GNUNET_PREFIX/share/ and start the system +with the default configuration. It is strongly 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 system user "gnunet", it is recommended that you edit +the configuration file slightly so that data can be stored in the +system user home directory at "/var/lib/gnunet"; you may also want to +use "/etc/gnunet.conf" for the location of the configuration file in +this case. + +You can avoid running 'make install' as root if you run configure +with the "--with-sudo=yes" option and have extensive sudo rights +(can run "chmod +s" and "chown" via 'sudo'). If you run 'make install' +as a normal user without sudo rights (or the configure option), +certain binaries that require additional priviledges will not be +installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and +the VPN will then not work). + +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 @@ -96,31 +120,20 @@ $ aclocal -I /usr/local/share/aclocal Configuration ============= -// FIXME: update this section once we have gnunet-setup! -GNUnet uses two types of configuration files, one for the daemon -(called gnunetd.conf) and one for each user (gnunet.conf). You can -create and edit these configuration files with the gnunet-setup tool. -You need to add the option "-d" to gnunet-setup in order to edit -gnunetd.conf (by default, gnunet-setup will edit gnunet.conf). The -defaults that are created the first time you run gnunet-setup are -usually ok, you may want to adjust the limitations (space consumption, -bandwidth, etc.) though. The configuration files are human-readable; -gnunetd's configuration is typically located at "/etc/gnunetd.conf". -The per-user configuration file should be at "~/.gnunet/gnunet.conf". -A default version of the per-user configuration will automatically -be created whenever you run any tool that needs that particular -cofniguration file. - -You MUST create /etc/gnunet.conf explicitly before starting gnunetd, -and the recommended way to do this is to run gnunet-setup -d (plus -possibly options to specify which user interface you would perfer). - -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. Sending a SIGHUP to the gnunetd process will -cause gnunetd to re-read the configuration file. Note that not all -options can be changed at runtime this way (e.g. to change any port -number, you must fully restart gnunetd). +GNUnet uses two types of configuration files, one that specifies the +system-wide defaults (typically located in +$GNUNET_PREFIX/share/gnunet/config.d/) 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 run gnunet-setup (available as part of the +gnunet-gtk source package) or simply create an empty file. Usage @@ -134,31 +147,22 @@ 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 $GNUNETD_HOME/data/hosts/* > the_file +$ cat $SERVICEHOME/data/hosts/* > the_file -If the solution with the URL is not feasible for your situation, you -can also add hosts manually. The GNUnet webpage has a public -directory of hostkeys under http://gnunet.org/hosts/. You -can of course use any other source for these files. Copy the hostkeys -to "$GNUNETD_HOME/data/hosts/" (where $GNUNETD_HOME is the -directory specified in the /etc/gnunet.conf configuration 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. -Now start the local node using "gnunet-arm -s". GNUnet should run 24/7 if -you want to maximize your anonymity. You may start it as a service -with "/etc/init.d/gnunet start". To publish files on GNUnet, use -the "gnunet-publish" command. - -The GTK user interface is shipped separately from GNUnet. After -downloading and installing gnunet-gtk, you can invoke the GUI with: - -$ gnunet-gtk - -For Qt/KDE users, there is also a QT user interface (also shipped -separately). If you install gnunet-qt, you can invoke the GUI with: +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). -$ gnunet-qt +Now start the local node using "gnunet-arm -s". GNUnet should run 24/7 if +you want to maximize your anonymity. -If you want to use the shell (part of this distribution), use +You should then be able to access GNUnet using the shell: $ gnunet-search KEYWORD @@ -167,12 +171,16 @@ 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. +together with a description. To publish files on GNUnet, use the +"gnunet-publish" command. + -In order to share files, the easiest way is to create a directory -with the files (and directories) that you want to share and run +The GTK user interface is shipped separately. After downloading and +installing gnunet-gtk, you can invoke the setup tool and the +file-sharing GUI with: -$ nohup gnunet-auto-share NAME-OF-THE-DIRECTORY & +$ gnunet-setup +$ gnunet-fs-gtk For further documentation, see our webpage. @@ -181,7 +189,7 @@ Hacking GNUnet ============== Contributions are welcome, please submit bugs to -https://gnunet.org/mantis/. Please make sure to run contrib/report.sh +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. @@ -200,47 +208,46 @@ $ 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/mantis/. +Some of the testcases require python >= 2.6 and pexpect to be +installed. 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 -======================= +Running http on port 80 and https on port 443 +============================================= -In order to hide GNUnet's HTTP traffic perfectly, you might consider -running GNUnet's HTTP transport on port 80. However, you should not -run GNUnet as root. Instead, forward port 80 to say 8080 with this -command (as root, in your startup scripts): +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 -Then set in the HTTP section of gnunetd.conf the "ADVERTISED-PORT" -to "80" and "PORT" to 8080. 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). +or for HTTPS +# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 4433 -Running the SMTP transport -========================== +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. -// NOTE: SMTP is not currently available in this version of GNUnet -Running GNUnet over SMTP (e-mail) is a bit more involved. Note that -you do not need to run all transports (only running the NAT transport -is the only thing that will not work). If you really want to do -P2P over SMTP, read the instructions at http://gnunet.org/smtp.php3 +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://gnunet.org/ -* https://gnunet.org/mantis/ -* https://gnunet.org/drupal/ * 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 -