Boil the potatoes. Place potatoes in a large pot. Cover with cold water and bring to a boil. Add salt to the boiling water and cook until the potatoes are fork-tender, about 15 to 20 minutes. Drain.
Cube the potatoes. When the potatoes are dry and cool enough to touch, cut into bite-sized cubes. Transfer to a large bowl.
Fry the bacon. Meanwhile, fry the bacon in a large skillet until crisp and brown. Using a slotted spoon, remove the bacon to a paper towel-lined plate and set aside. Leave the bacon drippings in the skillet.
Make the dressing. Add the flour to the bacon drippings and cook, stirring constantly, over low heat for 1 to 2 minutes. Stir in sugar, vinegar, water, dry mustard, salt, pepper, and onion.
Cook, stirring, until the onion is tender and the sauce has thickened, about 5 to 8 minutes. If the dressing gets too thick, stir in additional water until it reaches the desired consistency.
Combine. Add celery, hard-boiled eggs (if using), parsley or dill, and cooked bacon to the bowl with the potatoes. Gradually pour some of the hot dressing over the potato mixture and gently stir to combine. Add more dressing until all of the ingredients are nicely coated (you might not need it all). Taste and season with additional salt and pepper, if desired.
Serve. Serve warm or at room temperature.