# User Manual

This tutorial is supposed to give a first introduction for users trying to do something real with GNUnet. Installation and configuration are specifically outside of the scope of this tutorial. Instead, we start by briefly checking that the installation works, and then dive into uncomplicated, concrete practical things that can be done with the framework provided by GNUnet.

In short, this chapter of the “GNUnet Reference Documentation” will show you how to use the various peer-to-peer applications of the GNUnet system. As GNUnet evolves, we will add new sections for the various applications that are being created.

Comments on the content of this chapter, and extensions of it are always welcome.

- Getting started
- Subsystems
  - CADET - Decentralized End-to-end Transport
  - CORE - GNUnet link layer
  - DHT - Distributed Hash Table
  - FS — File sharing over GNUnet
  - NAMECACHE — DHT caching of GNS results
  - NAMESTORE — Storage of local GNS zones
  - HOSTLIST — HELLO bootstrapping and gossip
  - IDENTITY — Ego management
  - MESSENGER — Room-based end-to-end messaging
  - NSE — Network size estimation
  - PEERINFO — Persistent HELLO storage
  - PEERSTORE — Extensible local persistent data storage
  - REGEX — Service discovery using regular expressions
  - REST — RESTful GNUnet Web APIs
  - REVOCATION — Ego key revocation
  - RPS — Random peer sampling
  - STATISTICS — Runtime statistics publication
  - TRANSPORT-NG — Next-generation transport management
  - TRANSPORT — Overlay transport management
  - SET — Peer to peer set operations (Deprecated)
  - SETI — Peer to peer set intersections
  - SETU — Peer to peer set unions
- The GNU Name System
  - Start Zones
  - Local zone maintenance
  - Application integration
  - Zone dissemination
  - Resource Records
  - DNS Migration
- re:claimID
  - Managing Attributes
  - Managing Credentials
  - Sharing Attributes with Third Parties
  - Revoking Authorizations of Third Parties
  - OpenID Connect
  - Providing Third Party Attestation
- File-sharing
  - Searching
  - Downloading
  - Publishing
  - Indexing vs Inserting
  - Concepts
  - Namespace Management
  - File-Sharing URIs
- Virtual Public Network
  - Setting up an Exit node
  - Fedora and the Firewall
  - Setting up VPN node for protocol translation and tunneling
- Messenger
  - Current state
  - Entering a room
  - Opening a room
  - Messaging in a room
  - Private messaging
- Advanced Configuration
  - Config file format
  - The Single-User Setup
  - The Multi-User Setup
  - Access Control for GNUnet
  - Configuring the hostlist to bootstrap
  - Disable default bootstrap (private network)
  - Manually connecting peers
  - Configuration of the HOSTLIST proxy settings
  - Configuring your peer to provide a hostlist
  - Configuring the datastore
  - Configuring the Postgres database
  - Reasons to use Postgres
  - Reasons not to use Postgres
  - Manual setup instructions
  - Testing the setup manually
  - Configuring the datacache
  - Configuring the file-sharing service
  - Configuring logging
  - Configuring the transport service and plugins
  - Configuring the WLAN transport plugin
  - Configuring HTTP(S) reverse proxy functionality using Apache or nginx
  - Blacklisting peers
  - Configuration of the HTTP and HTTPS transport plugins
  - Configuring the GNUnet VPN
  - Bandwidth Configuration
  - Configuring NAT
  - Peer configuration for distributors (e.g. Operating Systems)