# Order a server

> Order a Container Apps server on its order page, with a plan, the software to run, a location, a name and any add-ons.

Source: https://www.coritan.com/docs/managed-containers/order-a-server/

In the dashboard:

- /dashboard/order/managed-containers: https://www.coritan.com/dashboard/order/managed-containers

The **Container Apps** order page asks five things, in numbered sections: **Plan**, **Software**, **Location**, **Settings** and **Add-ons**. The plan and the location start with an answer chosen for you, the name follows the software you choose, and the summary beside them keeps the price up to date. Add-ons are other products bought in the same order, such as a dedicated address. Once the first invoice is paid, we install the software and set the server up for you.

## Before you begin

- [Create a Coritan account](/docs/get-started/create-an-account/) and sign in.
- Credit on your account pays the first invoice when you place the order. Without enough credit, you pay the rest by card or PayPal on the page the order opens. To pay in one go, [add credit](/docs/billing/add-credit/) first.
- Hourly billing needs a minimum total of deposits on your account before you can choose it. [How hourly billing works](/docs/billing/hourly-billing/) explains the rule.

## Choose a plan

1. In the [dashboard](https://www.coritan.com/dashboard/servers), go to **Container Apps** and select **Order server**. You can also select the **Container Apps** card on the **Order a service** page, or one of its quick starts, which chooses the software for you. Either way, the order page opens at `https://www.coritan.com/dashboard/order/managed-containers`.
2. At the top of **Plan**, choose how often to pay. The switch lists the billing cycles the plan sells, and a longer term names what it saves against paying monthly.
3. Choose a **Hardware tier**, if the page offers more than one. The tier sets the CPU class and the storage, and each tier sells the same sizes.
4. Under **Size**, choose a plan. Each row shows its price for the cycle, its vCPUs, memory and storage, and how many ports, backups and databases it includes. We start with the recommended plan, or else the smallest one on sale. A plan marked **Sold out** cannot be ordered anywhere right now.

When you choose hourly billing, a note under the sizes explains that hourly services draw on your credit as they run. If your account has not deposited enough yet, the note names the deposit it still needs, and **Top up credit** takes you to Billing to add it.

## Choose the software

1. Under **Software**, find what the server runs in the **Catalogue**. Choose a category, such as **Game servers** or **Databases**, or type in **Search the catalogue**, then select the software's card.
2. For software with flavours, such as Minecraft, choose the flavour, then the game version. For software sold in major versions, such as MariaDB, choose the version to run.
3. Under **Version**, leave **Latest** selected to install the newest release, or choose a version. With many versions, **Find a version** filters them. For Minecraft, we choose the Java runtime each version needs.
4. If the software asks for more details, such as a Git repository under **Source**, fill in the required fields.

The list of versions leaves out snapshots and unsupported builds. You can install those later from the server's **Software** tab, where you can also switch to other software.

## Choose a location and a name

1. Under **Location**, choose a data centre on the map or in the list under **Data centres**, which groups them by region. We start with the one marked **Closest to you**. Pick the one closest to the people who will use the server: its address is local to that location. A location marked **Sold out** has no room for this plan right now.
2. Under **Settings**, keep the suggested **Server name**, such as `Minecraft Paper server`, or type your own of 2–60 characters. The name appears in your server list and the console. The dashboard has no way to rename a server later, so choose it with care.
3. If the plan has **Plan options**, answer them. We add the price of any option you take to every charge.

> [!NOTE]
> We assign the server's public address and first port while we set it up in the location you chose. You can add more ports from the [Ports tab](/docs/managed-containers/ports/), up to the plan's limit.

## Add products to the order

Under **Add-ons**, turn on the switch of anything you want to buy with the server. This is optional. Each card shows its price for the order's billing cycle, and everything you add goes on the server's first invoice:

- A **Dedicated IPv4 address** is an address of the server's own, so players join on the default port and nobody else shares it. A server takes one. It comes from the address pool in the server's location, and we attach it to the server when it is ready. It stays on your account if you move it later.
- A **DDoS Shield profile** gives the dedicated address your own protection mode, firewall rules and packet rate limits, so it needs the dedicated address in the same order. Give it a **Profile name**, or we name it after the server.
- **Snapshot Storage** adds room for snapshots of your servers, on top of what the plan includes. Choose a size under **Size** when more than one is on sale.
- **SMTP Relay** delivers the mail your applications send. Choose a plan if there is more than one, and add a **Sending domain** now or later.
- **Mail Hosting** adds mailboxes on your own domain. Choose a plan if there is more than one, and add a **Domain** now or later.

A card that cannot be added says why, and its switch stays off. For example, the pool in the server's location may have no addresses left. Each add-on becomes a service of its own, which you can cancel on its own later. [Add products to the order](/docs/get-started/order-a-service/#add-products-to-the-order) has the rules for every product.

## Place the order

1. Check the summary under **Your order**. On a phone it follows the sections, and **Review order** at the bottom of the screen takes you there. It lists the plan, the software, the location and the name, each with **Change** beside it to go back to its section. Under **Billed** it lists the plan and each add-on with its price.
2. Check the **Total**. It shows the price for each billing cycle, any one-time setup fee, what a longer term saves and what is due today. The line under it says how the first invoice will be paid.
3. If the button is greyed out, read the line under it. It names the first answer still missing, such as `Choose the software to run.`, and selecting it takes you to that section.
4. Select the button. It reads **Deploy server** when your credit pays the first invoice or your account is billed in arrears, and **Place order and pay** when you pay on the next page.

If we refuse the order, **Could not place the order** appears above the button with the reason, and your choices stay as they were. Otherwise the order's own page opens. When its title reads **Order placed, payment due**, pay under **Pay invoice**, as [Pay and follow the order](/docs/get-started/order-a-service/#pay-and-follow-the-order) describes. If you leave without paying, pay the invoice under [Invoices](/docs/billing/invoices/). Setup starts once it is paid. We cancel a server order whose first invoice is still unpaid after two days, by default.

## Result

The order's page shows **Setting up** while we set the server up, and its title becomes **Your order is ready** when the server and every add-on are active. The server appears on the **Container Apps** page with the status `Installing`, and we email you when each service is ready.

The install does not start the server, although the order's page says it boots when the install finishes. When the install is done, open the server (reload the page if the console has not opened) and select **Start**.

## Troubleshooting

The button under the summary is greyed out
: The line under it names the first answer still missing. Select it to go to that section.

`This plan has no active price.`
: The plan has no price on sale on any billing cycle. Choose another plan.

`This plan is sold out everywhere right now.`
: No location has room for this plan. Choose another size or hardware tier.

`Hourly billing needs a deposit first.`
: The note under **Size** names the deposit your account still needs. Select **Top up credit** to add it, or choose another cycle.

`Fill in the software's required fields.`
: The software needs details before we can install it, such as a Git repository under **Source**. Fill in each required field under **Software**.

**Could not load the catalogue**
: The list of software did not load. Select **Try again**. If it keeps failing, support can place the order for you.

**Could not load the versions**
: The version list did not load. The order still installs the latest release, and you can change the version later from the server's **Software** tab.

`This application needs a database. Order a MariaDB server as well, or point it at one you already run.`
: The software you chose stores its data in MariaDB. Order a second server that runs MariaDB, or use a database you already have.

`That location has no capacity for this plan.`
: The location filled up after you chose it. Choose another location, or a different size or hardware tier. Capacity differs by plan.

`Give the server a name.`
: The **Server name** field is empty. Type a name of 2–60 characters.

The **Dedicated IPv4 address** card says the pool is sold out
: The location has no addresses left to sell. Choose another location, or order the server without one and [order a floating IP](/docs/floating-ips/order-a-floating-ip/) later.

The **DDoS Shield profile** card says `Add the dedicated IPv4 address first.`
: A profile protects addresses you own. Turn on the **Dedicated IPv4 address** card first.

## Related

- [Host a Minecraft server](/docs/managed-containers/host-a-minecraft-server/) walks through the whole order for a Minecraft world.
- [Start a new server from a snapshot](/docs/snapshots/new-server-from-a-snapshot/) orders a server that starts with a saved copy of another server's files.
- [Order a service](/docs/get-started/order-a-service/) explains ordering, payment and add-ons for every product.

## With the API

Two requests list what the **Software** section offers. `GET /api/v1/client/containers/catalog` returns every piece of software you can order, each with its `slug`, `name`, `description`, `category` and `versioned`. Add `?category=` to narrow the list.

```bash
curl https://api.coritan.com/api/v1/client/containers/catalog \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

`GET /api/v1/client/containers/catalog/{slug}/compose` returns the versions of one piece of software. Each item in `versions` has a `version_id` and a `name`, and for Minecraft Java software also `required_java` and `recommended_runtime_slug`. Add `include_snapshots=true` to include test releases, and `limit` (1–500, default 200) to cap the list. An unknown slug answers `404`.

```bash
curl "https://api.coritan.com/api/v1/client/containers/catalog/minecraft-paper/compose?limit=20" \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

Place the order with `POST /api/v1/services/order`, as [Order a service](/docs/get-started/order-a-service/#with-the-api) describes, with the plan's `product_id` and `pricing_id`. For a server, send its settings in `config`:

`location`
: The location code, as the plan's locations list it.

`name`
: The server name, 2–60 characters. When you leave it out, we use the top-level `hostname`.

`specialization_slug`
: The software's `slug` from the catalogue.

`software_version`
: Optional. A `version_id` from the compose response. Leave it out to install the latest release.

`runtime_template_slug`
: Optional. The `recommended_runtime_slug` that goes with the version you chose.

`variables`
: Optional. Values for the fields the software asks for, keyed by variable name.

The plan sets the server's resources, whatever `config` says about them.

To buy add-ons in the same order, list them in `addons`, as [Add-ons in the order](/docs/get-started/order-a-service/#add-ons-in-the-order) describes. A server takes one floating IP, and only a `/32`. A DDoS Shield profile needs that floating IP in the same order. This example adds a dedicated address:

```bash
curl -X POST https://api.coritan.com/api/v1/services/order \
  -H "Authorization: Bearer $CORITAN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": 12,
    "pricing_id": 34,
    "hostname": "survival-smp",
    "config": {
      "location": "fra",
      "name": "survival-smp",
      "specialization_slug": "minecraft-paper"
    },
    "addons": [
      {"product_id": 31}
    ]
  }'
```

When the response has `requires_payment` set to `true`, pay the invoice it names in `invoice_id` before setup starts. The errors you can act on:

- `403` with `"error": "plan_not_sold_here"` and the message `This plan is not sold here.`: coritan.com does not sell the free plan, and `GET /api/v1/products/` leaves it out. [How free servers work](/docs/managed-containers/free-servers/) covers free servers you already have.
- `422` `location is required (airport code, e.g. iad)`, or `Provide template_uuid, specialization_slug, recipe_uuid, runtime_template_slug, or image` when `config` names no software.
- `422` `A server takes a single address. Choose the /32 floating IP.` or `A server takes one floating IP, so add at most one.` for a floating IP in `addons`.
- `422` with a message ending `needs an address to protect. Add a floating IP to this order.` for a DDoS Shield profile without a floating IP.

## API

- `GET /api/v1/client/containers/catalog`: Browse platform specializations available for deploy composition (https://www.coritan.com/docs/api/reference/client/catalog/#op-get-api-v1-client-containers-catalog)
- `GET /api/v1/client/containers/catalog/{slug}/compose`: Get software versions + recommended runtimes for a specialization (https://www.coritan.com/docs/api/reference/client/catalog/#op-get-api-v1-client-containers-catalog-slug-compose)
