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