---
title: "Deploy your first application"
description: "Deploy Nginx with a published port and verify its response from a client."
---

> Documentation Index
> Fetch the complete documentation index at: https://cdelivery.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy your first application

This example uses a public Nginx image and a published port. It needs a working installation, an Admin to create the group, and an Operator or Admin to deploy.

## Prepare access

Use a working installation. An Admin creates the group; an Operator or Admin can deploy the application. Ensure the server can pull the public Nginx image from Docker Hub. TCP port 8080 must be available and reachable from your computer.

For SSH access, run this on your computer and keep the session open:

```sh
ssh -L 9000:127.0.0.1:9000 -L 8080:127.0.0.1:8080 your-user@server.example.com
```

## Steps

1. **Create a group**

   Create a group named `demo`.
2. **Configure the application**

   Create an application named `hello-web` in that group, using `nginx:stable-alpine`. Keep the image’s default startup command and one fixed replica.
3. **Publish a port**

   Publish container port **80** as host port **8080**, using TCP.
4. **Deploy the application**

   Save and wait for the replica to run.

No domain, custom command, configuration file, or persistent volume is needed. The [official Nginx image](https://hub.docker.com/_/nginx) already starts its web server in the foreground.

## Verify a request

From your computer, open `http://SERVER_IP:8080` or run the command below. Replace `SERVER_IP` with the reachable server address.

```sh
curl -i http://SERVER_IP:8080
```

If you use the SSH tunnel, keep its session open and run this on your computer instead:

```sh
curl -i http://localhost:8080
```

Expect HTTP 200 and the Nginx page.

If pulling fails, inspect registry access and image architecture. If the container exits, restore the default command and inspect logs. If access times out, check port mapping, firewall, server address, and tunnel. A domain route targets container port 80, not published port 8080.

## Continue or clean up

Read [application management](/docs/guides/apps/). To remove the example, delete `hello-web`, wait for its containers to exit, then delete the empty `demo` group. Do not delete a group still used by other applications.

Source: https://cdelivery.dev/docs/getting-started/first-app/index.mdx
