NetworkedMultiplayerENET is just a wrapper around enet to expose it to the engine in a consistent interface and protocol.
You can absolutely replicate it on a custom non-godot server, as long as you consider the assumptions the MultiplayerAPI interface makes. For instance, when sending rpcs, the node path is critical. On your custom server, you might not even have the concept of a node, but you can still treat the node path as a sort of entity id and store it, being sure to send it along with your rpcs back to the client.
Im the end, as long as you understand the protocol that the multiplayer api uses, you can easily adapt your custom server to use it. You don't even technically need to use ENET on your server (though not doing so is going to be somewhat painful, as youll need to reimplement all of the extra stuff on top of udp like reliability and ordering as well as any compression stuff you want to use.