The server needs to be listening on a port. That port needs to have access through a firewall. These two things are unavoidable. Usually you will let your server listen on port number you make up (greater than 1024 to avoid clashing). You will then let your firewall pass that port to your server.
If you're expecting ordinary folk to host a server then things will be a bit tricky. Either you need them to enable port forwarding on their home router or you need to have a centralized server for matchmaking.
This is how Skype or Halo works (Skype calls the central server a supernode). Here is an example.
C is the central Skype server. A is Alice and B is bob. Alice wants to call Bob.
C listens on some port and C's firewall lets that through
A logs into Skype, connecting to C
B logs into Skype, connecticg to C
A sends a message to C saying they want to call B
C sends a message to B (since B is already connected this is ok) saying as such.
Once the call is connected A and B send all their messages to C and C forwards them on to their destination.