Документация

Свой Vaultwarden

Пример: как поднять собственный менеджер паролей и связать его с проектом, чтобы ссылки на записи в нём становились в страницах ключами. Зачем это нужно и как ключ выглядит — Хранение паролей.

Important

Это пример, а не рекомендация Ниже описан лишь один из способов развернуть менеджер паролей. Он не единственный и не рекомендуемый: вы вправе выбрать любой другой менеджер и любой способ установки, который подходит вашей инфраструктуре и требованиям безопасности. Установку, настройку, обновление и защиту своего хранилища вы выполняете сами и под свою ответственность — за реализацию по этому примеру Hivelore ответственности не несёт.

Vaultwarden — свободная серверная реализация Bitwarden: те же официальные приложения, расширения браузера и веб-интерфейс, но сервер ваш. Ему хватает самой маленькой виртуальной машины, а пароли не покидают вашу инфраструктуру.

Note

Hivelore к вашему хранилищу не подключается Мы не храним от него ключей и не ходим в его API. Связь одна — адрес: Hivelore узнаёт ссылки на ваш Vaultwarden и показывает их ключами. Всё остальное делает сам Vaultwarden.

Что понадобится

  • сервер с Docker и открытыми портами 80 и 443;
  • домен или поддомен, например vault.example.ru, с A-записью на этот сервер;
  • почтовый ящик для отправки писем (SMTP) — без него не уйдут приглашения коллегам.

Отдельный поддомен — не формальность. У хранилища паролей должен быть свой адрес, не общий с другими приложениями: так ошибка в соседнем приложении не дотянется до его страниц в браузере.

1. Запустить

Каталог, например /opt/vaultwarden, и в нём docker-compose.yml:

services:
  vaultwarden:
    image: vaultwarden/server:1.37.4
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.ru"
      SIGNUPS_ALLOWED: "false"
      INVITATIONS_ALLOWED: "true"
      ADMIN_TOKEN: '<хеш токена администратора, см. ниже>'
      SMTP_HOST: "smtp.example.ru"
      SMTP_PORT: "587"
      SMTP_SECURITY: "starttls"
      SMTP_USERNAME: "vault@example.ru"
      SMTP_PASSWORD: "<пароль почтового ящика>"
      SMTP_FROM: "vault@example.ru"
    volumes:
      - ./data:/data
    ports:
      - "127.0.0.1:8080:80"

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy:/data

Версию образа берите актуальную на момент установки — список на странице проекта Vaultwarden.

Что здесь важно:

  • SIGNUPS_ALLOWED: "false" — регистрация с улицы закрыта. Людей в хранилище зовут приглашением.
  • DOMAIN — полный адрес с https://. По нему строятся ссылки в письмах.
  • ADMIN_TOKEN — пароль от панели администратора /admin. Храните не сам пароль, а его хеш: docker run --rm -it vaultwarden/server:1.37.4 /vaultwarden hash спросит пароль и выведет строку $argon2id$…. Её — в одинарных кавычках, иначе Docker Compose примет $ за переменные.
  • Порт 8080 — только на 127.0.0.1. Снаружи хранилище доступно только через Caddy и только по HTTPS.

2. Домен и HTTPS

Рядом — Caddyfile:

vault.example.ru {
    reverse_proxy vaultwarden:80
}

Caddy сам выпустит сертификат и будет его продлевать. Запуск: docker compose up -d. Через минуту https://vault.example.ru должен открыться страницей входа.

Warning

Без HTTPS хранилище не заработает Веб-интерфейс и приложения Bitwarden отказываются работать по http:// — и это правильно: по такому адресу пароли шли бы открытым текстом.

3. Завести людей

  1. Откройте https://vault.example.ru/admin, войдите паролем администратора и пригласите себя по почте.
  2. Примите приглашение из письма, задайте мастер-пароль. Его не знает никто, кроме вас, и восстановить его нельзя — потерянный мастер-пароль означает потерянное хранилище.
  3. В веб-интерфейсе создайте организацию — общее хранилище команды. В Vaultwarden это бесплатно.
  4. Внутри организации заведите коллекции по областям: «Прод», «Стенды», «Внешние сервисы». Коллекция — единица доступа: кому какую видно, настраивается для каждого участника.
  5. Пригласите коллег в организацию и дайте каждому нужные коллекции.

4. Подключить к проекту в Hivelore

Ссылки на записи Vaultwarden узнаются без всякой настройки — по форме адреса …/#/vault?…itemId=… на любом домене. Ключ появится сразу, с подписью «Vaultwarden».

Чтобы на ключах стояло ваше название, а не общее, добавьте хранилище в проект: Настройки → Проект → «Менеджеры паролей» (раздел видит владелец проекта) → «Добавить менеджер»:

Поле Что вписать
Название «Хранилище команды» или любое другое — его увидят на ключах
Начало адреса https://vault.example.ru

«Сохранить» — и все ссылки на этот адрес, уже вставленные и будущие, подписаны вашим названием.

5. Проверить

  1. Откройте в Vaultwarden любую запись организации и скопируйте адрес из строки браузера — в нём есть #/vault? и itemId=.
  2. Вставьте его в страницу Hivelore. Вместо ссылки должен появиться ключ с вашим названием; поправьте подпись через «Изменить».
  3. Кликните по ключу: запись откроется в новой вкладке. Коллега без доступа к коллекции увидит в Vaultwarden отказ — так и задумано.
  4. Загляните в журнал проекта: там строка «Переход по ссылке на секрет».

Не забудьте о копиях

Всё хранилище — это каталог data рядом с docker-compose.yml: база, вложения и ключ сервера. Копируйте его по расписанию за пределы сервера, иначе отказ одного диска унесёт все пароли команды. Данные внутри зашифрованы мастер-паролями пользователей, но копию всё равно держите в закрытом месте.

О копии самой базы знаний — Резервная копия в своё хранилище.