I have tried the official signaling server. The problem is that the official rules for creating rooms do not apply to my current situation (the first one to enter is the host, and the second one to enter is the player). I need to make sure that some accounts must be the host, regardless of the order of entry.
Don't use the auto join room feature.
This can simply be done by requesting the room list after logging on (or otherwise authenticating your user by your preferred method. After you get the room list, you can see what rooms have people in them already, or are full. If you have a designated host client, have them enter/create a room that doesn't already exist, while a peer client will join one that does that has space.
In addition, I also want to ask if I use the turn server for data relay. The principle of connection is that the host sends it to the turn server, and the turn server distributes the massage to everyone, or the turn server is still P2P.
That's not how WebRTC works. The signalling/turn server only facilitates connections between peers, it does not otherwise handle any data.
This won't change even if you host your own signalling server. Actually neither of your issues really has to do with the signalling server.