You got it backwards.
The client input needs to call a RunOnServer event when shooting begins
Then the server spawns a replicated projectile and that’s it. Now the server can finish by replicating the projectile actor to the clients.
What you have right now is a RunOnOwner RPC that can only be called by the server.
To hide the input-lag on the client doing the shooting you should “predict” the shot on the client and play the sound for the shooter. The other clients should hear the sound when the projectile spawns or on impact.