If you wanted a pure vanilla solution, the best you could get would be planning for a maximum amount of potential random dungeons / players.
Create a large amount of instances of different areas
Then string them together in random order based on area transition events.
I think I remember a housing system that was prefixed with hh_ that did something like this.
It made it so that you had maybe 5 area interiors - but could have 40 house exteriors.
Only 5 players could be inside their houses at a single time.
When one exits their house - it despawns all their furnature, items etc
When another player enters, it ports them to the interior instance that belonged to the player who just left their house.
It spawns all the furniture and items belonging to that player then.
Giving the impression of a unique house interior for different players, but re-using the same area instance. (up to a max of X interiors)
In the context of a map, you could just make it so you plan for 10 possible dungeons, constructed from area instances strung together by area transitions.
You can then determine if dungeon1 has been setup yet -
if not: set it up
if it has: load the setup already determined.
The setup method would determine the areas to string together, fog color, lighting, weather, placeable locations, monsters etc
Once Dungeon 1 is setup, anyone entering Dungeon 1 will see the same dungeon attributes.
If someone enters Dungeon 2 (through the entrance/door) :
It would then say that Dungeon 1 is done, so setup Dungeon 2: Work out a random collection of areas to connect to, fog color and so on.
In theory - if you can live with the same area layout (tile placements), you can still achieve infinite dungeons, by going from one area to another, then back to area 1, but loading new properties.
Eg:
Area 1 Area 2 Area 3 Area 4
Default Settings > Default Settings > Is Area 1, but with new placeables, monsters, fog color, etc > Is Area 2, but with new properties too
With this approach, you could get a pseudo-infinite area dungeon.
You just need to protect against players going back to Area 1, while someone goes forward to Area 3.