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