{"id":19174609,"url":"https://github.com/equalitie/gnunet","last_synced_at":"2026-06-18T22:31:23.162Z","repository":{"id":146907515,"uuid":"105896463","full_name":"equalitie/gnunet","owner":"equalitie","description":"Fork of GNUnet: https://gnunet.org/git/gnunet.git/","archived":false,"fork":false,"pushed_at":"2018-01-12T15:05:59.000Z","size":74762,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-23T00:44:03.272Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/equalitie.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-05T13:57:53.000Z","updated_at":"2020-11-14T15:00:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"a81d1554-2a63-41d9-a372-23b0ded593bf","html_url":"https://github.com/equalitie/gnunet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/equalitie/gnunet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fgnunet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fgnunet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fgnunet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fgnunet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/equalitie","download_url":"https://codeload.github.com/equalitie/gnunet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/equalitie%2Fgnunet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34510281,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T10:18:30.698Z","updated_at":"2026-06-18T22:31:23.131Z","avatar_url":"https://github.com/equalitie.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"                       Welcome to GNUnet\n\n\nWhat is GNUnet?\n===============\n\nGNUnet is peer-to-peer framework providing a network abstractions and\napplications focusing on security and privacy.  So far, we have\ncreated applications for anonymous file-sharing, decentralized naming\nand identity management, decentralized and confidential telephony and\ntunneling IP traffic over GNUnet.  GNUnet is currently developed by a\nworldwide group of independent free software developers.  GNUnet is a\nGNU package (http://www.gnu.org/).\n\nThis is an ALPHA release.  There are known and significant bugs as\nwell as many missing features in this release.\n\nGNUnet is free software released under the GNU General Public License\n(v3 or later). For details see the COPYING file in this directory.\n\nAdditional documentation about GNUnet can be found at\nhttps://gnunet.org/ and in the doc/ folder.\n\n\nDependencies:\n=============\n\nPlease note that for many of its dependencies GNUnet requires very\nrecent versions of the libraries which are often NOT to be found in\nstable distributions in 2014.  While using older packages may in some\ncases on some operating systems may seem to work in some limited\nfashion, we are in many cases aware of serious problems with older\npackages.  Hence please make sure to use  the versions listed below.\n\nThese are the direct dependencies for running GNUnet:\n\n- libmicrohttpd \u003e= 0.9.42\n- libgcrypt     \u003e= 1.6\n- libgnurl      \u003e= 7.35.0 (available from https://gnunet.org/gnurl)\n- libunistring  \u003e= 0.9.2\n- gnutls        \u003e= 3.2.12\n- libidn        \u003e= 1.0\n- libextractor  \u003e= 0.6.1 (highly recommended)\n- openssl       \u003e= 1.0 (binary, used to generate X.509 certificate)\n- libltdl       \u003e= 2.2 (part of GNU libtool)\n- sqlite        \u003e= 3.8 (default database, required)\n- mysql         \u003e= 5.1 (alternative to sqlite)\n- postgres      \u003e= 9.5 (alternative to sqlite)\n- libopus       \u003e= 1.0.1 (optional for experimental conversation tool)\n- libpulse      \u003e= 2.0 (optional for experimental conversation tool)\n- libogg        \u003e= 1.3.0 (optional for experimental conversation tool)\n- python-zbar   \u003e= 0.10 (optional for gnunet-qr)\n- TeX Live      \u003e= 2012 (optional for gnunet-bcd)\n- Texinfo       \u003e= 5.2\n- libglpk       \u003e= 4.45 (optional for experimental code)\n\nRecommended autotools for compiling the git version are:\n- autoconf \u003e= 2.59\n- automake \u003e= 1.11.1\n- libtool  \u003e= 2.2\n\n\nHow to install?\n===============\n\nThe fastest way is to use a binary package if it is available for your\nsystem.  For a more detailed description, read the installation\ninstructions on the webpage at https://gnunet.org/installation.\nGeneric installation instructions are in the INSTALL file in this\ndirectory.\n\nNote that some functions of GNUnet require \"root\" access.  GNUnet will\ninstall (tiny) SUID binaries for those functions is you run \"make\ninstall\" as root.  If you do not, GNUnet will still work, but some\nfunctionality will not be available (including certain forms of NAT\ntraversal).\n\nGNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/)\nand libgcrypt (http://www.gnupg.org/).  You can specify the path to\nlibgcrypt by passing \"--with-gcrypt=PATH\" to configure.  You will also\nneed either sqlite (http://www.sqlite.org/), MySQL\n(http://www.mysql.org/) or PostGres (http://www.postgres.org/).\n\nIf you install from source, you need to install GNU libextractor first\n(download from http://www.gnu.org/software/libextractor/).  We also\nrecommend installing GNU libmicrohttpd (download from\nhttp://www.gnu.org/software/libmicrohttpd/).  Then you can start the\nactual GNUnet compilation and installation process with:\n\n$ export GNUNET_PREFIX=/usr/local/lib # or other directory of your choice\n# addgroup gnunetdns\n# adduser --system --home \"/var/lib/gnunet\" --group gnunet --shell /bin/sh\n# ./configure --prefix=$GNUNET_PREFIX/.. --with-extractor=$LE_PREFIX\n$ make\n# make install\n# sudo -u gnunet gnunet-arm -s\n\nNote that running the 'configure' and 'make install' steps as\nroot (or with sudo) is required as some parts of the installation\nrequire the creation of SUID binaries.  The installation will\nwork if you do not run these steps as root, but some components\nmay not be installed in the perfect place or with the right\npermissions and thus won't work.\n\nThis will create the users and groups needed for running GNUnet\nsecurely and then compile and install GNUnet to $GNUNET_PREFIX/../bin/,\n$GNUNET_PREFIX/ and $GNUNET_PREFIX/../share/ and start the system\nwith the default configuration.  It is strongly recommended that you\nadd a user \"gnunet\" to run \"gnunet-arm\".  You can then still run the\nend-user applications as another user.\n\nIf you create a system user \"gnunet\", it is recommended that you edit\nthe configuration file slightly so that data can be stored in the\nsystem user home directory at \"/var/lib/gnunet\".  Depending on what\nthe $HOME-directory of your \"gnunet\" user is, you might need to set\nthe SERVICEHOME option in section \"[PATHS]\" to \"/var/lib/gnunet\" to\ndo this.  Depending on your personal preferences, you may also want to\nuse \"/etc/gnunet.conf\" for the location of the configuration file in\nthis case (instead of ~gnunet/.config/gnunet.conf\").  In this case,\nyou need to start GNUnet using \"gnunet-arm -s -c /etc/gnunet.conf\" or\nset \"XDG_CONFIG_HOME=/etc/\".\n\nYou can avoid running 'make install' as root if you run configure\nwith the \"--with-sudo=yes\" option and have extensive sudo rights\n(can run \"chmod +s\" and \"chown\" via 'sudo').  If you run 'make install'\nas a normal user without sudo rights (or the configure option),\ncertain binaries that require additional priviledges will not be\ninstalled properly (and autonomous NAT traversal, WLAN, DNS/GNS and\nthe VPN will then not work).\n\nIf you run 'configure' and 'make install' as root or use the SUDO\noption, GNUnet's build system will install \"libnss_gns*\" libraries to\n\"/lib/\" regardless (!) of the $GNUNET_PREFIX you might have specified,\nas those libraries must be in \"/lib/\".  If you are packaging GNUnet\nfor binary distribution, this may cause your packaging script to miss\nthose plugins, so you might need to do some additional manual work to\ninclude those libraries in your binary package(s).  Similarly, if you\nwant to use the GNUnet naming system and did NOT run GNUnet's 'make\ninstall' process with SUDO rights, the libraries will be installed to\n\"$GNUNET_PREFIX\" and you will have to move them to \"/lib/\"\nmanually.\n\nFinally, if you are compiling the code from git, you have to\nrun \". bootstrap\" before ./configure.  If you receive an error during\nthe running of \". bootstrap\" that looks like \"macro `AM_PATH_GTK' not\nfound in library\", you may need to run aclocal by hand with the -I\noption, pointing to your aclocal m4 macros, i.e.\n\n$ aclocal -I /usr/local/share/aclocal\n\n\nConfiguration\n=============\n\nNote that additional, per-user configuration files can be created by\neach user.  However, this is usually not necessary as there are few\nper-user options that normal users would want to modify.  The defaults\nthat are shipped with the installation are usually just fine.\n\nThe gnunet-setup tool is particularly useful to generate the master\nconfiguration for the peer.  gnunet-setup can be used to configure and\ntest (!) the network settings, choose which applications should be run\nand configure databases.  Other options you might want to control\ninclude system limitations (such as disk space consumption, bandwidth,\netc.).  The resulting configuration files are human-readable and can\ntheoretically be created or edited by hand.\n\ngnunet-setup is a separate download and requires somewhat recent\nversions of GTK+ and Glade. You can also create the configuration file\nby hand, but this is not recommended.  For more general information\nabout the GNU build process read the INSTALL file.\n\nGNUnet uses two types of configuration files, one that specifies the\nsystem-wide defaults (typically located in\n$GNUNET_PREFIX/../share/gnunet/config.d/) and a second one that overrides\ndefault values with user-specific preferences.  The user-specific\nconfiguration file should be located in \"~/.config/gnunet.conf\" or its\nlocation can be specified by giving the \"-c\" option to the respective\nGNUnet application.\n\n\nUsage\n=====\n\nFirst, you must obtain an initial list of GNUnet hosts.  Knowing a\nsingle peer is sufficient since after that GNUnet propagates\ninformation about other peers.  Note that the default configuration\ncontains URLs from where GNUnet downloads an initial hostlist\nwhenever it is started.  If you want to create an alternative URL for\nothers to use, the file can be generated on any machine running\nGNUnet by periodically executing\n\n$ cat $SERVICEHOME/data/hosts/* \u003e the_file\n\nand offering 'the_file' via your web server.  Alternatively, you can\nrun the build-in web server by adding '-p' to the OPTIONS value\nin the \"hostlist\" section of gnunet.conf and opening the respective\nHTTPPORT to the public.\n\nIf the solution with the hostlist URL is not feasible for your\nsituation, you can also add hosts manually.  Simply copy the hostkeys\nto \"$SERVICEHOME/data/hosts/\" (where $SERVICEHOME is the directory\nspecified in the gnunet.conf configuration file).  You can also use\n\"gnunet-peerinfo -g\" to GET a URI for a peer and \"gnunet-peerinfo -p\nURI\" to add a URI from another peer.  Finally, GNUnet peers that use\nUDP or WLAN will discover each other automatically (if they are in the\nvicinity of each other) using broadcasts (IPv4/WLAN) or multicasts\n(IPv6).\n\nThe local node is started using \"gnunet-arm -s\".  GNUnet should run\n24/7 if you want to maximize your anonymity, as this makes partitioning\nattacks harder.\n\nOnce your peer is running, you should then be able to access GNUnet\nusing the shell:\n\n$ gnunet-search KEYWORD\n\nThis will display a list of results to the console.  You can abort\nthe command using \"CTRL-C\".  Then use\n\n$ gnunet-download -o FILENAME GNUNET_URI\n\nto retrieve a file.  The GNUNET_URI is printed by gnunet-search\ntogether with a description.  To publish files on GNUnet, use the\n\"gnunet-publish\" command.\n\n\nThe GTK user interface is shipped separately.  After downloading and\ninstalling gnunet-gtk, you can invoke the setup tool and the\nfile-sharing GUI with:\n\n$ gnunet-setup\n$ gnunet-fs-gtk\n\nFor further documentation, see our webpage.\n\n\nHacking GNUnet\n==============\n\nContributions are welcome, please submit bugs to\nhttps://gnunet.org/bugs/.  Please make sure to run contrib/report.sh\nand include the output with your bug reports.  More about how to\nreport bugs can be found in the GNUnet FAQ on the webpage.  Submit\npatches via E-Mail to gnunet-developers@gnu.org.\n\nIn order to run the unit tests with by hand (instead of using\n\"make check\"), you need to\nset an environment variable (\"GNUNET_PREFIX\") to the directory\nwhere GNUnet's libraries are installed.\nAlso, before running any testcases, you must\ncomplete the installation first.  Quick summary:\n\n$ ./configure --prefix=$SOMEWHERE\n$ make\n$ make install\n$ make check\n\nSome of the testcases require python \u003e= 2.6 and pexpect to be\ninstalled.  If any testcases fail to pass on your system, run\n\"contrib/report.sh\" and report the output together with\ninformation about the failing testcase to the Mantis bugtracking\nsystem at https://gnunet.org/bugs/.\n\n\nRunning HTTP on port 80 and HTTPS on port 443\n=============================================\n\nIn order to hide GNUnet's HTTP/HTTPS traffic perfectly, you might\nconsider running GNUnet's HTTP/HTTPS transport on port 80/443.\nHowever, we do not recommend running GNUnet as root.  Instead, forward\nport 80 to say 1080 with this command (as root, in your startup\nscripts):\n\n# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1080\n\nor for HTTPS\n\n# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 4433\n\nThen set in the HTTP section of gnunet.conf the \"ADVERTISED_PORT\" to\n\"80\" and \"PORT\" to 1080 and similarly in the HTTPS section the\n\"ADVERTISED_PORT\" to \"443\" and \"PORT\" to 4433.\n\nYou can do the same trick for the TCP and UDP transports if you want\nto map them to a priviledged port (from the point of view of the\nnetwork).  However, we are not aware of this providing any advantages\nat this point.\n\nIf you are already running an HTTP or HTTPS server on port 80 (or 443),\nyou may be able to configure it as a \"ReverseProxy\".  Here, you tell\nGNUnet that the externally visible URI is some sub-page on your website,\nand GNUnet can then tunnel its traffic via your existing HTTP server.\nThis is particularly powerful if your existing server uses HTTPS, as\nit makes it harder for an adversary to distinguish normal traffic to\nyour server from GNUnet traffic.  Finally, even if you just use HTTP,\nyou might benefit (!) from ISP's traffic shaping as opposed to being\nthrottled by ISPs that dislike P2P.  Details for configuring the\nreverse proxy are documented on our website.\n\n\nStay tuned\n==========\n\n* https://gnunet.org/\n* https://gnunet.org/bugs/\n* https://gnunet.org/git/\n* http://www.gnu.org/software/gnunet/\n* http://mail.gnu.org/mailman/listinfo/gnunet-developers\n* http://mail.gnu.org/mailman/listinfo/help-gnunet\n* http://mail.gnu.org/mailman/listinfo/info-gnunet\n* http://mail.gnu.org/mailman/listinfo/gnunet-svn\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalitie%2Fgnunet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fequalitie%2Fgnunet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fequalitie%2Fgnunet/lists"}