Heat a large pot or Dutch oven over medium heat. Add the bacon slices, trying not to overlap as much as possible, and cook until crisp, 4 to 6 minutes per side. Remove the bacon and set aside on a plate. Remove all but 2 tablespoons of leftover bacon fat from the pot.
To the pot, add the diced onion and cook, stirring often, until translucent, 4 to 6 minutes. Add the garlic, salt, black pepper, and paprika and cook for another minute, until fragrant.
Add the potatoes, cauliflower, 3 cups broth, and the coconut milk. If the potatoes and cauliflower are not submerged in liquid, add additional broth until covered (it’s okay if the very tops are exposed). Stir to combine, increase the heat to high, and bring to a boil. Once boiling, reduce the heat to medium-low and cover the pot. Continue simmering, covered, until the potatoes are tender, 9 to 12 minutes.
While the soup cooks, chop the cooked bacon into small pieces.
Remove the pot from the heat. Use an immersion blender to blend until completely smooth (option to leave some texture if desired). If you do not have an immersion blender, transfer the soup in batches to a blender and blend on high, with the heat vent open, until smooth.
Stir in the sour cream, sliced green onions, and all but ¼ cup of the chopped bacon. Season to taste with additional salt and black pepper.
To serve, top each bowl with additional sour cream on top, a sprinkle of chopped bacon, and thinly sliced green onion.
Storage: Refrigerate in a sealed container for up to 4 days or freeze for up to 1 month.
Reheating: From the refrigerator, heat the soup in a saucepan over medium-low until warmed, about 15 minutes, or microwave until warmed, about 2 minutes. From the freezer, thaw in the refrigerator for at least 8 hours, then heat the soup in a saucepan over medium-low until warmed, about 15 minutes, or microwave in 30-second increments until warmed.
