Place the chopped potatoes in a large pot and cover with cold, salted water.
Bring to a boil, then reduce to a simmer and cook for 15–18 minutes, or until the potatoes are fork-tender.
While the potatoes cook, add the diced bacon to a large skillet over medium heat. Cook until crispy, then transfer the bacon to a paper towel-lined plate.
Leave about 1–2 tablespoons of bacon fat in the skillet and discard any excess.
Add the shredded cabbage to the skillet and sauté for 5–7 minutes, stirring occasionally, until softened and lightly caramelized.
Drain the cooked potatoes thoroughly and return them to the pot. Allow them to steam for 1–2 minutes to remove excess moisture.
Mash the potatoes with the butter until mostly smooth.
Gradually add the warm milk, mashing gently until creamy.
Fold in the cooked cabbage and most of the bacon, reserving some bacon for garnish.
Season with salt and black pepper to taste.
Top with remaining bacon and optional green onions before serving.