Cut the bacon into small slices and cook in the bottom of your soup pot until they are crisp (not flaccid), over medium high heat.
While the bacon is cooking, peel and chop the yellow onions, garlic, celery, and carrots. Chop them into small pieces but don't mince them. Set aside.
When the bacon is crisp, drain most of the fat and add the onions, garlic, celery, and carrots. Add the vegetable oil and stir, coating everything in the soup pan. Saute until onions, garlic, celery, and carrots are cooked tender. Add a quart of water and the ham stock concentrate or four cups prepared ham stock, stir to de-glaze the pot, bring to a boil, cover, and simmer for an hour, stirring once in a while.
After an hour, chop the potatoes into cubes and place in a bowl. I leave the skins on them, you do not have to if you don't want to, but I think the soup tastes better that way. Add the potatoes, stir, and bring back to a boil. Once it is boiling, cover and turn the soup down to medium low, and let it simmer for twenty minutes or until the potatoes are tender.
Once the potatoes are tender, add the half-gallon of milk, three tablespoons of sour cream (more if you want), and the stick of butter. Let simmer for another twenty minutes, stirring frequently. Cover between stirrings. Cut the roots off of the bunch of green onions and chop them into quarter-inch long pieces. Add them to the soup and cover the pot.
Mix the flour into cold water to form a slurry and add to the soup once the soup is simmering again. Stir to thicken, then add the cheddar cheese and stir until it is dissolved. Salt and pepper to taste.
Serve with your favorite bread or dinner roll. Sour dough goes well with this recipe. This should yield enough for leftovers, so refrigerate whatever is left over and know that it will be that much more flavorful the next day. Enjoy!