1/2 gallon whole milk (avoid ultra-pasteurized/ UHT milk)
1 tsp sea salt, or more to taste 1/3 cup of acid of choice:
Pour the milk into a 1-gallon pot and set it over medium-low heat. Let it warm gradually to 180°F, monitoring the temperature with a thermometer. The milk will get foamy and start to steam. Once the target temperature is reached, remove from heat. Pour in the acid of choice and stir gently to combine. If you don't see the curds start to form within 30 seconds, add another tablespoon of lemon juice or vinegar.
Let the pot of milk sit undisturbed for 10 minutes. The milk should separate into clumps of milky white curds and thin, watery, yellow whey. Set a large strainer over a bowl and line the strainer with muslin cloth. Gently scoop the curds out of the pot with a wide slotted spoon and transfer them to the strainer. Pour the remaining curds and the whey through the strainer, being careful not to break up the large curds.
Stir in sea salt to taste as the curds are draining.
RICOTTA: Let the curds drain for 10 to 30 minutes, depending on how wet or dry you prefer your ricotta. If the ricotta becomes too dry, stir some of the whey back in before using or storing it.
QUESO FRESCO/PANEER: Pull the corners of the muslin cloth up and twist it tightly to remove more moisture. Hang to drain for an additional 10 minutes. Put cheese into a basket mold and weigh it down for 20 minutes with a heavy jar. Remove the weight and let it sit overnight in the fridge. Cut into cubes for paneer. Crumble for queso fresco.