Deploying to your server hosted on [Katapult](https://katapult.io) is very simple with DeployHQ.

Firstly, you'll need to set up your DeployHQ project, then connect to your Katapult server.

## Setting up your project

Head to the **Projects** screen in DeployHQ, then click the **New Project** button to get started.

You'll be prompted to enter a name for your project, then select where your repository is hosted.

{screenshot: 9}

Next, click **Create project** and you'll be taken to a screen where you can log in with your repository hosting account to authorise access and then choose your repository.

* [Adding a Bitbucket repository](Article: #17)
* [Adding a Codebase repository](Article: #19)
* [Adding a GitHub repository](Article: #21)
* [Adding a GitLab repository](Article: #23)
* [Adding a repository manually](Article: #25)

## Setting up Katapult

In order to connect to your Katapult VM you'll need to retrieve the VM's hostname/FQDN and add the SSH key from the DeployHQ project to an authorised user.

In DeployHQ firstly, head to **Servers & Groups**, and click the **New Server** button at the top of the screen. If you've just added your repository, you will have been taken to this page automatically.

Start by entering a name, and choosing SSH/SFTP as the protocol:

{screenshot: 544}

Then, head over to your Katapult Console, and select the VM you're looking to connect to via the **Compute** tab on the left-hand side.

{screenshot: 541}

Copy the FQDN and add it to the *Hostname* field back in DeployHQ, and add root as the user.

Please note that this guide assumes you haven't yet created a secondary user to the VM and you're therefore connecting as root. For best practice, we strongly recommend creating a user that only has access to your website directory.

Next, enable the Use SSH Key option, and copy the SSH key to your clipboard.

{screenshot: 542}

Back in the Katapult Console, head to **My settings** -> **SSH Keys** and click **Add new SSH Key**.

{screenshot: 543}

For additional security, you can add the DeployHQ IP ranges to the Authorized IP addresses to restrict that key to only those IPs. 

Click **Create SSH Key**, then assuming **Continuous Management?** and the User you've added the key to is added to the **SSH keys** area inside the VM, the new key will be applied to the server within 5 minutes. 

Back to DeployHQ, enter a **Deployment path** - the directory where files will be uploaded to on your server. 

Then, within **Deployment options**, you can choose to automatically deploy your server and, if you're only deploying files from a certain directory in your repository, enter a **Deployment subdirectory**.

{screenshot: 409}

You might, for example, be deploying a <a href="https://www.deployhq.com/wordpress" target="_blank">Wordpress site</a>, but only want to upload your theme folder.

When you're finished, just click **Create Server** and you can proceed to run your first deployment. 

## Run your first deployment

By default, DeployHQ will upload the whole repository to your server on the first deployment, because there is no previously deployed commit to compare to.

If your files are already on the VM and up to date with the latest commit, you can follow this guide to skip that first deployment:

* [Don't deploy your whole repository on the first deployment](Article: #129)

Otherwise, just follow this guide to start your first deployment, then after the first deployment, only files that have changed will be uploaded in future.

* [Running your first deployment](Article: #43)

That's it! You've now set up and run your first deployment to your Katapult VM and your future changes will be uploaded for you automatically, or at the simple click of a button.

## Further reading

DeployHQ has a number of very useful features to help with your deployments in general that you might wish to find out more about:

* Compiling assets and javascript with the [Build pipeline](Article: #301)
* Running commands on your server with [SSH commands](Article: #57)
* Stop certain files from being uploaded in deployments using [Excluded files](https://www.deployhq.com/support/excluded-files) 
* Keep important files safely away from your repository using [Config files](Article: #47)
* Keep your team in the loop and run other useful tasks during a deployment with our [Integrations](Article: #327) 