A common way to run a website behind a NAT as you might find it at home is to configure the router to forward port 80 to your machine. This is not always doable, as you might not have access to the router.

If you have access to an external server(for example a cheap VPS), you can route traffic through that by connecting to it via SSH from the local machine. I used AutoSSH which is a useful wrapper around SSH. With the right settings it automatically connects and reconnects the SSH connection if it fails.

The command I used was:

autossh -M 0 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -f -N user@server -R \*:8080:localhost:80 -C

This assumes that the program on your local machine listens on port 80. After executing the command you can access your server at your VPS’ address at port 8080. You might need to set GatewayPorts to yes in /etc/ssh/sshd_config.