Self-hosting your Moralis server

You can follow this tutorial to set up the self-hosted server.

Hi there,

I setup a self hosted moralis server, incl. Dashboard and SSL, and everything looks fine.

I want to use the server instance for e.g. authentication. When my client call the endpoint, I get a “permission denied” error.

How to setup these? Especially also the Moralis apiKey and appId?

Every hint is welcomed.

Thanks,
Ali

What endpoint is called when you get that error?

POST on server/functions/getPluginSpecs

Response 403 Forbidden: {error: “unauthorized”}

That usually means that you are not using latest version of Moralis v1 sdk.

Ok, getPluginSpecs works now.

What did I change: the appId is no in sync with the Client and Server.

But now I get the same error when calling

POST sol-getNFTs

Response 403 Forbidden: {error: “unauthorized”}

And I do realise that the “message signing” window doesn’t get fired up.

Anyone any idea?

Thanks!

It should be the same issue with the app id missing. You have latest version of v1 sdk?

I have followed instructions in the video but when I authorize with Metamask it gives me an error ‘Moralis auth failed, invalid data’. What is wrong?

yes, I do have the latest version v1 of the sdk

Very strange,

I don’t set the responseType in my code, but it’s used… how?

Without the responseType it works, when I use the Dashboard.

the responseType should not be the issue, is there an application is sent in that request?

Unfortunately the server says otherwise:

I’m using this endpoint: functions/sol-getNFTs, so just address and network

you could try to call that cloud function directly only with some parameters

I call like this. As you can see, no responseType is set. Who does that?

probably the sdk somewhere in code, you can call that cloud function directly equivalent with that web3api call

OK, tried to call it manually:

image

Am I the only one?

what url gave that 403 error there?

https://myserver/server/functions/sol-getNFTs

is there any difference in network tab compared to how it was when it was called with the api?