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-20 minutes). Drain.
When the potatoes are dry and cool enough to touch, cut into bite-sized cubes. Transfer the cubed potatoes to a large bowl.
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.
Add the flour to the bacon drippings and cook, stirring constantly, over low heat for 1-2 minutes. Stir in sugar, vinegar, water, dry mustard, salt, pepper and onion. Cook, stirring, until onion is tender and sauce has thickened (about 5-8 minutes). If the dressing gets too thick while the onion is cooking, stir in additional water until it reaches the desired consistency.
Add celery, hard-boiled eggs (if using), parsley or dill, and cooked bacon to the large bowl with the potatoes. Pour hot dressing over the potato mixture and gently stir to combine.
Serve warm or at room temperature.