Установка HashiCorp Vault на Ubuntu
В этом руководстве описано, как установить и настроить HashiCorp Vault на сервере Ubuntu 24.04 LTS. Vault централизует управление секретами (ключи API, пароли, сертификаты TLS) безопасным образом.
Современные приложения зависят от секретов: ключи API, пароли БД, сертификаты TLS, ключи шифрования. Хранить их в коде или в открытом виде — риск. Vault обеспечивает безопасное хранение, динамическую выдачу учётных данных, шифрование как сервис и детальный контроль доступа.
Заказать сервер
Для размещения экземпляра Vault HostMyServers предлагает несколько подходящих вариантов:
- VPS Performance — идеально для небольших команд
- NVMe VPS — отличное соотношение цены и качества
- Эко выделенные серверы — для развёртываний с умеренной нагрузкой
- Выделенные серверы Performance — максимальная производительность
Предварительные требования
- SSH-доступ от root или пользователя с sudo
- Система Ubuntu 24.04 LTS 64 бит
- DNS-запись A, указывающая на IP сервера (для Let's Encrypt)
- Доступны порты 8200 (HTTPS Vault) и 80 (Certbot, временно)
Требуемая конфигурация
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| ОЗУ | 512 МБ | 1–2 ГБ |
| CPU | 1 ядро | 2 ядра |
| Хранилище | 5 ГБ | 10 ГБ |
| Сеть | 100 Мбит/с | 1 Гбит/с |
Vault прослушивает порт 8200 по HTTPS. Веб-интерфейс и API используют этот порт.
Подключение к серверу
Подключитесь по SSH к серверу Ubuntu (порт 22 по умолчанию или свой порт / PEM-ключ):
ssh пользователь@ip_адрес_сервера
Обновление системы
Обновите список пакетов перед установкой Vault:
sudo apt update
sudo apt upgrade -y
Установка Vault из репозитория HashiCorp
HashiCorp предоставляет официальный APT-репозиторий для установки последней стабильной версии Vault. Установите необходимые пакеты, добавьте GPG-ключ и репозиторий HashiCorp, затем выполните:
sudo apt update
sudo apt install -y vault
Проверка: vault --version. Опционально: vault -autocomplete-install и exec $SHELL.
Настройка брандмауэра
Откройте порты 8200 и 80, перезагрузите UFW. Порт 80 нужен временно для Certbot.
Сертификаты TLS с Let's Encrypt
Установите Certbot, получите сертификат для вашего домена (например, vault.ваш-домен.com), скопируйте fullchain.pem и privkey.pem в /opt/vault/tls/, назначьте владельца vault:vault и права 600. Создайте скрипт в /etc/letsencrypt/renewal-hooks/deploy/vault.sh для обновления сертификатов и перезагрузки Vault.
Замените vault.ваш-домен.com на ваш реальный домен во всех командах и файлах.
Конфигурация Vault для производства
Сделайте резервную копию /etc/vault.d/vault.hcl, затем создайте конфигурацию с ui = true, storage "file" (path /opt/vault/data), listener "tcp" на 0.0.0.0:8200 с путями к cert.pem и key.pem, api_addr и cluster_addr с вашим доменом. Включите и перезапустите сервис: sudo systemctl enable vault, sudo systemctl restart vault.
Переменные окружения для CLI
echo 'export VAULT_ADDR="https://vault.ваш-домен.com:8200"' >> ~/.bashrc
source ~/.bashrc
Проверка: vault status (до инициализации: Initialized: false, Sealed: true).
Инициализация и разгерметизация (unseal)
Vault стартует в запечатанном состоянии. При инициализации создаются мастер-ключ, 5 ключей разгерметизации (нужны 3 из 5 по Shamir) и root token.
Ключи разгерметизации и root token показываются один раз. Храните их в безопасных местах. Без них данные недоступны.
Выполните vault operator init, сохраните 5 ключей и Initial Root Token. Затем трижды выполните vault operator unseal, вставляя по одному ключу. После успеха: Sealed: false. Войдите: vault login (введите root token).
Доступ к веб-интерфейсу
Откройте в браузере https://vault.ваш-домен.com:8200, выберите метод Token, введите root token.
Полезные команды
| Команда | Описание |
|---|---|
vault status | Статус Vault |
vault operator unseal | Ввести ключ разгерметизации |
vault login | Войти по токену |
sudo systemctl status vault | Статус сервиса |
sudo systemctl restart vault | Перезапуск Vault |
Структура файлов
| Путь | Описание |
|---|---|
/etc/vault.d/vault.hcl | Файл конфигурации |
/opt/vault/data/ | Данные Vault (зашифрованы) |
/opt/vault/tls/ | Сертификат и ключ TLS |
Устранение неполадок
- Сервис не стартует: проверьте логи
journalctl -u vault.service, права на/opt/vault, синтаксис конфига. - Ошибка TLS: проверьте наличие и права на cert.pem и key.pem, тест
certbot renew --dry-run. - Vault снова запечатан после перезагрузки: снова введите 3 ключа через
vault operator unseal. Для автоматизации см. документацию Vault (auto-unseal).