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

# Server types

> What a machine is for, which decides what goes on it.

Chosen when the server is recorded, and never afterwards. The machine either
has nginx on it or it does not, and letting you change the answer without
changing the machine would mean the panel describing a server that does not
exist.

If you picked wrong, connect another machine and move the sites.

## The types

| Type              | What is installed                                                                     |
| ----------------- | ------------------------------------------------------------------------------------- |
| **Application**   | Nginx, PHP, Supervisor and Redis. One machine doing everything, which is most people. |
| **Web**           | Nginx, PHP and Supervisor. Its data lives on another server.                          |
| **Worker**        | PHP and Supervisor, no nginx. Queued and scheduled work only.                         |
| **Database**      | A database engine and nothing else.                                                   |
| **Cache**         | Redis and nothing else.                                                               |
| **Load balancer** | Nginx in front of other servers.                                                      |
| **Search**        | Meilisearch and nothing else.                                                         |

## What the type decides

**Whether sites can go on it.** Application and web servers host sites. A load
balancer serves HTTP without hosting anything — that is the point of one — so
serving and hosting are not the same question, and a load balancer's Sites tab
says so rather than offering a form that refuses.

**Whether PHP is installed**, and with it the toolchain, Composer and Node.js.
Application, web and worker.

**Whether Supervisor is installed**, and with it [daemons](/processes/daemons).
Same three.

**Whether Redis is installed.** Application and cache.

**Whether a database engine may be installed.** Application and database. See
[databases](/databases).

**Which ports the firewall opens to start with.** A machine that serves HTTP
gets 80 and 443; one that does not gets neither. A database server has no
business answering on 443, and opening it by default because most servers want
it is how a machine ends up reachable on a port nothing is listening to.

## A worker with no nginx

A worker server is where a queue that has grown past what the application
server can carry should go. It runs [daemons](/processes/daemons) and
[scheduled jobs](/processes/scheduled-jobs) and answers no requests. It still
needs the application's code, so it still has a site — it just never serves it.
