Is there any chance to host multiple services (like a webserver, XMPP server, ssh server) behind one .onion address? Or do I have to create a single hidden service for each service/server?
You can have multiple services on the same .onion address. You can forward each port to a different service.
For example:
HiddenServiceDir /path/to/hs/dir/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 8000 127.0.0.1:8000
HiddenServicePort 81 192.168.0.102:80
This (in your torrc
) would expose 3 services on 1 .onion address. The first 2 live on the same host as the Tor relay. The 3rd lives on another host in the local network.
See also section three of the site Configuring Hidden Services.