# Deploying Metal

This guide covers the complete process of deploying a bare metal server, including all configuration options.

### Starting Deployment

There are several ways to start deploying a metal server:

1. **From Dashboard**: Click **Create Services** > **Metal**
2. **From Metal Section**: Go to **Metal** > **Services** > **+ Create Metal**
3. **From Quick Actions**: Use the overview cards on the dashboard

### Deployment Path

TeraSwitch offers two deployment paths:

#### Tier-First Path

Choose hardware specifications first, then select from available regions:

1. Select a CPU tier (EPYC Gen5, Gen4, Gen3, Ryzen, or Intel)
2. Choose specific machine configuration
3. Pick from regions where that hardware is available

**Best for**: When you need specific hardware specs and are flexible on location.

#### Region-First Path

Choose your location first, then see available hardware:

1. Select a region (e.g., Amsterdam, Frankfurt, Pittsburgh)
2. Choose a datacenter within that region
3. Pick from machines available at that location
4. Choose between **Instant** (ready-to-deploy) or **Build your own**

**Best for**: When location/latency is your primary concern.

### Selecting a Region

TeraSwitch operates in multiple regions:

| Region         | Datacenters      | Status           |
| -------------- | ---------------- | ---------------- |
| Amsterdam      | AMS1, AMS2, AMS3 | Available        |
| Chicago        | CHI1             | Coming Soon      |
| Dallas         | DAL1             | Available        |
| Dublin         | DUB1, DUB2       | Multi-Datacenter |
| Frankfurt      | FRA1, FRA2       | Multi-Datacenter |
| Hong Kong      | HKG1             | Coming Soon      |
| London         | LON1             | Available        |
| Los Angeles    | LAX1             | Coming Soon      |
| Miami          | MIA1             | Coming Soon      |
| Newark         | EWR1, EWR2       | Multi-Datacenter |
| Pittsburgh     | PIT1             | Available        |
| Salt Lake City | SLC1             | Available        |
| São Paulo      | SAO1             | Coming Soon      |
| Seattle        | SEA1             | Coming Soon      |
| Seoul          | SEL1             | Available        |
| Singapore      | SGP1, SGP2       | Multi-Datacenter |
| Tokyo          | TYO1             | Multi-Datacenter |
| Vancouver      | VAN1             | Available        |

Datacenters marked **Instant Availability Only** have pre-provisioned servers for faster deployment.

### Selecting Hardware

#### Instant Machines

Pre-configured servers ready for immediate deployment. View available options including:

* CPU type and core count
* Memory
* Storage configuration
* Network speed
* Pricing (hourly and monthly estimates)
* Availability count

#### Build Your Own

Customize your server configuration:

1. **CPU**: Select processor tier and model
2. **Cores/Threads**: View core and thread counts
3. **Memory**: RAM capacity
4. **Storage**: NVMe drives and optional BOSS (Boot Optimized Storage)
5. **Network**: Connection speed (typically 50G)
6. **Pricing**: View On Demand and Reserved rates

### Operating System

#### Choose a Template

Select from pre-built OS templates:

* **Ubuntu** - Ubuntu 20.04 LTS (Focal) is the default
* Additional distributions available via dropdown

#### iPXE Boot

For custom installations, select **iPXE** to boot from your own image or installation media.

### RAID Configuration

Configure storage redundancy for drives 0 & 1:

| Option     | Description                 | Use Case                       |
| ---------- | --------------------------- | ------------------------------ |
| **None**   | No RAID array               | Maximum capacity, single drive |
| **RAID 0** | Stripe data for performance | Maximum speed, no redundancy   |
| **RAID 1** | Mirror data for redundancy  | Data protection, half capacity |
| **Custom** | Custom RAID configuration   | Coming Soon                    |

### Cloud-Init User Data

Enable **Cloud-Init User Data** to run scripts on first boot:

```yaml
#cloud-config
package_update: true
packages:
  - nginx
  - docker.io

runcmd:
  - systemctl start nginx
  - systemctl enable docker
```

This is useful for:

* Installing packages
* Configuring services
* Setting up users
* Running initialization scripts

### Authentication

Choose how to authenticate to your server:

#### SSH Keys (Recommended)

Select from SSH keys added to your project. Multiple keys can be selected.

**Benefits**:

* More secure than passwords
* No need to remember/store passwords
* Easy to revoke access

#### Password

Create a root password to access your server.

**Note**: Password authentication is less secure. We recommend SSH keys for production servers.

### Instance Configuration

#### Number of Instances

Deploy multiple identical servers at once (1 metal instance minimum).

#### Hostname

Set a hostname to identify your server. If left blank, a default name will be generated.

#### Tags

Add tags to organize and filter your servers. Tags help with:

* Organizing by environment (production, staging)
* Grouping by application or team
* Filtering in the services list

### Order Summary

Before submitting, review your configuration:

* **Region & Datacenter**: Location of deployment
* **CPU, Memory, Network**: Hardware specifications
* **Storage**: Drive configuration
* **Operating System**: Selected distribution
* **Authentication Type**: SSH Keys or Password
* **Hostname & Tags**: Identification settings
* **Pricing**: On Demand and Reserved hourly/monthly rates

Click **Proceed to Metal Order Summary** to confirm and deploy.

### Deployment Status

After ordering, track deployment progress:

1. **Machine Allocated** - Hardware assigned
2. **Deployment Started** - Provisioning initiated
3. **Installing OS** - Operating system installation
4. **Configuring System** - System configuration
5. **Deployment Complete** - Ready to use

Deployment typically takes 5-15 minutes depending on configuration.

### Next Steps

Once deployed:

* [Access via SSH](/getting-started/first-deployment.md#accessing-your-server) using your configured key
* [View server details](/compute/metal/managing-services.md) in the console
* [Monitor bandwidth](/compute/metal/bandwidth-usage.md) usage
* [Use Virtual Console](/compute/metal/virtual-console.md) for direct access


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.teraswitch.com/compute/metal/deploying-metal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
