Свой 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. Завести людей
- Откройте
https://vault.example.ru/admin, войдите паролем администратора и пригласите себя по почте. - Примите приглашение из письма, задайте мастер-пароль. Его не знает никто, кроме вас, и восстановить его нельзя — потерянный мастер-пароль означает потерянное хранилище.
- В веб-интерфейсе создайте организацию — общее хранилище команды. В Vaultwarden это бесплатно.
- Внутри организации заведите коллекции по областям: «Прод», «Стенды», «Внешние сервисы». Коллекция — единица доступа: кому какую видно, настраивается для каждого участника.
- Пригласите коллег в организацию и дайте каждому нужные коллекции.
4. Подключить к проекту в Hivelore
Ссылки на записи Vaultwarden узнаются без всякой настройки — по форме адреса …/#/vault?…itemId=… на любом домене. Ключ появится сразу, с подписью «Vaultwarden».
Чтобы на ключах стояло ваше название, а не общее, добавьте хранилище в проект: Настройки → Проект → «Менеджеры паролей» (раздел видит владелец проекта) → «Добавить менеджер»:
| Поле | Что вписать |
|---|---|
| Название | «Хранилище команды» или любое другое — его увидят на ключах |
| Начало адреса | https://vault.example.ru |
«Сохранить» — и все ссылки на этот адрес, уже вставленные и будущие, подписаны вашим названием.
5. Проверить
- Откройте в Vaultwarden любую запись организации и скопируйте адрес из строки браузера — в нём есть
#/vault?иitemId=. - Вставьте его в страницу Hivelore. Вместо ссылки должен появиться ключ с вашим названием; поправьте подпись через «Изменить».
- Кликните по ключу: запись откроется в новой вкладке. Коллега без доступа к коллекции увидит в Vaultwarden отказ — так и задумано.
- Загляните в журнал проекта: там строка «Переход по ссылке на секрет».
Не забудьте о копиях
Всё хранилище — это каталог data рядом с docker-compose.yml: база, вложения и ключ сервера. Копируйте его по расписанию за пределы сервера, иначе отказ одного диска унесёт все пароли команды. Данные внутри зашифрованы мастер-паролями пользователей, но копию всё равно держите в закрытом месте.
О копии самой базы знаний — Резервная копия в своё хранилище.