# How to Enable Docker on an NGINX Server in xCloud

> Run Docker apps on any xCloud NGINX server next to WordPress, PHP and Laravel sites. Let xCloud install Docker on demand, or install it from Server Settings.

Docker is no longer a separate server type in xCloud. Since v2.9.0, any xCloud **NGINX** server can run Docker apps (Docker Compose sites, Docker apps deployed from Git and containerized One Click Apps) next to native WordPress, PHP, Laravel and Node.js sites. xCloud installs Docker for you the first time a container site needs it, or you can install it ahead of time from the server's settings. OpenLiteSpeed servers cannot run Docker.

## How Docker works on xCloud servers

| Server | Docker apps | What to expect |
|---|---|---|
| **NGINX** | Yes | Docker installs automatically with the first container site, or from **Server Settings → Install a Service**. |
| **OpenLiteSpeed** | No | Docker is not offered. Put Docker apps on an NGINX server. |
| Existing **Docker + Nginx** server | Yes | Keeps working and now shows as **Nginx**. It can host native apps too. |

When you create a new server, the stack choice shows **NGINX**, **OpenLiteSpeed** and **Agentic** (for AI agent servers). There is no Docker option on the dashboard server form. Pick **NGINX** if you plan to run any Docker app on the server. When you start from a Docker app, the **OpenLiteSpeed** tile is unavailable.

## Option 1: Let xCloud install Docker with your first container site

You do not need to prepare anything. When you add a Docker Compose site, deploy a Docker app from Git, or install a containerized One Click App on an NGINX server that does not have Docker yet, xCloud installs Docker as part of the site setup. If Docker is already installed, that step finishes in seconds.

An NGINX server without Docker shows this notice on its dashboard: **"Docker apps are ready for this server."** Its **Browse One Click Apps** link opens the One Click Apps catalog for that server. You can dismiss the notice.

![Docker apps notice on an xCloud NGINX server](/_landing/docs/enable-docker-on-an-nginx-server-in-xcloud-image-1.png)

On the One Click Apps catalog, an app that runs in containers says **Runs on Nginx, Docker**, so you know the install adds the Docker engine.

## Option 2: Install Docker from Server Settings

Install Docker ahead of time if you want it ready before your first container site, for example to keep the first deployment short.

1. Open **Servers** and select your NGINX server.
2. In the server sidebar, open **Settings → Server Settings**.
3. In the **Server Utilities** card, click **Install a Service** (or scroll down to the **Install a Service** table).
4. In the **Docker** row, click **Install**. The button reads **Installing...** while it runs.

**Expected result:** Docker appears in the service list above while it installs. If the **Install a Service** table has no Docker row, the server either already has Docker or is not an NGINX server. When nothing is left to install, the panel says "All available services are already installed on this server."

For the other services on this list (PHP, Node.js and Redis), see [how to manage services on your server](/docs/how-to-manage-services-on-your-server/).

## Option 3: Request Docker when you create a server through the API

The xCloud Public API accepts `install_docker` when it creates a server. It only works with the NGINX stack: a request that sets `install_docker` for another stack is refused with "Docker can only be installed on an Nginx server." See [how to access the xCloud API](/docs/how-to-access-the-xcloud-api/) to create a token.

## Deploy a Docker app on the server

Once the server is an NGINX server, use any of these flows. Each one installs Docker if the server does not have it yet.

- **One Click Apps:** see [how to use One-Click App Templates](/docs/how-to-use-one-click-app-templates-in-xcloud/).
- **Your own Docker Compose file:** see [how to deploy a custom Docker application](/docs/how-to-deploy-custom-docker-with-xcloud/).
- **A Docker app from a Git repository:** see [how to deploy a custom Docker application from a Git repository](/docs/how-to-deploy-custom-docker-application-from-git-repository/).

## Running Docker apps next to WordPress and PHP sites

Native sites and containers on one server share the same CPU, memory and disk. A busy WordPress site and a memory-hungry container can slow each other down. Check the server's monitoring before you add a large Docker app, and size the server for everything that runs on it. For production workloads that need strict isolation, a separate server is the safer choice.

## Existing Docker + Nginx servers

Servers created before v2.9.0 with the **Docker + Nginx** stack keep working without any change. The dashboard now labels them **Nginx**. They can also host native apps: their dashboard shows **"This server can now host native apps too."** with an **Add a Native App** link. PHP and the database install automatically with the first site that needs them.

## Frequently asked questions

### Do I need a separate Docker server for Docker apps?

No. Since xCloud v2.9.0, Docker apps run on a regular NGINX server. New servers no longer offer a separate Docker + Nginx stack.

### Can I run Docker on an OpenLiteSpeed server?

No. OpenLiteSpeed servers cannot run Docker. Use an NGINX server for Docker Compose sites and containerized One Click Apps.

### What happened to my existing Docker + Nginx server?

It keeps working and now shows as an Nginx server. It can also host native apps such as WordPress, PHP, Laravel and Node.js.

### Do I have to install Docker before I deploy a Docker app?

No. xCloud installs Docker automatically the first time a container site needs it. Installing it ahead of time from Server Settings is optional.

If you run into any issues with Docker on your server, feel free to reach out to our [support team](/docs/access-built-in-support-portal-in-xcloud/).
