This guide assumes you already have a hosted server with ASP.NET Core set up and a project ready for deployment.

> **New in 2026 — Managed VPS hosting**: DeployHQ now offers [Managed VPS Hosting](https://www.deployhq.com/hosting/managed-vps) — fully-managed Linux servers with built-in CI/CD. ASP.NET Core runs cleanly on Managed VPS with Kestrel + Nginx. The walkthrough below covers BYO-server deployment, which remains fully supported.

We'll be using DeployHQ to automate the deployment process whenever you push code to your version control system. The free plan allows you deploy 1 project up to 10 times a day!

### Create a DeployHQ project

1.  Sign up and log in to DeployHQ.
2.  Navigate to **Projects** > **New Project**.
3.  Follow the wizard to choose the repository you want to deploy.

### Configure a server in DeployHQ

1.  Go to **Servers** > **New Server**.
2.  Choose a name for your server and select **SSH** from the list of connection protocols.
3.  Enter your server's IP address in the **Hostname** field.
4.  Set the **Username** to a user with appropriate permissions on your server. For security reasons, it's recommended to create a dedicated user for deployments.
5.  Enable **Use SSH key rather than password for authentication?**

Here's how to generate the SSH key on your server:

 ```bash
 su - your_deployment_user  # Replace 'your_deployment_user' with your actual username
 mkdir ~/.ssh
 chmod 700 ~/.ssh
 nano ~/.ssh/authorized_keys
 ```

6.  Copy the public key provided by DeployHQ and paste it into the `authorized_keys` file.
7.  Save the file (Ctrl+O, then Enter) and exit the editor (Ctrl+X).
8.  Set the permissions on the `authorized_keys` file:

```
chmod 600 ~/.ssh/authorized_keys
```

9.  Set the **Deployment Path** to the location where your application files should be deployed on the server.
10.  Enable the **Perform zero-downtime deployments on this server** option (optional).
11.  Set the **Environment** field to a name that reflects your deployment environment (e.g. production).
12.  Click **Save**.

### Add deployment configuration files (optional)

Config files allow you to upload sensitive information like environment variables to the server without storing them in your version control system.

1.  Go to **Config Files** and click **New Config File**.
2.  Paste the contents of your `.NET Core` environment variable file (e.g.  `.env`) into the config file content field.

### Set up SSH commands

DeployHQ allows you to run commands on the server after every deployment.

1.  Go to **SSH Commands** and click **New SSH Command**.
2.  Create the following commands:

-   **Navigate to project directory:**

```
cd %path%
```

-   **Restore dependencies:**

```
dotnet restore
```

-   **Build the project:**

```
dotnet publish -c Release
```

-   **(Optional) Run database migrations:**

```
dotnet ef database update
```

-   **(Optional) Restart your application:**

```
# How to restart your application will vary depending on how it's hosted
# Replace this with the appropriate command for your setup
# (e.g. systemctl restart your_app_service)
```

**Note:** Make sure to order the commands appropriately so they run in the correct sequence.

### Deploy your project

1.  Click **Deploy Project** in the DeployHQ dashboard.
2.  Verify the server, start and end revisions (if applicable) and click **Deploy** to begin the deployment process.

Now DeployHQ will take care of deploying your project whenever you push code! 

If you've got any other projects you'd like to automate deployments for, we've written lots of [guides for deploying the most popular application frameworks and content management systems](/guides).