So what exactly do I need to deploy and run?

I’m trying to make it possible to call my contract from paymaster.
I’m sorry to say but the GSN documentation is unclear.
There are few contracts under GSN project and a relay server.

Most of these contracts is already deployed on the specific networks. Do I only need to deploy a paymaster, charge it and match it with existing contracts? Or deploy also a forwarder? Or deploy everything? Do I need to run the server to make it working?

to make your contract callable, all you need is:

  • to extend BaseRelayRecipient
  • set the trustedForwarder (either in your constructor, or through owner-only setForwarder method
  • use _msgSender() instead of msg.sender anywhere in your contract.

From this point, your contract can either be called directly, or through a relayer.
Now you need a paymaster that will accept paying the gas to make calls into your contract.
On all testnets, there is an “accept everything” paymaster, which will forward any call.

Of course, on mainnet you must use a restrictive paymaster, otherwise anyone can grief it by making many calls.
A restrictive paymaster implements the preRelayedCall method, and make more checks.
e.g, only accept specific target contract(s), or specific senders