README.md: Create a Markdown README document
[oweals/gnunet.git] / README.md
1 <center><a href="https://gnunet.org"><img src="contrib/branding/logo/gnunet-logo-dark-text.svg" alt="GNUnet"width="200px"/></a></center>
2 > GNUnet is a *new* network protocol stack for building secure, distributed, and privacy-preserving applications. 
3
4 * [Install](#how-to-install-gnunet)
5   * [From Source](#from-source)
6   * [Using Docker](#docker)
7 * [Using GNUnet](#using-gnunet)
8 * [License](#license)
9
10 How to Install GNUnet
11 ---------------------
12
13 ### 1. From Source
14
15 **Dependencies**
16
17 Install these packages. Some of them may need to be installed from source depending on your OS.
18
19 ```
20 - libmicrohttpd      >= 0.9.42
21 - libgcrypt          >= 1.6
22 - libgnurl           >= 7.35.0      (recommended, available from https://gnunet.org/gnurl)
23 - libcurl            >= 7.35.0      (alternative to libgnurl)
24 - libunistring       >= 0.9.2
25 - gnutls             >= 3.2.12      (highly recommended: a gnutls linked against libunbound)
26 - libidn             >= 1.0
27 - libextractor       >= 0.6.1       (highly recommended)
28 - openssl            >= 1.0         (binary, used to generate X.509 certificate)
29 - libltdl            >= 2.2         (part of GNU libtool)
30 - sqlite             >= 3.8         (default database, required)
31 - mysql              >= 5.1         (alternative to sqlite)
32 - postgres           >= 9.5         (alternative to sqlite)
33 - Texinfo            >= 5.2         [*1]
34 - which                             (for the bootstrap script)
35 - gettext
36 - zlib
37 - pkg-config
38 ```
39
40
41 You can also install the dependencies with the [GNU Guix package manager:](https://https://www.gnu.org/software/guix/) by using the provided environment file: 
42
43 ```shell
44 guix package -l guix-env.scm
45 ```
46
47
48 **Using GNU Make**
49
50 ```shell
51 ./bootstrap # Run this to generate the configure files.
52 ./configure # See the various flags avalable to you.
53 make
54 make install
55 ```
56
57 **Using the [GNU Guix package manager:](https://https://www.gnu.org/software/guix/) **
58
59 ```shell
60 # To build, run tests, and install:
61 guix package -f guix-env.scm
62
63 # To skip the testing phase:
64 guix package -f guix-env.scm:notest
65 ```
66
67
68 ### 2. Docker
69
70 ```
71 cd docker
72 docker build -t gnunet .
73 ```
74
75
76
77 ## Using GNUnet
78
79 There are many possible ways to use the subsystems of GNUnet,    we will provide a few examples in this section.
80
81
82 <center> <a href="contrib/gnunet-arch-full.svg"><img src="contrib/gnunet-arch-full.svg" alt="GNUnet Modular Architecture" width="400px" border="1px"/></a></center>
83
84 >***GNUnet is composed of over 30 modular subsystems***
85
86
87
88 ### GNS
89
90 *coming soon*
91
92 ### Cadet
93
94 #### Examples
95
96 Open a Cadet connection:
97
98 ```shell
99 # Node 1
100 cadet -o <shared secret>
101 ```
102
103 Conect to peer:
104
105 ```shell
106 # Node 2
107 cadet <peer-id of Node 1> <shared secret>
108 ```
109
110 #### Sharing Files
111
112 With the cli tool, you can also share files:
113
114 ```shell
115 # Node 1
116 cadet -o <shared secret> > filename
117 ```
118
119 ```shell
120 # Node 2
121 cadet <peer-id of Node 1> <shared secret>
122 ```
123
124
125 VPN
126 ---
127
128 Running a Hostlist Server
129 --------------------------
130
131 GNUnet Configuration
132 --------------------------
133 ### Examples
134
135 ```yaml
136 [transport]
137 OPTIONS = -L DEBUG
138 PLUGINS = tcp
139 #PLUGINS = udp
140
141 [transport-tcp]
142 OPTIONS = -L DEBUG
143 BINDTO = 192.168.0.2
144 ```
145
146 TODO: *explain what this does and add more*
147
148
149 Philosophy
150 -------------------------
151
152
153 Related Projects
154 -------------------------
155
156
157
158  <a href="https://pep.foundation"><img src="https://pep.foundation/static/media/uploads/peplogo.svg" alt="pep.foundation" width="50px"/></a>  <a href="https://secushare.org"><img src="https://secushare.org/img/secushare-0444.png" alt="Secushare" width="50px"/></a>
159
160