> For the complete documentation index, see [llms.txt](https://docs.dorg.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dorg.pro/install-dorg/optional-configurations/installing-a-jumpbox-vm.md).

# Installing a Jumpbox VM

If you need to have direct access to internal Dorg databases, you may need to install a **Jumpbox virtual machine**.

This guide covers only the manual creation of the Jumpbox VM. It assumes the rest of the architecture is operating normally and was deployed by the Dorg Installer.

### Summary

* Create the VM in the same Azure subscription, Resource Group, and region as the Installer-deployed Dorg infrastructure.
* Connect the VM only to `vnet-dorg`, using the existing Jumpbox subnet with CIDR `10.0.4.0/24`.
* Assign the VM the static private IP **`10.0.4.4`**.
* Associate the existing `nsg-jumpbox` with the VM NIC.
* Assign a static Standard Public IP for SSH access.
* The Installer already connects `vnet-dorg` to `vnet-internal-mcp`, where the `mcpdb` PostgreSQL server runs. Do not add a second NIC or create another peering.

```mermaid
flowchart LR
    Admin[Administrator] -->|SSH TCP/22| Jumpbox[Jumpbox VM<br/>vnet-dorg / 10.0.4.4]
    Jumpbox -->|Existing Installer-managed peering| MCP[vnet-internal-mcp]
    MCP -->|TCP/5432| DB[(PostgreSQL / mcpdb)]
```

### 1. Create the VM in Azure Portal

1. Open **Azure Portal > Virtual machines > Create > Azure virtual machine**.
2. Under **Basics**, configure:
   * **Subscription**: the subscription used by the Installer.
   * **Resource Group**: the Resource Group used by the Installer.
   * **Region**: the same region as the Dorg infrastructure.
   * **Virtual machine name**: `jumpbox-vm`.
   * **Image**: Ubuntu Server 22.04 LTS.
   * **Size**: `Standard_A1_v2`, or the required equivalent size.
   * **Authentication**: configure an administrator account for SSH access.
3. Under **Networking**, configure:
   * **Virtual network**: `vnet-dorg`.
   * **Subnet**: the existing subnet with CIDR `10.0.4.0/24`.
   * **Public IP**: create a **Standard**, **Static** Public IP.
   * **NIC network security group**: select the existing `nsg-jumpbox`.
   * Do not create a new VNet, subnet, or NSG.
4. Create the VM.
5. Open the VM's **Network interface > IP configurations > ipconfig1**.
6. Change **Private IP address settings > Allocation** to **Static**.
7. Set the private IP to **`10.0.4.4`** and save.

The `10.0.4.4` address is required because the Installer-created PostgreSQL NSG rule allows this Jumpbox address to reach TCP/5432.

### 2. Restrict SSH access

Open `nsg-jumpbox` and confirm that an inbound `AllowSSH-*` rule permits TCP/22 from the administrator's public IP.

Use a specific CIDR such as:

```
203.0.113.10/32
```

Do not leave SSH open to `0.0.0.0/0`.

### 3. Connect and verify `mcpdb`

Retrieve the VM Public IP from its Azure Portal overview page and connect from PowerShell:

```powershell
ssh "<VM_ADMIN_USER>@<JUMPBOX_PUBLIC_IP>"
```

On the Jumpbox, install the PostgreSQL client and DNS tools:

```bash
sudo apt update
sudo apt install -y postgresql-client dnsutils
```

Verify that the Installer-managed private DNS resolves the database host:

```bash
nslookup <MCP_DB_HOST>
```

The result must contain a private `10.4.2.x` address.

Connect to PostgreSQL and verify the selected database:

```bash
export PGPASSWORD='<MCP_DB_PASSWORD>'
psql "host=<MCP_DB_HOST> port=5432 dbname=mcpdb user=<MCP_DB_USER> sslmode=require" \
  -c "SELECT current_database(), current_user, inet_server_addr();"
unset PGPASSWORD
```

The expected result is:

* `current_database` is `mcpdb`;
* `inet_server_addr` is a private `10.4.2.x` address.

This confirms that the Jumpbox can resolve, reach, and authenticate to `mcpdb`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.dorg.pro/install-dorg/optional-configurations/installing-a-jumpbox-vm.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
