Как создать VPN-сервер на VPS с помощью Terraform

Развёртывание VPN-сервера на VPS — задача, которая традиционно требует ручной настройки: установка пакетов, генерация ключей, правка конфигурационных файлов. Но что, если вы можете описать всю инфраструктуру декларативно и развернуть рабочий VPN-сервер одной командой? Именно это позволяет сделать Terraform — инструмент для управления инфраструктурой как кодом (Infrastructure as Code, IaC).

В этой статье мы шаг за шагом создадим VPN-сервер на VPS с использованием Terraform. Вы узнаете, как автоматизировать provisioning облачного сервера, настроить на нём Xray с протоколом XHTTP + Reality и получить полностью рабочий личный VPN. А в конце сравним этот подход с готовыми решениями и поймём, почему персональный VPS — это будущее приватности в интернете.

📑 Содержание:

Зачем использовать Terraform для VPN

Terraform — это инструмент от HashiCorp, который позволяет описывать облачную инфраструктуру декларативными конфигурационными файлами. Вместо того чтобы вручную создавать VPS в панели управления, устанавливать ОС, настраивать сеть и затем вручную ставить VPN, вы пишете код, который делает всё это автоматически.

🚀 Ключевые преимущества Terraform:

  • Идемпотентность — один и тот же код всегда приводит к одному и тому же состоянию инфраструктуры.
  • Версионирование — вы храните конфигурацию в Git и отслеживаете все изменения.
  • Повторяемость — можете развернуть идентичный VPN-сервер в любом регионе или у другого провайдера за секунды.
  • Масштабируемость — легко добавить несколько серверов или изменить конфигурацию.
  • Интеграция — Terraform поддерживает все major-провайдеры: DigitalOcean, AWS, Google Cloud, Vultr, Hetzner и многие другие.

Для энтузиастов и администраторов, которые хотят иметь полный контроль над своим VPN, Terraform — это идеальный компаньон. Вы можете один раз написать конфигурацию и затем разворачивать новые серверы буквально в пару кликов.

Что потребуется

Перед тем как начать, убедитесь, что у вас есть:

Также вам понадобится домен или поддомен, если вы планируете использовать TLS-сертификаты для XHTTP + Reality (рекомендуется).

Настройка провайдера

Создайте новую директорию для вашего Terraform-проекта, например terraform-vpn, и внутри неё файл main.tf.

📄 main.tf — базовая конфигурация провайдера

terraform {
  required_providers {
    digitalocean = {
      source  = "digitalocean/digitalocean"
      version = "~> 2.0"
    }
  }
}

provider "digitalocean" {
  token = var.do_token
}

variable "do_token" {
  description = "DigitalOcean API token"
  sensitive   = true
}

variable "ssh_public_key" {
  description = "Path to your SSH public key"
  default     = "~/.ssh/id_rsa.pub"
}

Не забудьте создать файл terraform.tfvars и указать в нём ваш API-токен:

do_token = "ваш_токен_здесь"

Описание ресурсов

Теперь опишем сам VPS (в терминах DigitalOcean — droplet). Добавим в main.tf:

🖥️ Ресурс VPS

resource "digitalocean_ssh_key" "default" {
  name       = "my-ssh-key"
  public_key = file(var.ssh_public_key)
}

resource "digitalocean_droplet" "vpn" {
  image    = "ubuntu-24-04-x64"
  name     = "vpn-server"
  region   = "fra1"  # Франкфурт — хороший выбор для Европы
  size     = "s-1vcpu-1gb"
  ssh_keys = [digitalocean_ssh_key.default.id]

  connection {
    type        = "ssh"
    user        = "root"
    private_key = file("~/.ssh/id_rsa")
    host        = self.ipv4_address
  }

  provisioner "remote-exec" {
    inline = [
      "echo 'VPS готов к настройке VPN'"
    ]
  }
}

output "vpn_ip" {
  value = digitalocean_droplet.vpn.ipv4_address
}

Этот код создаст VPS с Ubuntu 24.04, 1 vCPU и 1 GB RAM в регионе Франкфурт. Вы можете изменить регион и размер под свои нужды.

Provisioning: установка VPN

Теперь самое интересное — автоматическая установка и настройка VPN. Мы воспользуемся remote-exec провижионером, чтобы выполнить скрипт на свежесозданном сервере.

Добавим в ресурс digitalocean_droplet.vpn блок провижионера:

provisioner "remote-exec" {
  inline = [
    "apt update -y",
    "apt install -y curl wget unzip",
    "wget -O /tmp/xray-install.sh https://github.com/XTLS/Xray-install/raw/main/install-release.sh",
    "bash /tmp/xray-install.sh install",
    # Здесь будет настройка Xray с XHTTP + Reality
    "echo 'VPN установлен'"
  ]
}

Конечно, в реальности скрипт установки и настройки будет более сложным. Обычно используют готовые скрипты, например, 3x-ui или X-UI, которые можно установить одной командой и затем настроить через веб-интерфейс.

Для автоматизации можно использовать templatefile и передавать в скрипт параметры (например, ваш домен, email для Let's Encrypt и т.д.).

📦 Пример использования готового скрипта для 3x-ui:

provisioner "remote-exec" {
  inline = [
    "apt update -y && apt install -y curl",
    "curl -s -L https://raw.githubusercontent.com/3x-ui/3x-ui/main/install.sh | bash",
    "echo '3x-ui установлен. Доступен на порту 2053'"
  ]
}

После установки панели вы сможете зайти в веб-интерфейс и настроить XHTTP + Reality в несколько кликов. Terraform же позаботится о том, чтобы ваш сервер всегда был в актуальном состоянии.

XHTTP + Reality — почему это важно

Большинство VPN-протоколов (OpenVPN, WireGuard, IPSec) имеют характерные сигнатуры, которые DPI-системы (Deep Packet Inspection) легко распознают и блокируют. Особенно это актуально в странах с жёсткой интернет-цензурой.

🔬 Технология XHTTP + Reality

Это современный подход к маскировке VPN-трафика, который использует следующие принципы:

  • Имитация TLS-рукопожатия — соединение выглядит как стандартный HTTPS-запрос.
  • Маскировка под браузер Chrome — все параметры (версия TLS, набор шифров, заголовки) соответствуют реальному браузеру.
  • Отсутствие характерных сигнатур — в отличие от OpenVPN или WireGuard, у XHTTP нет узнаваемых паттернов.
  • Динамическая адаптация — трафик меняется в зависимости от контекста, что затрудняет его анализ.

📌 Ключевое преимущество:

DPI-системы видят ваш трафик как обычный HTTPS-запрос к, например, google.com или cloudflare.com. Они не могут определить, что внутри этого запроса передаются VPN-данные. Нас в 1000 раз сложнее заблокировать и отследить.

Именно поэтому при автоматизации VPN-сервера с Terraform мы рекомендуем использовать именно Xray с XHTTP + Reality, а не устаревшие протоколы.

Terraform vs ручная настройка: сравнение

Критерий Ручная настройка Terraform
Время развертывания 30–60 минут 2–5 минут
Воспроизводимость Зависит от памяти/записей 100% идентичная
Версионирование Сложно (ручные заметки) Git-репозиторий
Масштабирование Повторять ручные шаги Изменить переменную count
Ошибки Высокий риск человеческого фактора Минимальный
Итоговая стоимость Время администратора Экономия времени и ресурсов

Как видите, Terraform не только ускоряет процесс, но и делает его более надёжным и прозрачным.

Почему личный VPS лучше массового VPN

🚀 В чём отличие подхода VPS-VPN?

В отличие от обычных VPN-сервисов, где 1000+ человек сидят на одном IP, вы получаете персональный VPS.

  • Никаких «шумных соседей»: ваш IP-адрес используете только вы. Никто не сможет «подставить» вас своей активностью.
  • Стабильная скорость: пропускная способность не делится между сотнями пользователей.
  • Минимальный риск блокировок: массовые IP-адреса часто попадают в бан-листы из-за действий других пользователей. Ваш личный IP — чистый.
  • Полный контроль: вы сами управляете сервером, выбираете протоколы и настройки безопасности.
  • Технология XHTTP + Reality: ваш трафик маскируется под обычный HTTPS, DPI не может его отличить от обычного браузера Chrome.

🎯 Нас в 1000 раз сложнее заблокировать и отследить.

Потому что каждый клиент VPS-VPN — это отдельный выделенный сервер с уникальным IP-адресом и индивидуальными настройками маскировки.

Используя Terraform, вы можете автоматически развернуть такой персональный VPS в любом регионе мира. Но если вы не хотите возиться с настройкой и поддержкой сервера, у нас есть готовое решение.

🔥 Получите свой личный VPN-сервер с технологией XHTTP + Reality

Мы в VPS-VPN предлагаем полностью выделенный VPN-сервер на вашем собственном VPS. Никаких общих IP, никаких «соседей», только ваш трафик и максимальная защита.

Ваш трафик будет неотличим от обычного HTTPS — DPI-системы увидят обычный браузер Chrome. Нас в 1000 раз сложнее заблокировать.

🚀 Заказать личный VPN-сервер

Заключение

Автоматизация развёртывания VPN-сервера с помощью Terraform — это мощный и современный подход, который экономит ваше время, снижает риск ошибок и даёт полный контроль над инфраструктурой. Вы можете один раз написать конфигурацию и затем разворачивать новые серверы в любом облаке за считанные минуты.

В сочетании с XHTTP + Reality вы получаете не только быстрый и надёжный VPN, но и максимальную защиту от DPI-систем и интернет-цензуры. А если вы не хотите тратить время на самостоятельную настройку — VPS-VPN предоставит вам готовый личный сервер с уже настроенной технологией маскировки.

Выбирайте свободу, скорость и конфиденциальность. Выбирайте персональный VPS.