Not sure what you mean by “but it is not stable so much for GUI”.
Do you have admin access to your router? One thing you could do is bind the MAC address of the Jetson to a specific IP address. Then there would be no changing of internal IP address across boots. Inside of the router any computer would still access the Jetson with one non-changing IP address.
You’d then set up the router to forward any outside address ssh (or other network connection port) to that one inside address. Different ports for ssh or a VPN or a virtual desktop, but the concept is the same.
The router would still have an “outside” address, and unless you pay your ISP for a static address, then that could change, and you’d have to figure out what your outside address is before you could forward to any inside address. There is nothing which can be done from the Jetson side to change this, it is up to the ISP. There are dynamic DNS services which your Jetson could use to publish its external IP address somewhere in the outside world as a convenience, but the Jetson itself cannot control that outside IP address…it can only report the address to some convenient outside world location for you to find it.
Please note that a GUI has more than one way to talk to the outside world. The correct setup of your router changes with that method. There may be security changes within the Jetson itself to support any of those methods. Most people would use a virtual desktop to accomplish this (versus something like X forwarding).