Tech 6 min read

Getting started with Vultr VPS: from account creation to Docker deployment

IkesanContents

Vultr is one of the standard overseas VPS providers, alongside DigitalOcean and Linode. It has Tokyo and Osaka regions, hourly billing, and starts at $2.50/month. I wanted to move a Docker image over and run it, so I wrote down the setup flow.

Comparison with domestic VPS providers: Docker setup convenience

I also checked how much work Docker takes on Japanese VPS providers.

ConoHa VPS: just choose the “Docker” template when creating the server. docker and docker-compose are ready immediately. The OS is fixed to Ubuntu.

Sakura VPS: there is a startup script called “Docker Compose” for Ubuntu 22.04/24.04 and Debian 11/12. If you want CentOS, you need to add repositories manually.

Vultr: just choose “Docker” from Marketplace Apps. It is about as easy as ConoHa.

Conclusion: if Docker is your goal, Vultr or ConoHa is easy. Sakura needs manual setup depending on the OS.

Create an account

  1. Go to the official Vultr site
  2. Enter your email address and password, then click “Create Account”
    • Password requirements: at least one lowercase letter, one uppercase letter, one number, and 10+ characters
  3. Click the verification link in the email you receive
  4. Fill in billing information
  5. Register a payment method (credit card, PayPal, Bitcoin, and Alipay are supported)

If you check “I just want to link my credit card”, you can proceed without depositing money up front.

Create a VPS

  1. Go to “Products” in the left menu, then click the ”+” button in the top right
  2. Select “Cloud Compute” as the server type
  3. Choose a location: Tokyo or Osaka
  4. Choose an image: Ubuntu, Debian, CentOS, and so on
  5. Pick a plan

Pricing plans as of January 2026

PlanRAMCPUSSDBandwidthMonthly
Cheapest (IPv6 only)512MB110GB0.5TB$2.50
Standard cheapest1GB125GB NVMe1TB$3.50
Mid-tier2GB155GB NVMe2TB$7

Be careful: the cheapest plan is IPv6-only. If you need IPv4, choose $3.50 or higher.

  1. Select an SSH key under Additional Features
  2. Click “Deploy Now”
  3. When the status changes from “Installing” to “Running”, you are done

SSH access

Password login

Check the IP address and root password on the server details page and connect:

ssh root@<IP address>

SSH key login

Generate a key in advance and register it with Vultr.

# Generate a key
ssh-keygen -t ed25519 -C "your_email@example.com"

# Check the public key
cat ~/.ssh/id_ed25519.pub

Register it in Vultr via Account -> SSH Keys -> “Add SSH key”.

If you select that SSH key during server creation, you can connect without a password.

Vultr CLI

If you do not want to click around in the UI, use the CLI.

Get an API key

  1. Log in to the customer portal
  2. Go to Settings -> API (https://my.vultr.com/settings/#settingsapi)
  3. Click “Generate new API key”

There is one API key per account, so if you need to separate environments, create subaccounts.

Install

# macOS
brew install vultr/vultr-cli/vultr-cli

# Linux
curl -LO https://github.com/vultr/vultr-cli/releases/latest/download/vultr-cli_linux_amd64.tar.gz
tar -xzf vultr-cli_linux_amd64.tar.gz
sudo mv vultr-cli /usr/local/bin/

# Windows (Scoop)
scoop bucket add vultr https://github.com/vultr/scoop-vultr.git
scoop install vultr-cli

Set the API key

export VULTR_API_KEY=your_api_key_here

Or write it in ~/.vultr-cli.yaml:

api-key: your_api_key_here

Common commands

# Region list
vultr-cli regions list

# Plan list
vultr-cli plans list

# OS list
vultr-cli os list

# Instance list
vultr-cli instance list

# Create instance
vultr-cli instance create \
  --region nrt \
  --plan vc2-1c-1gb \
  --os 387 \
  --host my-server

# Delete instance
vultr-cli instance delete <instance-id>

# Stop / start
vultr-cli instance stop <instance-id>
vultr-cli instance start <instance-id>

Deploy a Docker image

Method 1: Docker Marketplace App

The easiest way is to choose a preinstalled Docker image from Marketplace Apps.

  1. During server creation, choose Image -> Marketplace Apps -> Docker
  2. After deployment, SSH in and Docker is ready

CLI version:

vultr-cli instance create \
  --region nrt \
  --plan vc2-1c-1gb \
  --app-id <docker-app-id> \
  --host my-docker-server

Method 2: Vultr Container Registry

Use a private registry and deploy to VKE (Vultr Kubernetes Engine).

# Create registry
vultr-cli container-registry create --name my-registry --region nrt --public false

# Get credentials
vultr-cli container-registry credentials <registry-id>

# Docker login and push
docker login <registry-url> -u <username> -p <password>
docker tag my-app:latest <registry-url>/my-app:latest
docker push <registry-url>/my-app:latest

Method 3: Plain SSH with docker-compose

The simplest option is to SSH into a normal VM and run docker-compose up -d.

ssh root@<server-ip>
# upload docker-compose.yml first
docker-compose up -d

Domain and SSL certificates

If you expose a Docker service, you will need a domain and an SSL certificate.

  1. Create the VPS and get its IP address
  2. Point DNS at that IP
  3. Obtain an SSL certificate

DNS options

Option A: use Vultr DNS

Vultr has DNS management. If you change your registrar’s nameservers to ns1.vultr.com and ns2.vultr.com, you can manage A records on Vultr.

Steps:

  1. Change the nameservers at your registrar to Vultr
  2. Go to Vultr -> Products -> Network -> DNS
  3. Add the domain
  4. Set the A record to your instance IP

Option B: use the registrar’s DNS

Use the DNS management screen at wherever you bought the domain. Point the A record to the Vultr instance IP.

Either way is fine. If you already use Cloudflare or similar, just keep using it.

Note: DNS propagation can take up to 48 hours, though it often finishes in minutes to hours.

SSL certificates: Let’s Encrypt + Certbot

You can get a free certificate from Let’s Encrypt. For Docker, the certbot/certbot image is convenient.

Prerequisite: DNS must already point to the VPS IP. Certificate issuance will fail if DNS is not set first.

# Get a certificate with the certbot container
docker run -it --rm \
  -v /etc/letsencrypt:/etc/letsencrypt \
  -v /var/www/html:/var/www/html \
  certbot/certbot certonly \
  --webroot \
  -w /var/www/html \
  -d example.com

The certificate is stored in /etc/letsencrypt/live/example.com/.

Automatic renewal

Let’s Encrypt certificates are valid for 90 days, so set up cron renewal.

# /etc/cron.d/certbot-renew
0 3 * * * root docker run --rm -v /etc/letsencrypt:/etc/letsencrypt certbot/certbot renew --quiet

Note: Certificate issuance is limited to five times per week. Use --dry-run before production if you are testing.

Scaling

Scale up: possible