What is the best way to do matchmaking?

I am trying to set up a matchmaking system for my game but I am not sure where to start. The matches have 2 players in them so would it be possible to have one of the players automatically host the game to remove the need for dedicated servers and how would I go about doing this?

Over internet or just LAN?