Possession needs to happen on server side, so the custom pawn has to be spawned by server.
Past that, if you disable movement replication you should be able to control the pawn on client side (input/control always happen on client-side first). Since floating movement does not have any builtin replication, the server will not move when client does, so if movement replication is enabled the server will continuously reset client position.
However if the server doesn’t move along with you, you’ll eventually experience issues due to relevance checks.
TL;DR: the server needs to know where you are and what you are looking at, in order to correctly replicate the subset of actors that is relevant to you.
So, even if you want client to have control, you should at least implement periodic updates so the server can follow client’s location. This can be a simple Timer → Server RPC with location as parameter → Set location on server. Keep movement replication disabled on the pawn to avoid corrections on client.