Tor - The Onion Router is a network for anonymous communication. You passing at least three peers before you reach your site. Your request will be wrapped multiple times in a data packet. The result is, that each node that passes your request does only know the one before and the one after, but nothing beyond.
For example, the entering node does know your IP but not the content or where your request is heading. Only the next destination.

You can access normal websites. For extra anonymity, you can request a dot onion domain. A website only accessible via tor network. These domains can’t be registered. You generate them.

Generating an onion address is purely random. If you want a specific string in your dot onion address, you have to generate a lot of them, until the string appears. I used scallion by Eric Swanson to generate them. It uses the GPU instead of the CPU to generate them multiple times faster.
To get “herzberg” at the beginning of my address it took me with my MacBook Pro and the dedicated GPU around eight hours. Again it is random. With luck, you can get your desired address within 5 mins.

Just run:

mono scallion.exe -d 2 prefix

To get “prefix” at the beginning of your dot onion address. The -d chooses the GPU-Device.

To use your domain just create a folder accessible by your Tor software and create a hostname file with the domain and a private_key file with the key. In the torrc file just add these lines:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080

It is not important if something else is running on this port.

You do not need to stop here. For example, you want to access your home network storage via ssh. Just run a Tor hidden service and map it to 127.0.0.1:22. From now on, you can access your storage via ssh without any static IP or DynDNS service over a Tor-Proxy.