I recently configured an IPv6 tunnel from SixXS on my FritzBox so that I can surf the web with IPv6.
To configure an IPv6 tunnel, you just have to register on the SixXs website, wait for approval and request a Heartbeat-Tunnel. Then type the tunnel-id and your login information in your FritzBox.
After having a working IPv6 connection at home, I enabled IPv6 on my servers. Hetzner provides a /64 to every server. To enable it, I just added a few lines to my network configuration:
$ cat /etc/network/interfaces
iface eth0 inet6 static
address 2a01:4f8:191:31c6::2
netmask 64
gateway fe80::1
In nginx I changed in every server block the listen directive:
server {
listen 80; #old
listen [::]:80; #new
}
If you forget some blocks, you may get this error:
$ service nginx restart
Restarting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
...
Then I added a new AAAA-Record for my domains and now they are available over IPv6.
To test if everything works, I would recommend an online IPv6 Website test like IPv6 test. I also found the chrome plugin IPvFoo which shows the usage of IPv4/6 on every page and all includes.