I went through this last spring. Our marina installed WiFi that only reached the "expensive" boats on A-dock, so all we saw was reflected signals over on D-dock as we were in the shadow of a building.
I wanted something that would give me a strong signal, not cost a fortune, and wouldn't be a hassle everytime we left the slip (raising-lowering an antenna on the mast).
After a lot of research I decided to re-purpose an old Linksys router using DD-WRT to turn it into a repeater. The software is free (available free online
The repeater amplifies the incoming signal, and using a router gives you a much stronger outgoing signal. My total cost was $29 for a cheap Costco router that plugs into the repeater and gives me WiFi anywhere on the boat. Right now both run off 110v, but I'm going to convert them over to 12vdc. It worked well as long as I saw a signal strength above 7% (1 bar is 20%).
We just moved to a new marina with no WiFi, but playing around I found a decent signal from the marina next door. A few properly applied beers should get me a password and I'll be good to go
The downside to this approach is that you have to do some reading and get a little techie to reload and repurpose the router. Do it wrong and your router is a paperweight.
Here's a picture of the setup in the aft bunk. When I convert to 12v I'll permanantly mount it on a shelf.