Cut the potatoes into 1-inch cubes and set aside. Dice the onion and mince the garlic cloves. Cook the bacon in a skillet over medium-high heat until crispy, about 8-10 minutes, then remove to a paper towel-lined plate. Once cooled, crumble the bacon into bite-sized pieces. I like to reserve about 2 tablespoons of bacon fat for added flavor—it's a great way to deepen the savory notes without extra effort.
Add the cubed potatoes, chicken broth, diced onion, minced garlic, salt, pepper, and bay leaf to your crockpot. Stir to combine, then add the crumbled bacon. Cover and cook on high for 3-4 hours or on low for 5-6 hours, until the potatoes are very tender and easily fall apart when pierced with a fork.
Once the potatoes are tender, use a potato masher or immersion blender to break down the potatoes to your desired consistency—I prefer leaving some chunks for texture, but you can make it as smooth as you like. Remove and discard the bay leaf. In a small bowl, melt the butter and whisk in the flour to create a smooth paste (called a roux), cooking it for about 1 minute to remove the raw flour taste, then slowly whisk in the milk until smooth.
Pour the milk-roux mixture from Step 3 into the crockpot and stir well to combine. Add the freshly shredded cheddar cheese and sour cream, stirring until the cheese melts completely and the soup is smooth and creamy. Taste and adjust seasonings as needed. I like to add an extra pinch of salt and pepper here because the sour cream can mute some of those savory notes.
Cover the crockpot and cook on low for 30-60 minutes, stirring occasionally, until the soup is heated through and reaches your desired temperature. The longer cooking allows the flavors to meld beautifully. Ladle into bowls and top with fresh green onions just before serving.