You are correct in that scripts executed by an addAction are local to the client it was run on. To achieve what you are looking for me I would recommend something like this (requires 1.09 or higher although there is a way to do it with 1.08).
In your init.sqf or somewhere else at mission start put the following code:
init.sqfif (isServer) then
{
"clientAction" addPublicVariableEventHandler {/*Insert code you want executed when client runs addAction*/};
};
This sets up a public variable event handler on the server only that waits for the for pertinent public variable to be changed and then executes whatever code you want every time it does.
Then in your script.sqf add the following code:
script.sqfclientAction = true; publicVariable "clientAction";
This broadcasts the public variable that the server event handler is waiting for so that the server can run the code you want. I made the variable boolean but you can you any type of variable.
There is more to the addPublicVariableEventHandler command that is available so check it in the
Comref. I hope this helps!