Why can't I access Home Assistant via IPv6 from outside?

Solution 1:

Since you can connect from the local network using the Pi’s public IPv6 address, we can assume that everything on the device itself is set up correctly.

With IPv6, the consumer router no longer does NAT (or at least that’s how it’s supposed to work). This means every device on the local network has its own internet-routable IPv6 address. This is the 2003:ed:…:70 address of your Pi. Because there is no NAT, port forwarding is not required. However, to protect devices on the local network, most IPv6-capable routers still have a firewall. It is set to disallow unsolicited inbound traffic by default, including ping requests.

To set up the IPv6 firewall on an AVM FRITZ!Box, you need to go to InternetPermit AccessPort Sharing (FreigabenPortfreigaben in German). From there, add a new device (or because you already have the Pi there, edit it) and select the desired options. You probably want:

  • Enable PING6 (to easily check connectivity)
  • A port rule in the lower table for port 8123, at least for IPv6

If you set it up correctly, the table will contain a dedicated row for the IPv6 rule, like this:

firewall rule table

Once you confirm all the changes, you should be able to connect to the Pi’s IPv6 address on port 8123 from the internet.