If using raw bones (bones that you bought especially for this and not leftover bones), roast them first for 30 minutes in a 350-degree oven.
Place all the ingredients in a large stockpot. Pour a gallon of water on top. Bring to a boil over high heat. This will probably take 20 minutes or so.
Reduce the heat to medium-low, cover except for the tiniest crack, and allow to gently simmer for 8 hours. During the first hour of cooking, check the soup occasionally and if a foamy layer has formed on the top, use a spoon to remove it.
Carefully pour the broth through a strainer into a large container, getting rid of the bones and overcooked vegetables. Serve immediately, or allow to cool to room temperature, then cover and refrigerate until ready to serve.
When ready to serve, remove the layer of fat from the top if you wish (I don’t), heat and serve as a delicious, good-for-you appetizer.