Managing Cloud Servers with Resource Manager


Resource Manager lets you organize all your project related resource in a single place, from cloud servers, database servers, storage solutions, to local services.

In this tutorial we will show you how easy it is to fully manage your cloud servers with the Resource Manager.

Connecting to a Cloud Provider

The first thing you need to do is to connect to your cloud provider.
Open the Resource Manager panel:

Right click Cloud Providers:

And click Add New Provider:

Open the Providers dropdown:

And select your cloud provider. For now Linode, Digital Ocean and Hetzner are available as predefined providers, but more cloud providers are coming in the next updates. There's also an option to connect to any custom cloud provider, where you can define your own servers:

Connecting to Predefined Cloud Providers

If you want to use any of the selected cloud providers, then select it from the dropdown.
Paste the API Key provided by your cloud provider. You can find this key in the control panel of the provider - go directly there or click the Control Panel button, which will load the Cloud Provider control panel URL in your browser:

If you have an existing ssh key, it will be selected automatically in the SSH key option. If you don't have a ssh key, you can create a new one, clickin the New button:

Next, click Connect:

A success notification will appear, click OK:

And you can see the Cloud Provider added in the Resource Manager:

Connecting to a Custom Provider

You can also connect any custom provider by selecting the Custom option:

Click Connect:

A success notification will appear, click OK:

And you can see the Custom Cloud Provider added in the Resource Manager:

Managing Servers

After you connected to your cloud provider, you can create new servers and manage them here.

Creating a New Server

Predefined Cloud Providers

If you are using any of the predefined Cloud providers, you can create new servers directly from within Wappler.
Right click Servers under your selected Cloud provider and select Create New Server:

Add a name for your server:

And adjust its properties - region, size, OS:

Select ssh key(s) to be used with this server. You can choose more than ssh keys if needed, the default one will be pre-selected:

Click Create:

And you will see a notification displaying the progress:

Once the server is created you will see it under Servers:

Expanding your server you will find the services applied to it, as well as the projects running on this server:

Custom Cloud Providers

For custom cloud providers, there's no option to create a server from within Wappler. However you can import your existing servers.
Right click Servers under your Custom Cloud provider and select Import Server:

Enter a name for your server and add its IP address:

Click Import:

Once the server is imported you will see it under Servers:

Deploying to Server

After we created our cloud server, now let's setup our remote target so that we deploy our project to it.
Open the project settings:

Create a new target:

Select Connection - Remote:

And set the Docker Remote type to Cloud Provider SSH:

Open the Cloud Server Dropdown and select your server:

Click Save:

And you are ready to deploy. Select your remote target:

And Click Deploy:

After your project is deployed on the server you will see it under Projects:

Deleting a Server

You can delete the server from your project by clicking the delete button in the top toolbar. Note that this will only remove the server from this project and will leave it running on your Cloud Provider:

If you want to completely destroy your server even on the Cloud Provider, then use the Destroy Server button:

Importing a Server

You can also import an existing server in your project, after you connected to a Cloud Provider. Right click on Server and select import:

Select your server from the dropdown and click the Import button:

You can see your server has been imported:


Seems like it will become a nice feature to manage stuff easier, but I’m not sure if I understand what the difference is with the “targets” in project settings?

Will there be options in later updates to manage the “scaling” part? It would be amazing to deploy to several servers and that somehow it all works together with sockets with redis etc as from my understanding that’s currently only possible with creating replicas + using traefik

It would be nice to have workflows interact with the resource manager/features

I have the same question.

What’s the difference between this and targets? :thinking:

Targets are targets.
You define your cloud servers in the Resource Manager and use them later in the targets - check this is explained in the tutorial above.

I think as a very loose analogy, my interpretation is you can think of the resource manager as the deployment equivalent of your data connection and targets like the deployment equivalent of your api action.

Trying this out.

I for some reason see 3 projects like this:

AFAIK I only have 1 project.

Also will we be able to manage other things like DO spaces?

Lastly, the goal of this functionality is not entirely clear to me yet. But I’m guessing that it’ll be built out in the next few updates?
As I can’t seem to actually edit or view anything in there. image

The general idea of the resource manager is that you are defining your resources like servers and database for the project and then you can assign then in the different targets for usage.

Yes we have some more finetuning indeed.

The “Projects” is suppose to just list all running projects on the server. Usually just one. Under services you will be able to manage global services like Traefik or Portainer.

1 Like

Ahh that does sound useful if implemented well :slight_smile:

This would then also make it easier to set up a remote staging server I suppose?

Trying out this resource manager I run into an infinite ‘connecting to provider’:

I tried to set this up for the 1st time.
Already had the DO droplet setup and working from 4.91

I get this error while doing an Import:

Have no idea what to do.