Как создать 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 — это идеальный компаньон. Вы можете один раз написать конфигурацию и затем разворачивать новые серверы буквально в пару кликов.
Что потребуется
Перед тем как начать, убедитесь, что у вас есть:
- Аккаунт у облачного провайдера (DigitalOcean, Vultr, Hetzner, AWS и т.д.). В примерах я буду использовать DigitalOcean как самый простой для старта.
- API-токен этого провайдера для доступа к его API.
- Terraform установленный на вашем локальном компьютере (версия 1.0+).
- Базовое понимание SSH и Linux-команд.
- Желание автоматизировать — и немного свободного времени.
Также вам понадобится домен или поддомен, если вы планируете использовать 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.