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

# Deploy Vulpy Commerce to a VPS

> Install Vulpy Commerce on Ubuntu 24.04 with the interactive wizard: Docker, Caddy, Fox, and dev. Choose Tailscale, own domain, sslip.io, or both.

Production deploy targets Ubuntu 24.04. The install wizard sets up Docker, creates a dedicated deploy user, and brings up Fox plus the dev shop. Live is added later by a human with `pnpm vulpy env add live`.

<Tip>
  **Ask Fox on your dev machine before you SSH in.** Fox can walk you through prompts, draft checklists, and explain each flag, then you run the installer on the VPS.

  Try prompts like:

  * "Walk me through the install wizard prompts."
  * "Explain the IMDS lock and whether I should keep it on."
  * "Draft a checklist for my first VPS install."
</Tip>

## Prerequisites

* Ubuntu 24.04 VPS with a sudoer login (`ubuntu` by default)
* SSH access and, if you plan to use custom domains, DNS you can point

## Interactive install

The wizard needs a TTY, so write the remote install script to a file and run it with `bash`. Do not pipe `curl` or `gh api` into `bash`; that breaks the interactive prompts.

<CodeGroup>
  ```bash Release (customer default) theme={null}
  gh auth login
  gh api -H "Accept: application/vnd.github.raw" \
    "repos/vulpy-io/vulpy-commerce-pro/contents/scripts/vulpy-remote-install.sh?ref=main" \
    > /tmp/vulpy-remote-install.sh
  bash /tmp/vulpy-remote-install.sh
  ```

  ```bash From an existing checkout theme={null}
  cd ~/vulpy-commerce
  sudo bash scripts/vulpy-bootstrap-host.sh
  ```
</CodeGroup>

The wizard prompts you for a deploy user (default `vulpy-commerce`, with the checkout at `/home/vulpy-commerce/vulpy-commerce`), the shared admin credentials, and access mode. Day-2 commands run as `sudo -iu vulpy-commerce`.

<Warning>
  Before setup begins, the wizard asks you to type `yes` to an agent-risk disclaimer that Fox is an AI operator and that neither Vulpy nor any third party assumes responsibility for its actions. Unattended installs must pass `--i-understand-agent-risk`.
</Warning>

## Access paths

At install you pick how Fox and the shop are reachable.

| Path                | Behavior                                                                                                                                                                                                |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Tailscale (default) | Fox sidecar joins its own Tailscale identity and serves HTTPS on Fox on `:443/:80`. Shop and Medusa are on `:3000` and `:9000` inside the tailnet. Host Tailscale for SSH is a separate suggested join. |
| Own domain          | App Caddy serves `dev.<domain>`, `api.dev.<domain>`, `admin.dev.<domain>`, and `analytics.dev.<domain>` (labels overridable).                                                                           |
| No domain           | Temporary sslip.io hosts on the server IP with the same four roles.                                                                                                                                     |
| Both                | Fox on Tailscale plus a public HTTPS preview (domain if `--domain` is set, sslip.io otherwise).                                                                                                         |

## AWS IMDS lock

On EC2 or Lightsail, the wizard blocks instance metadata by default with an `nft` reject rule, so Fox cannot use the VM IAM role even inadvertently.

<Note>
  Set `VULPY_IMDS_LOCK=0` to opt out, or provide an explicit provider API key if you need Bedrock. Check status with `pnpm vulpy hermes doctor`.
</Note>

## After install

* Open the Fox URL over HTTPS and sign in with your install credentials.
* Confirm the same credentials open the Medusa admin at `/app` and the Payload admin at `/admin`.
* Run `pnpm vulpy verify` from the deploy user for a quick health check.
* When you are ready to sell, follow [Go live](/deploy/going-live).

<CardGroup cols={2}>
  <Card title="Environments" icon="layer-group" href="/deploy/environments">
    How dev, staging, and live are isolated on a single host.
  </Card>

  <Card title="Backup and restore" icon="database" href="/deploy/backup-restore">
    Snapshot environments and migrate data from your laptop.
  </Card>
</CardGroup>
