There is another one DIY link at I built one and it works great, very convenient and also cheaper.

Regardless which design will be considered, safety is always the first concern. Always assumes the worst case scenario. I introduced one more grounding wire connected to the metal grate in the design as mentioned above. So if no GFCI is available or it malfunctions, at least the leaking current will find the least resistive path to the ground. Another good idea would be including an inline fuse box with a fuse rated ELT (equal to or less than) the lesser of the SSR (solid state relay) current rating and the gauge of wire connected to the heating element.

Also for the sake of SSR's longevity, it's essential to install it to a heat sink with thermal grease/pad in between. In a pinch, a thin smear of anti-seize compound (the silver color one used for spark plug) will also do. For easy trouble shooting, I also installed a small DTDP (double throw double pole) switch between PID and SSR so that I can fine tune PID without having to power on the heating element. BTW, the thermal couple (k-type) I got has the polarity marked wrong. I was totally thrown off at first by decrementing readings as the real water temperature went up.