I made one, because my usual method of water changes wasn't going to work once I divided my tank (I would stir the substrate, then dip a gallon jug in & fill). So long as there is suction from water siphoning out, you can use it to vacuum the gravel without any additional supplies.
Basically, all you need is a length of hose that's the right diameter for your tank. I used airline tubing, which is a good size to make it less likely that I'll completely empty my 5g in ten seconds, but it can get clogged with heavy waste loads. Either you can just stick one end of the tubing into the water, then suck on the other end to get it flowing and let it drain into a bucket/drain/whatever, which is how store-bought vacs work (they have other methods of starting depending on what model you buy). Depending on the size of the tubing you can attach a funnel of some sort (cut up water bottle, pipet bulb, actual funnel, etc) to clean more gravel faster, I didn't bother.
What I did was run the tubing through a hole in the cap of a jug, with a second short bit of hose running through another hole. To get it started I suck on the small hose with the vac end in the tank, and thus avoid getting tank water in my mouth. I'll see if I can find the how-to article I used if you like.
Or you can just buy one, which honestly is probably better if you don't have the materials already on hand.