Tropic Host

Vaultwarden: установка собственного менеджера паролей на VPS

5 мин чтения
Tropic
Vaultwarden: установка собственного менеджера паролей на VPS

Vaultwarden позволяет хранить пароли на своем сервере и синхронизировать их между компьютером, телефоном и браузером. При этом используются официальные приложения и расширения Bitwarden, в которых указывается адрес собственного сервера.

Ниже разберем, какой VPS нужен Vaultwarden, как запустить его на Ubuntu через Docker Compose, закрыть свободную регистрацию, подключить HTTPS и настроить резервные копии.

Vaultwarden за пять шагов

Минимальный план запуска:

  1. Создать VPS с Ubuntu и направить на него поддомен, например vault.example.com.
  2. Установить Docker и Docker Compose.
  3. Запустить Vaultwarden вместе с Caddy для автоматического HTTPS.
  4. Создать первый аккаунт и отключить открытую регистрацию.
  5. Включить двухфакторную аутентификацию, обновления и бэкапы.

Для личного хранилища или небольшой семьи достаточно встроенной базы SQLite. Отдельный сервер PostgreSQL обычно не требуется.

Что такое Vaultwarden

Vaultwarden — неофициальная серверная реализация API Bitwarden, написанная на Rust и рассчитанная на self-hosted-развертывание. Она совместима с официальными клиентами Bitwarden: веб-интерфейсом, мобильными и настольными приложениями, браузерными расширениями и CLI.

Данные хранилища шифруются на устройстве пользователя до отправки на сервер. VPS синхронизирует зашифрованную базу, но не знает мастер-пароль и не может восстановить его при потере.

Vaultwarden не является официальным продуктом Bitwarden. Владелец самостоятельно отвечает за обновления, доступность, HTTPS, резервные копии и безопасность VPS.

Vaultwarden и Bitwarden: в чем разница

ПараметрBitwarden CloudVaultwarden
СерверИнфраструктура BitwardenВаш VPS или домашний сервер
ПриложенияКлиенты BitwardenТе же клиенты в режиме Self-hosted
ОбслуживаниеВыполняет провайдерВыполняет владелец
Контроль над бэкапамиОграничен сервисомПолный
ЗапускРегистрация аккаунтаДомен, Docker и настройка VPS

Vaultwarden подходит тем, кто хочет контролировать серверную часть, готов обновлять Linux и проверять бэкапы. Облачный сервис практичнее, если заниматься администрированием не хочется. Самостоятельное размещение не делает систему безопасной автоматически — оно переносит ответственность на владельца.

Требования к серверу Vaultwarden

Для личного использования разумная стартовая конфигурация:

  • 1 vCPU;
  • 1–2 ГБ RAM;
  • 10–20 ГБ SSD или NVMe;
  • Ubuntu 24.04 LTS;
  • публичный IP и домен;
  • открытые порты 80 и 443.

Это практический запас для Ubuntu, Docker, Caddy и обновлений, а не жесткий минимум проекта. Для десятков пользователей, большого количества вложений или нескольких контейнеров лучше выбрать от 2 ГБ RAM.

Как установить Vaultwarden на VPS

В примере используется Ubuntu 24.04 и поддомен vault.example.com. Замените его своим адресом во всех файлах.

1. Настройте DNS и подготовьте Ubuntu

Создайте DNS-запись A, направленную на IPv4-адрес VPS. Затем подключитесь по SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Не закрывайте текущую SSH-сессию, пока не проверите, что новое подключение работает.

2. Установите Docker и Docker Compose

Добавьте официальный репозиторий Docker:

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

3. Создайте конфигурацию

mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

Создайте compose.yaml:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2-alpine
    container_name: vaultwarden-caddy
    restart: unless-stopped
    depends_on:
      - vaultwarden
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config

Создайте файл Caddyfile:

vault.example.com {
    reverse_proxy vaultwarden:80
}

Наружу открывается только Caddy. Контейнер Vaultwarden доступен внутри сети Docker, а данные сохраняются в /opt/vaultwarden/vw-data. Отдельный порт для WebSocket в актуальной схеме не нужен.

4. Запустите Vaultwarden

docker compose up -d
docker compose ps
docker compose logs --tail=100 caddy

Откройте https://vault.example.com. Caddy автоматически получит TLS-сертификат, если DNS уже указывает на VPS, а порты 80 и 443 доступны. Если сайт не открывается, проверьте DNS, файрвол и наличие другого веб-сервера на этих портах.

5. Создайте аккаунт и закройте регистрацию

Зарегистрируйте первый аккаунт. Используйте длинный уникальный мастер-пароль и сохраните его аварийную копию вне Vaultwarden: администратор сервера не сможет сбросить или восстановить мастер-пароль.

После регистрации измените в compose.yaml:

SIGNUPS_ALLOWED: "false"

Примените настройку:

docker compose up -d

Теперь посторонние не смогут создавать аккаунты. Для добавления нового пользователя регистрацию можно временно включить или настроить приглашения.

Как подключить приложение Bitwarden

Устанавливать отдельный клиент Vaultwarden не требуется. На экране входа в приложение или расширение Bitwarden выберите Self-hosted и укажите:

https://vault.example.com

Этот адрес используется на компьютере, телефоне и в браузере. Для миграции импортируйте экспорт из старого менеджера. Незашифрованный CSV или JSON удалите сразу после переноса и не отправляйте по почте или через публичные ссылки.

Безопасная настройка Vaultwarden

После запуска выполните несколько действий:

  • включите TOTP или WebAuthn и сохраните коды восстановления отдельно;
  • оставляйте SIGNUPS_ALLOWED выключенным;
  • используйте SSH-ключи и регулярно обновляйте Ubuntu;
  • не публикуйте внутренний порт контейнера Vaultwarden;
  • не запускайте на том же VPS сомнительные контейнеры;
  • проверяйте, что резервные копии можно восстановить.

Панель /admin для личного хранилища обычно не нужна. Если вы ее включаете, используйте длинный токен в виде Argon2-хэша и по возможности ограничьте доступ по IP или VPN. Открытый текстовый ADMIN_TOKEN хранить нежелательно.

Перед обновлением создайте бэкап, затем выполните:

cd /opt/vaultwarden
docker compose pull
docker compose up -d

Сервер стоит обновлять регулярно: клиенты Bitwarden выпускаются независимо, поэтому слишком старая версия Vaultwarden может потерять с ними совместимость.

Резервное копирование Vaultwarden

Основная SQLite-база находится в vw-data/db.sqlite3, а вложения хранятся отдельными файлами. Не копируйте работающую базу обычной командой cp: запись в этот момент может сделать копию несогласованной.

Создайте безопасный снимок встроенной командой:

docker exec vaultwarden /vaultwarden backup

В каталоге данных появится отдельный файл db_*.sqlite3. Вместе с ним сохраняйте attachments, sends, config.json, если он создан, и файлы rsa_key*.

Бэкап на том же VPS не защищает от удаления сервера или отказа диска. Автоматически отправляйте копии на другое устройство либо в отдельное объектное хранилище, желательно с дополнительным шифрованием. Периодически выполняйте тестовое восстановление.

Какой VPS выбрать для Vaultwarden

Для личного или семейного хранилища достаточно базового Linux VPS с 2 ГБ RAM. Такой объем оставляет запас для Ubuntu, Docker, Caddy, обновлений и автоматических бэкапов.

На tropic.host Vaultwarden можно запустить на стартовом VPS, а позднее увеличить ресурсы, если на сервере появятся другие self-hosted-сервисы. Для менеджера паролей важнее не лишние ядра, а стабильная сеть, постоянный публичный адрес и надежный диск.

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

Вывод

Vaultwarden — удобный self-hosted менеджер паролей для тех, кто хочет использовать клиенты Bitwarden, но держать серверную часть на собственной инфраструктуре. Для запуска достаточно небольшого VPS, домена, Docker Compose и Caddy.

Основная ответственность начинается после установки: нужно отключить регистрацию, включить 2FA, обновлять контейнеры и хранить проверяемые резервные копии вне сервера.

FAQ

Можно ли установить Vaultwarden без домена?

Технически можно использовать локальный адрес, но веб-хранилищу нужен безопасный HTTPS-контекст. Для доступа с разных устройств проще использовать домен и TLS-сертификат.

Сколько оперативной памяти нужно Vaultwarden?

Для одного или нескольких пользователей обычно хватает 1 ГБ RAM. VPS с 2 ГБ дает более удобный запас для системы, Docker, Caddy и обновлений.

Работает ли Vaultwarden с мобильным приложением Bitwarden?

Да. На экране входа выберите self-hosted сервер и укажите полный HTTPS-адрес своего Vaultwarden.

Что произойдет, если VPS временно недоступен?

Ранее синхронизированные данные обычно остаются в локальном зашифрованном кэше клиента. Но синхронизация, вход на новом устройстве и получение изменений не заработают до восстановления сервера.

Можно ли восстановить забытый мастер-пароль через /admin?

Нет. Администратор может управлять сервером и аккаунтами, но не обладает ключом расшифровки пользовательского хранилища. Мастер-пароль и коды восстановления нужно хранить отдельно.