---
title: Create an Instance
description: This page explains how to create a Scaleway Instance
tags: instance create
dates:
  validation: 2025-06-23
  posted: 2021-05-26
---
import Requirements from '@macros/iam/requirements.mdx'


An [Instance](/instances/concepts/#instance) is a virtual machine in the cloud that, like a physical machine, provides resources such as virtualized CPU, RAM, and storage. These resources vary depending on the [Instance type](/instances/reference-content/choosing-instance-type/) you choose. Once created, you can [connect to your Instance](/instances/how-to/connect-to-instance/) and use it for a range of computing needs, from small-scale tests and personal projects to development environments, application hosting, and production workloads.

You can create Instances either from scratch or using Instance templates. In the following steps, you are going to create an Instance from scratch. For details about templates, see [Create and manage Instance templates](/instances/how-to/create-manage-instance-templates).

Select a tab below for instructions on how to create an Instance via either our [console](https://console.scaleway.com), our [API](https://www.scaleway.com/en/developers/api/instances/), or our [CLI](https://github.com/scaleway/scaleway-cli).

<Tabs>

  <TabsTab label="Console - Linux">

    <Requirements />

    - A Scaleway account logged into the [console](https://console.scaleway.com)
    - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization
    - An [SSH key](/organizations-and-projects/how-to/create-ssh-key/)

    1. In the **Compute** section of the side menu, click **CPU & GPU Instances**. The [Instances dashboard](https://console.scaleway.com/instance/servers) opens.
    2. Click **Create Instance** > **Create CPU Instance**. The Instance creation wizard appears.
    3. Select an Instance range based on your usage. Instance offers vary in pricing, processing power, memory, storage, and bandwidth. [Discover the best Instance type for your needs](/instances/reference-content/choosing-instance-type/).
    4. Choose an Instance configuration from the list and click **Select**.
    5. Select the Availability Zone in which you want to deploy your Instance and click **Configure Instance**.
    6. Configure the Instance properties as follows:
        - **Name your Instance**, or keep the randomly-generated name. Optionally, you can add [tags](/instances/concepts/#tags) to help organize your Instances.
        - **Choose an image** to run on your Instance. <br />
          This can be an operating system, an InstantApp, or a custom image. [Check all available Linux distributions and InstantApps](/instances/reference-content/images-and-instantapps/).
        - **Add volumes** - the storage spaces used by your Instances. A block volume with a default name and 5,000 IOPS is automatically created for your system volume. You can customize this volume and attach up to 16 local and/or block type volumes as needed.
          <Message type="important">
            - The volume containing your OS image must be at least 10 GB. For a GPU OS, 125 GB is recommended.
            - When multiple Block Storage volumes are attached to your Instance, the primary volume hosts the OS and is required to boot the Instance. You can change the boot volume after creation. See [How to change the boot volume](/instances/how-to/use-boot-modes/#how-to-change-the-boot-volume).
            - Booting from a volume with no OS, or from one of several volumes sharing the same OS, can lead to unpredictable boot behavior.
          </Message>
        - **Configure the network** of the Instance.
          - Leave the option enabled to assign a **Public IPv4** to the Instance. You can either allocate a new IPv4 address or select one or multiple existing IPv4s. Alternatively, disable it if you do not want an IPv4.
          - Leave the option enabled to assign a **Public IPv6** to the Instance. You can either allocate a new IPv6 address or select one or multiple existing IPv6s. Alternatively, disable it if you do not want an IPv6. <br/>

          You can attach up to 5 IPv4 and 5 IPv6 addresses to an Instance, useful for running different services or applications on the same Instance.

        - (Optional) Click **Cloud-init** to [configure a cloud-init configuration](/instances/concepts/#cloud-init), or leave the default value.
          Cloud-init scripts are the standard way to automate Instance setup, such as installing software or configuring users and system settings at first boot.
        - **Verify the [SSH keys](/organizations-and-projects/concepts/#ssh-key)** that will give you access to your Instance.
    7. Click **Review** to see an order summary, including the estimated cost of your Instance based on the specifications you chose.
    8. Click **Create Instance** to create the Instance directly, or **Create Instance and save as template** to reuse it as a template later. See [Create and manage Instance templates](/instances/how-to/create-manage-instance-templates) for more information.<br/> Your Instance begins provisioning, and you will be notified once it is ready.

        You are redirected to the **Overview** tab, where you can view your Instance's Public IP, the SSH command to [connect to it](/instances/how-to/connect-to-instance/), and other information, settings, and actions.
  </TabsTab>

  <TabsTab label="Console - Windows">

    <Requirements />

    - A Scaleway account logged into the [console](https://console.scaleway.com)
    - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization
    - An [RSA key pair](/organizations-and-projects/how-to/create-ssh-key/#how-to-generate-a-rsa-ssh-key-pair)

    1. In the **Compute** section of the side menu, click **CPU & GPU Instances**. The [Instance dashboard](https://console.scaleway.com/instance/servers) displays.
    2. Click **Create Instance** > **Create CPU Instance**. The Instance creation wizard appears.
    3. Select an Instance range based on your usage. Instance offers vary in pricing, processing power, memory, storage, and bandwidth. [Discover the best Instance type for your needs](/instances/reference-content/choosing-instance-type/).
    4. Choose a **Windows Instance** type from the **General Purpose** range and click **Select**. A pop-up appears.
    5. Select the Availability Zone in which you want to deploy your Instance and click **Configure Instance**.
    6. Configure the Instance properties as follows:
        - **Name your Instance**, or keep the randomly-generated name. Optionally, you can add [tags](/instances/concepts/#tags) to help organize your Instances.
        - **Choose a Windows image** to run on your Instance. <br />
        - **Add volumes** - the storage spaces used by your Instances. A block volume with a default name and 5,000 IOPS is automatically created for your system volume. You can customize this volume and attach up to 16 local and/or block type volumes as needed.
          <Message type="important">
            - The volume containing your Windows Server image must be at least 25 GB.
            - When multiple Block Storage volumes are attached to your Instance, the primary volume hosts the OS and is required to boot the Instance. You can change the boot volume after creation. See [How to change the boot volume](/instances/how-to/use-boot-modes/#how-to-change-the-boot-volume).
            - Booting from a volume with no OS, or from one of several volumes sharing the same OS, can lead to unpredictable boot behavior.
          </Message>

        To use **[Block Storage Low Latency](/block-storage/) 15k**, your Instance must provide at least 3 GiB/s of block bandwidth. 
        See [Scaleway Instances internet and Block Storage bandwidth overview](/instances/reference-content/instances-bandwidth-overview/) to check whether an Instance type meets this requirement, or query the [Instances API](https://www.scaleway.com/en/developers/api/instances/#path-instance-types-list-instance-types) to check the `block_bandwidth` field at `/instance/v1/zones/{zone}/products/servers`.<br/> This field gives you the exact block bandwidth for each Instance type, so you can confirm compatibility with high-performance storage before provisioning.
        
        - **Configure the network and security** of the Instance.
          - Leave the option enabled to assign a **Public IPv4** to the Instance. You can either allocate a new IPv4 address or select one or multiple existing IPv4s. Alternatively, disable it if you do not want an IPv4.
          - Leave the option enabled to assign a **Public IPv6** to the Instance. You can either allocate a new IPv6 address or select one or multiple existing IPv6s. Alternatively, disable it if you do not want an IPv6. <br/>

          You can attach up to 5 IPv4 and 5 IPv6 addresses to an Instance, useful for running different services or applications on the same Instance.

        - (Optional) Click **Advanced options** to configure a [cloud-init configuration](/instances/concepts/#cloud-init). Otherwise, leave these options at their default values.
          Cloud-init scripts are the standard way to automate Instance setup, such as installing software or configuring users and system settings at first boot.
        - **Choose the [RSA SSH key](/organizations-and-projects/how-to/create-ssh-key/#how-to-generate-a-rsa-ssh-key-pair)** that will give you access to your Instance. If you do not have an RSA SSH key yet, click **Add RSA SSH key** and follow the steps.

          <Message type="tip">
            To activate the OpenSSH Server during Instance creation, add a `with-ssh` tag before launching the Instance.
          </Message>

    7. Click **Review** to see an order summary, including the estimated cost of your Instance based on the specifications you chose.
    8. Click **Create Instance** to create the Instance directly, or **Create Instance and save as template** to reuse it as a template later. See [Create and manage Instance templates](/instances/how-to/create-manage-instance-templates) for more information.<br/> Your Instance begins provisioning, and you will be notified once it is ready.

        You are redirected to the **Overview** tab, where you can view your Instance's Public IP, the SSH command to [connect to it](/instances/how-to/connect-to-instance/), and other information, settings, and actions.
  </TabsTab>

  <TabsTab label="API">

    <Requirements />

      - A Scaleway account logged into the [console](https://console.scaleway.com)
      - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization
      - An [SSH key](/organizations-and-projects/how-to/create-ssh-key/)
      - A valid [API key](/iam/how-to/create-api-keys/)
      - Installed [`curl`](https://curl.se/) on your local machine

    <Message type="tip">
      Optionally, you may also install [`jq`](https://jqlang.org/) to prettify and parse API responses by simply appending `| jq .` to any `curl` command.
    </Message>

    1. Open a terminal and configure your environment variables with the `export` commands shown below.

        <Message type="note">
          This is an optional step that seeks to simplify your usage of the API. Ensure that you replace the variables represented by triangle brackets in the example below with your own customized values:
            - The API [access key and secret key](/iam/concepts/#api-key) that you created.
            - The Project ID of the [Project](/iam/concepts/#project) you want to create the Instance in. You can find your Project ID in the [**Settings** tab](https://console.scaleway.com/project/settings) of the relevant Project in the Scaleway console.
            - The [Availability Zone](/instances/concepts/#availability-zone) you want to create the Instance in, e.g. `fr-par-1`.
        </Message>

        ```bash
        export SCW_ACCESS_KEY="<API access key>"
        export SCW_SECRET_KEY="<API secret key>"
        export SCW_PROJECT_ID="<Project ID>"
        export SCW_DEFAULT_ZONE="<Availability Zone>"
        export PAYLOAD_FILE_PATH="/tmp/payload.json"
        ```
    2. Get the `label` of your OS of choice.

        ```
        curl --location "https://api.scaleway.com/marketplace/v2/images" \
        --header "X-Auth-Token: $SCW_SECRET_KEY"

        {
          "images": [
            {
              "id": "607b12c2-685d-45f7-905f-57bc23863834",
              "name": "Ubuntu 24.04 Noble Numbat",
              "label": "ubuntu_noble",
              ...
            },
          ],
          "total_count": 23
        }
        ```
    3. Create a file containing the **payload** of your upcoming API call. This payload specifies the configuration of the Instance you want to create. We provide an example payload below with all the required parameters, and a table of information to help you adapt it to your needs.

        ```
        cat <<EOF > "$PAYLOAD_FILE_PATH"
        {
          "name": "my-new-instance",
          "project": "$SCW_PROJECT_ID",
          "commercial_type": "GP1-S",
          "image": "ubuntu_noble",
          "volumes": {
            "0": {
              "name": "my-volume",
              "size": 300000000000,
              "volume_type": "l_ssd"
            }
          }
        }
        EOF
        ```

        | Parameter       | Description                                         | Valid values                           |
        |-----------------|-----------------------------------------------------|----------------------------------------|
        | name            | A name of your choice for the Instance (string)     | Any string containing only alphanumeric characters, dots, spaces and dashes, e.g. `"my-new-instance"`. |
        | project         | The Project in which the Instance should be created (string)| Any valid Scaleway Project ID (see above), e.g. `"b4bd99e0-b389-11ed-afa1-0242ac120002"` |
        | commercial-type | The commercial Instance type to create  (string)    | Any valid ID of a Scaleway commercial Instance type, e.g. `"GP1-S"`, `"PRO2-M"`. Use the [List Instance Types](https://www.scaleway.com/en/developers/api/instances/#path-instance-types-list-instance-types) endpoint to get a list of all valid Instance types and their IDs.   |
        | image           | The image to install on the Instance, e.g. a particular OS (string) | Any valid Scaleway image label, e.g. `ubuntu_noble` which is the label for the Ubuntu 24.04 Noble Numbat image. |
        | volumes         | An object that specifies the storage volumes to attach to the Instance. Must respect the volume constraints of the `commercial_type` (i.e. for each type of Instance, a minimum amount of storage is required, and there is also a maximum that cannot be exceeded. Some Instance types support only Block Storage (`sbs_volume`), others also support Local Storage (`l_ssd`) ). These constraints are available at the [List Instance Types](https://www.scaleway.com/en/developers/api/instances/#path-instance-types-list-instance-types) endpoint, via the `volume_constraints` parameter for each type listed in the response | A (dictionary) object with a minimum of one key (`"0"`) whose value is another object containing the parameters `"name"` (a name for the volume), `"size"` (the size for the volume, in bytes), and `"volume_type"` (`"l_ssd` or `sbs_volume`). Additional keys for additional volumes should increment by 1 each time (the second volume would have a key of `1`). Further parameters are available, and it is possible to attach existing volumes rather than creating a new one, or create a volume from a snapshot. For full details see [here](https://www.scaleway.com/en/developers/api/instances/#path-volumes).  |

    4. Use the following curl command, replacing the payload with the one you specified in step 2, to create your Instance.

        ```
        curl -X POST -H "Content-Type: application/json" \
        -H "X-Auth-Token: $SCW_SECRET_KEY" \
        "https://api.scaleway.com/instance/v1/zones/{$SCW_DEFAULT_ZONE}/servers" \
        -d @"$PAYLOAD_FILE_PATH"
        ```

    Valid Instance creation results in a `201` response containing a `server` object that confirms the attributes of your Instance.

    <Message type="note">
      When creating an Instance via the API:
        - The instance comes with no public connectivity by default. You might want to create and attach an IP address to it. See [How to use flexible IP addresses with Instances](/instances/how-to/use-flexips/).
        - The Instance is in a powered off state by default. To power it on, call the [Perform action](https://www.scaleway.com/en/developers/api/instances/#path-instances-perform-action) endpoint, passing it the ID of your Instance (returned in the 201 response at step 3) and `poweron` as the `action` to perform.
    </Message>

    See the [Instance API documentation](https://www.scaleway.com/en/developers/api/instances/) for full details on the Instance API. In particular, see the [Create an Instance](https://www.scaleway.com/en/developers/api/instances/#path-instances-create-an-instance) call for more details of configurable parameters when creating an Instance.

  </TabsTab>

  <TabsTab label="CLI">

    <Requirements />
      - A Scaleway account logged into the [console](https://console.scaleway.com)
      - An [SSH key](/organizations-and-projects/how-to/create-ssh-key/)
      - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization
      - An [SSH key](/organizations-and-projects/how-to/create-ssh-key/)
      - A valid [API key](/iam/how-to/create-api-keys/)
      - Installed and configured the [Scaleway CLI](https://github.com/scaleway/scaleway-cli) on your local machine

    1. Get the label of your OS of choice.

        ```bash
        scw marketplace image list

        ID                                    LABEL                     NAME                          CATEGORIES          VALID UNTIL
        607b12c2-685d-45f7-905f-57bc23863834  ubuntu_noble              Ubuntu 24.04 Noble Numbat     [distribution]      -
        ```

    2. Prepare your command by choosing values for the parameters below to define the Instance you want to create. Use the table to select appropriate values.

        ```bash
        name=my-new-instance
        project-id=adcaffc9-38ef-4502-86e1-f70d3c353745
        zone=fr-par-1
        type=GP1-S
        image=ubuntu_noble
        ip=new
        root-volume=l:300GB
        ```

        | Parameter       | Description                                         | Valid values                  |
        |-----------------|-----------------------------------------------------|-------------------------------|
        | name            | A name of your choice for the Instance              | Any string containing only alphanumeric characters, dots, spaces and dashes, e.g. `my-new-instance`. |
        | project-id      | The Project in which the Instance should be created | Any valid Scaleway Project ID, e.g. `b4bd99e0-b389-11ed-afa1-0242ac120002` |
        | zone            | The Availability Zone in which the Instance should be created. Note that some Instance types are only available in certain Availability Zones (see **type`**below) | Any valid Scaleway Availability Zone, e.g. `fr-par-1`, `pl-waw-2` |
        | type            | The type of Instance to create                      | Any valid ID of a Scaleway Instance type, e.g. `GP1-S`, `PRO2-M`. Use the [server-type](https://github.com/scaleway/scaleway-cli/blob/master/docs/commands/instance.md#server-type-management-commands) command to get a list of all valid Instance types and their IDs. The default value is `DEV1-S` |
        | image           | The image to install on the Instance, e.g. a particular OS | Any valid Scaleway image label, e.g. `ubuntu_noble` which is the label for the Ubuntu 24.04 Noble Numbat image. |
        | ip     | The IP address to use for the Instance.    | `new` to create a new IP, `dynamic` to create a dynamic IP address, `none` for no public IP address, or an existing IP ID. Default is `new` |
        | root-volume         | The root volume for the Instance (type e.g. `l` (local) or `b` (block) followed by a colon and its required size e.g. `10GB`) | Any valid volume type and size that is coherent with the storage constraints of the Instance **type** (available via `scw instance server-type list`) |

    3. Open a terminal and run the command below, with the parameters modified according to your needs as defined in step one.

    ```bash
    scw instance server create name=my-new-instance project-id=2ea18278-847c-4c33-8111-9c2376ed921e zone=fr-par-1 type=GP1-S image=ubuntu_noble ip=new root-volume=l:300GB
    ```

    Your Instance is created, and its details are returned to you in response.

    Read the [official Scaleway CLI Instance documentation](https://github.com/scaleway/scaleway-cli/blob/master/docs/commands/instance.md) for full details on how to create an Instance via the CLI, including all available parameters, and how to take your next steps.

  </TabsTab>

</Tabs>
