C
CIFP

Cloud Providers

Supported VM providers and configuration options.

CIFP supports multiple cloud providers for proxy VM deployment. An admin selects the default provider in the Admin Dashboard under Proxy Provider. Each provider offers dedicated inbound IPv4 addresses, programmatic API access, and Docker-based provisioning.

Hetzner Cloud

Hetzner Cloud is the recommended provider for cost-efficient proxy deployment. Servers are provisioned via the Hetzner Cloud REST API (api.hetzner.cloud/v1) with cloud-init for automated Docker installation and proxy image deployment.

Regions

The full, always-current list of regions for every provider — with country flags, cities, and codes — lives on the Regional Availability page. Regions are managed in the database and editable from the Admin Dashboard, so that page never drifts from what customers can actually select. The Create Proxy dropdown draws from the same source.

Pricing

Server TypevCPURAMMonthly
cpx112 (AMD, shared)2 GB~$4.70/mo (incl. IPv4)
cpx314 (AMD, shared)8 GB~$15.50/mo
cpx418 (AMD, shared)16 GB~$28.00/mo

Each server includes a dedicated public IPv4 address. A stateful cloud firewall (free) restricts inbound traffic to ports 3128 and 8080 only.

Configuration

Configure Hetzner Cloud in the Admin Dashboard:

  1. Set Default Provider to Hetzner Cloud
  2. Enter your Hetzner Cloud API Token (project-scoped, from Hetzner Console)
  3. Enter GCP KMS configuration (Project ID, Key Ring, Key ID) for DEK encryption

The API token can also be set via the HETZNER_CLOUD_API_KEYenvironment variable. Optional S3 credentials (HETZNER_CLOUD_S3_ACCESS_KEY,HETZNER_CLOUD_S3_SECRET_KEY) are available for future backup and image storage.

Cloud Firewall

A stateful Hetzner Cloud Firewall is automatically created and applied to all proxy VMs via label selectors (cifp-managed=true). Inbound rules:

  • TCP 3128 — Proxy traffic (from any IP)
  • TCP 8080 — Internal management API (authenticated via API key)

All other inbound traffic is dropped. Outbound traffic is unrestricted.

API Endpoints Used

EndpointMethodPurpose
/serversPOSTCreate VM with cloud-init
/servers/{id}GETGet VM state + public IP
/servers/{id}DELETEDelete VM
/servers/{id}/actions/shutdownPOSTGraceful stop (pause)
/servers/{id}/actions/poweronPOSTStart (resume)
/actions/{id}GETPoll async action status
/firewallsPOSTCreate CIFP firewall (once)

KMS Architecture

When Hetzner Cloud is the active provider, proxy secret encryption uses GCP Cloud KMS managed by the control plane:

  1. Control plane generates a 32-byte DEK (AES-256 key)
  2. DEK is encrypted with GCP KMS and stored in the database
  3. Sidecar fetches the plaintext DEK from the control plane at boot via an authenticated HTTP endpoint
  4. DEK is cached locally in the sidecar's SQLite for restart resilience

GCP KMS is accessed via the gcloud kms encrypt/decryptCLI. The control plane host must have gcloud installed and authenticated with appropriate KMS permissions.

Adding New Providers

The provider system is extensible. To add a new provider (e.g., DigitalOcean, Vultr), implement the ProxyProviderinterface and register it in the provider registry. The KMS architecture (GCP KMS, control-plane-managed DEKs) works with any provider.