Mainly you need to route incoming connections for the protocol in your modem if running at home, and ideally have dynamic DNS so your home IP address can have a name so other nodes can find its IP address as typically your provider will change your IP address from time to time.
I use no-ip.org which offers several domains to choose from for example this example node below uses a hostname in the ddns.net domain:
markm@ThinkCentre-M800z:~/HORIZON/hz-v5.4$ cat conf/nhz.properties
nhz.enableUPNP=false
# My externally visible IP address or host name, to be announced to peers.
# It can optionally include a port number, which will also be announced to peers,
# and may be different from nhz.peerServerPort (useful if you do port forwarding behind a router).
nhz.myAddress=UFBTR.ddns.net
# My hallmark, if available.
nhz.myHallmark=
# A list of well known peer addresses / host names, separated by '; '.
nhz.wellKnownPeers=LFM.knotwork.com; server1.knotwork.net; \
ufbsh.no-ip.org; crossciv.no-ip.org; ufbtr.ddns.net; \
ufbar.ddns.net
# Disable Forging? (if set to true)
nhz.dontForge=false
#### API SERVER ####
# Accept http/json API requests.
nhz.enableAPIServer=true
# Hosts from which to allow http/json API requests, if enabled. Set to * to
# allow all. Can also specify networks in CIDR notation, e.g. 192.168.1.0/24.
nhz.allowedBotHosts=*
# Port for http/json API requests.
nhz.apiServerPort=7776
# Host interface on which to listen for http/json API request, default localhost
# only. Set to 0.0.0.0 to allow the API server to accept requests from all
# network interfaces.
nhz.apiServerHost=0.0.0.0
I am not big on selling any HZ right now as I need all I can get to build buy sides for everything on HORIZON platform.
I set nhz.enableUPNP=false because I explicitly tell my modem what ports to send to which machine, I suppose if you only run one machine or only one that might happen to run HORIZON and your modem actually has working UPNP (some providers seem to disable that) maybe you could find using UPNP works but also for all I know that might also end up routing browser requests to your web-based interface which might not be good since its probably best to have outside users run their own node rather than use a browser to connect to yours and maybe someday then blame you if someone gets their private keys.
-MarkM-