diff options
Diffstat (limited to 'template/install-on-ubuntu1804.html.j2')
-rw-r--r-- | template/install-on-ubuntu1804.html.j2 | 233 |
1 files changed, 4 insertions, 229 deletions
diff --git a/template/install-on-ubuntu1804.html.j2 b/template/install-on-ubuntu1804.html.j2 index 32d4dc91..687d786f 100644 --- a/template/install-on-ubuntu1804.html.j2 +++ b/template/install-on-ubuntu1804.html.j2 | |||
@@ -92,7 +92,6 @@ | |||
92 | <code> | 92 | <code> |
93 | $ cd ~/gnunet_installation/gnunet<br> | 93 | $ cd ~/gnunet_installation/gnunet<br> |
94 | $ ./bootstrap<br> | 94 | $ ./bootstrap<br> |
95 | $ export GNUNET_PREFIX=/usr<br> | ||
96 | $ export CFLAGS="-g -Wall -O0"<br> | 95 | $ export CFLAGS="-g -Wall -O0"<br> |
97 | $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --enable-logging=verbose <br> | 96 | $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --enable-logging=verbose <br> |
98 | $ make -j$(nproc || echo -n 1)<br> | 97 | $ make -j$(nproc || echo -n 1)<br> |
@@ -215,230 +214,12 @@ | |||
215 | </code> | 214 | </code> |
216 | </section> | 215 | </section> |
217 | <section> | 216 | <section> |
218 | <h3>{{ _("Make sure it works") }}</h3> | 217 | <h3>{{ _("Use GNUnet!") }}</h3> |
219 | 218 | <p> | |
220 | <p> | 219 | Please head over here: <a href="https://gnunet.org/en/use.html">Use!</a> |
221 | Let's try out some of GNUnet's use cases. Some should be done before others: | 220 | <p> |
222 | </p> | ||
223 | |||
224 | <ul> | ||
225 | <li>filesharing</li> | ||
226 | <li>A simple chat using CADET</li> | ||
227 | <li>Name resolution using GNS on the command line</li> | ||
228 | <li>Name resolution using GNS with a browser (do it on the command line first)</li> | ||
229 | <li>Serving a website using VPN (do name resolution with a browser first)</li> | ||
230 | </ul> | ||
231 | </section> | ||
232 | <section> | ||
233 | <h4>{{ _("filesharing") }}</h4> | ||
234 | |||
235 | <p> | ||
236 | Let's publish a file in the GNUnet filesharing network. We use the keywords | ||
237 | ("commons" and "state") so other people will be able to search for the file. | ||
238 | </p> | ||
239 | |||
240 | <p> | ||
241 | We can choose any file and describe it with meaningful keywords (using the | ||
242 | `-k` command line option). | ||
243 | </p> | ||
244 | |||
245 | <code> | ||
246 | $ gnunet-publish -k commons -k state ostrom.pdf<br> | ||
247 | Publishing `/home/myself/ostrom.pdf' done.<br> | ||
248 | URI is `gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237'. | ||
249 | </code> | ||
250 | |||
251 | <p> | ||
252 | Finding the file by keyword works with `gnunet-search`. | ||
253 | </p> | ||
254 | |||
255 | <code> | ||
256 | $ gnunet-search commons<br> | ||
257 | #1:<br> | ||
258 | gnunet-download -o "ostrom.pdf" gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237 | ||
259 | </code> | ||
260 | |||
261 | <p> | ||
262 | It gives us the command line call to download the file (and store it as | ||
263 | ostrom.pdf)! | ||
264 | </p> | ||
265 | </section> | ||
266 | <section> | ||
267 | <h4>{{ _("CADET (and Chat)") }}</h4> | ||
268 | |||
269 | <p> | ||
270 | We can use the `gnunet-cadet` command line tool to open a port and from | ||
271 | another machine connect to this port and chat or transfer data. First we need | ||
272 | our *peer ID* of the GNUnet peer opening the port. | ||
273 | </p> | ||
274 | |||
275 | <code> | ||
276 | $ gnunet-peerinfo -s<br> | ||
277 | I am peer `P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG'. | ||
278 | </code> | ||
279 | |||
280 | <p> | ||
281 | Now we open the port (it can be any string!): | ||
282 | </p> | ||
283 | |||
284 | <code> | ||
285 | $ gnunet-cadet -o my-secret-port | ||
286 | </code> | ||
287 | |||
288 | <p>On the other machine we can connect using the peer ID and the port and start chatting!</p> | ||
289 | |||
290 | <code> | ||
291 | $ gnunet-cadet P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG my-secret-port | ||
292 | </code> | ||
293 | </section> | ||
294 | <section> | ||
295 | <h4>{{ _("Name resolution using GNS on the command line") }}</h4> | ||
296 | |||
297 | <p>GNS is the GNU name service, a fully decentralized alternatice to DNS. We'll publish an IP address in a GNS record try to resolve it on the command line. First we need an identity which is the | ||
298 | equivalent to a zone in DNS. We'll call it "myself" and create it using the | ||
299 | `gnunet-identity` command line tool. Instead of "myself" you can surely use your | ||
300 | nick or any other name. </p> | ||
301 | |||
302 | <code> | ||
303 | $ gnunet-identity -C myself | ||
304 | </code> | ||
305 | |||
306 | <p>We can check if it worked using the same tool. We expect the name of our identity and the corresponding public key to be displayed.</p> | ||
307 | |||
308 | <code> | ||
309 | $ gnunet-identity -d<br> | ||
310 | myself - HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG | ||
311 | </code> | ||
312 | |||
313 | <p> | ||
314 | Now we add a public `A` record to our zone. It has the name "ccc", a value | ||
315 | of "195.54.164.39" and it expires after one day. | ||
316 | </p> | ||
317 | |||
318 | <code> | ||
319 | $ gnunet-namestore -z myself -a -e "1 d" -p -t A -n ccc -V 195.54.164.39 | ||
320 | </code> | ||
321 | |||
322 | <p>Now we can query that record using the command line tool `gnunet-gns`.</p> | ||
323 | |||
324 | <code> | ||
325 | $ gnunet-gns -t A -u ccc.myself<br> | ||
326 | ccc.myself:<br> | ||
327 | Got `A' record: 195.54.164.39 | ||
328 | </code> | ||
329 | |||
330 | <p> | ||
331 | So it worked! But only resolving our own records is boring. So we | ||
332 | can give our identity (the public key of it to be precise) to | ||
333 | someone else so they can try to resolve our records, too. The | ||
334 | other person (Bob) has to add it to his namestore like this: | ||
335 | </p> | ||
336 | |||
337 | <code> | ||
338 | $ gnunet-namestore -z myself -a -e never -p -t PKEY -n alice -V HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG | ||
339 | </code> | ||
340 | |||
341 | <p> | ||
342 | Our identity in Bobs namestore is a public record (-p) and never | ||
343 | expires (-e never). Now Bob (let's assume he has called his | ||
344 | identity myself, too) should be able to resolve our "ccc" record, | ||
345 | too! | ||
346 | </p> | ||
347 | |||
348 | <code> | ||
349 | $ gnunet-gns -t A -u ccc.alice.myself<br> | ||
350 | ccc.alice.myself:<br> | ||
351 | Got `A' record: 195.54.164.39 | ||
352 | </code> | ||
353 | |||
354 | <p> | ||
355 | It can continue like this. A friend of Bob would be able to | ||
356 | resolve our records too because Bob published our identity in a | ||
357 | public record. Bobs friend would simply use "ccc.alice.bob.myself" | ||
358 | to resolve our "ccc" record. | ||
359 | </p> | ||
360 | </section> | 221 | </section> |
361 | <section> | ||
362 | <h4>{{ _("Name resolution using GNS with a browser") }}</h4> | ||
363 | |||
364 | <p> | ||
365 | In the previous use case "Name resolution using GNS on the command line" we got an idea | ||
366 | about what GNS is about, but now let's use it with a browser, to make it actually useful. Currently Firefox and Chromium are known to work. | ||
367 | </p> | ||
368 | 222 | ||
369 | <p> | ||
370 | Many websites enforce HTTPS and thus provide certificates for | ||
371 | their hostnames (and not our GNS names). Browsers don't like wrong | ||
372 | hostnames in certificates and will present error messages. So GNUnet | ||
373 | has to trick them by generating own certificates for our GNS | ||
374 | names. This means we need to create our own certificate authority | ||
375 | and tell our browser about it. Luckily there's a script for it: | ||
376 | </p> | ||
377 | |||
378 | <code> | ||
379 | $ gnunet-gns-proxy-setup-ca | ||
380 | </code> | ||
381 | |||
382 | <p>After executing this script the Browser has to be restarted.</p> | ||
383 | |||
384 | <p> | ||
385 | GNUnet provides a proxy service (gnunet-gns-proxy) that the | ||
386 | browser can send DNS and HTTP traffic to. It will try to resolve | ||
387 | names with GNS first and forward the rest of the DNS traffic to | ||
388 | the system's DNS resolver. It will also take care of the HTTP | ||
389 | traffic, so the browser gets valid certificates and the web server | ||
390 | will not be confused by our GNS hostnames. Our GNS namestore | ||
391 | doesn't know about any DNS hostnames yet, so we have to store | ||
392 | them, too. For our "ccc" A record, we have to store a LEHO (legacy | ||
393 | hostname) record, too. It must contain the website's original DNS | ||
394 | hostname: | ||
395 | </p> | ||
396 | |||
397 | <code> | ||
398 | $ gnunet-namestore -z myself -a -e "1 d" -p -t LEHO -n ccc -V www.ccc.de | ||
399 | </code> | ||
400 | |||
401 | <p>Now let's start gnunet-gns-proxy.</p> | ||
402 | |||
403 | <code> | ||
404 | $ /usr/lib/gnunet/libexec/gnunet-gns-proxy | ||
405 | </code> | ||
406 | |||
407 | <p> | ||
408 | Our browser has to be configured so it uses our proxy. In Firefox | ||
409 | we have to set these options under "about:config": | ||
410 | </p> | ||
411 | |||
412 | <code> | ||
413 | network.proxy.socks: localhost<br> | ||
414 | network.proxy.socks_port: 7777<br> | ||
415 | network.proxy.socks_remote_dns true<br> | ||
416 | network.proxy.type: 1 | ||
417 | </code> | ||
418 | |||
419 | <p> | ||
420 | To tell Chromium to use the proxy, it has to be started with the | ||
421 | "--proxy-server" command line option: | ||
422 | </p> | ||
423 | |||
424 | <code> | ||
425 | $ chromium --proxy-server="socks5://127.0.0.1:7777" | ||
426 | </code> | ||
427 | |||
428 | <p> | ||
429 | Now we should be able to resolve our GNS names in the browser! We | ||
430 | just have to type "https://ccc.myself" into the address bar. If | ||
431 | our friend Bob prepared his system, too, he can resolve our record | ||
432 | by typing "ccc.alice.myself". | ||
433 | </p> | ||
434 | </section> | ||
435 | <section> | ||
436 | <h4>{{ _("VPN") }}</h4> | ||
437 | |||
438 | <p> | ||
439 | TBD | ||
440 | </p> | ||
441 | </section> | ||
442 | <section> | 223 | <section> |
443 | <h3>{{ _("Uninstall GNUnet and its dependencies") }}</h3> | 224 | <h3>{{ _("Uninstall GNUnet and its dependencies") }}</h3> |
444 | 225 | ||
@@ -456,13 +237,7 @@ | |||
456 | $ sudo rm /lib/$(uname -m)-linux-gnu/libnss_gns.so.2 | 237 | $ sudo rm /lib/$(uname -m)-linux-gnu/libnss_gns.so.2 |
457 | </code> | 238 | </code> |
458 | </section> | 239 | </section> |
459 | <section> | ||
460 | <h3>{{ _("Appendix A: Optional GNUnet features") }}</h3> | ||
461 | 240 | ||
462 | <p> | ||
463 | TBD | ||
464 | </p> | ||
465 | </section> | ||
466 | <section> | 241 | <section> |
467 | <h3>{{ _("Troubleshooting") }}</h3> | 242 | <h3>{{ _("Troubleshooting") }}</h3> |
468 | </section> | 243 | </section> |