Vaultwarden дома: свой менеджер паролей на Docker
Как установить Vaultwarden server на домашний сервер, подключить Bitwarden-клиенты, закрыть регистрацию и не забыть про HTTPS и бэкапы.

Vaultwarden — лёгкий сервер, совместимый с клиентами Bitwarden. Он хранит ваш зашифрованный vault дома, работает в контейнере и подходит для одного пользователя или небольшой семьи. Проект не является официальным сервером Bitwarden и не связан с Bitwarden, Inc., поэтому перед установкой важно понимать, что вы выбираете community-driven решение.
Для домашнего сервера Vaultwarden хорош по простой причине: ему не нужен большой запас ресурсов. Но это не «ещё один контейнер, который можно забыть». Внутри будут главные пароли, ключи восстановления и защищённые заметки. HTTPS, закрытая регистрация и резервные копии здесь обязательны.
Кому подойдёт Vaultwarden
Он имеет смысл, если вы хотите:
- хранить пароли и защищённые заметки на своём HomeLab;
- пользоваться привычными расширениями и мобильными клиентами Bitwarden;
- дать семейным аккаунтам единый сервер и общие коллекции;
- убрать зависимость от отдельной подписки, но оставить удобный интерфейс.
Если вам нужен сервис без обслуживания, обновлений и самостоятельных бэкапов, облачный Bitwarden будет спокойнее. Self-hosting всегда означает, что за доступность и восстановление отвечаете вы.
Минимальная схема
Рабочая архитектура выглядит так:
Bitwarden-клиент → HTTPS reverse proxy → Vaultwarden → /data → резервная копияКонтейнер лучше слушать только на 127.0.0.1, а наружу отдавать его через Caddy, Nginx Proxy Manager, Traefik или другой reverse proxy с TLS-сертификатом. Не публикуйте порт Vaultwarden напрямую в интернет: приложение должно быть доступно по доменному имени с HTTPS.
Нужны Docker/Podman, постоянная папка для /data, доменное имя или локальный DNS и место для второй копии данных. Для доступа только внутри дома можно использовать локальное имя, но HTTPS всё равно избавит от проблем с WebAuthn и мобильными клиентами.
Установка Vaultwarden server
Создайте отдельную папку и файл compose.yaml:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "false"
INVITATIONS_ALLOWED: "false"
volumes:
- ./vw-data:/data
ports:
- "127.0.0.1:8000:80"Замените vault.example.com на свой адрес. Запустите контейнер:
docker compose up -d
docker compose logs -f vaultwardenПосле этого reverse proxy должен проксировать https://vault.example.com на http://127.0.0.1:8000. Переменная DOMAIN должна точно совпадать с адресом, по которому открываются клиенты: протокол, домен, порт и путь имеют значение.
Не оставляйте в рабочем сервере SIGNUPS_ALLOWED: "true", если не планируете открытый набор пользователей. Случайная регистрация превратит адрес менеджера паролей в публичную точку входа.
Первый вход и подключение клиентов
- Откройте домен по HTTPS и создайте свою учётную запись.
- Включите двухфакторную аутентификацию и сохраните коды восстановления отдельно от сервера.
- В мобильном или настольном Bitwarden-клиенте укажите адрес собственного сервера в настройке self-hosted environment.
- Войдите и проверьте, что создание, изменение и удаление записи синхронизируются между браузером и телефоном.
- Выйдите из клиента и выполните повторный вход — это простой тест, что мастер-пароль и сервер работают как ожидается.
У расширений браузера должен быть тот же серверный URL. Не смешивайте учётную запись собственного Vaultwarden с облачным Bitwarden без явного понимания, куда в этот момент сохраняется новая запись.
Закройте админку и защитите токен
Административная панель доступна по адресу /admin. Если она нужна, задайте сильный ADMIN_TOKEN; в актуальном шаблоне конфигурации Vaultwarden рекомендуется использовать Argon2 PHC-строку. Её можно сгенерировать встроенной командой:
docker run --rm -it vaultwarden/server:latest vaultwarden hashСохраните хэш в .env или в секретах Docker Compose, а не в открытом репозитории. В Compose символ $ в Argon2-строке может потребовать экранирования дополнительным $ — это зависит от способа передачи переменной.
Если админка не нужна после настройки, не включайте её без причины. Ограничьте доступ к /admin дополнительным правилом reverse proxy и не используйте простой пароль в качестве административного токена.
Резервные копии важнее контейнера
Контейнер можно скачать заново, а содержимое vault — нет. В папке /data находятся база, ключи, вложения и другие данные сервера. Минимальная стратегия:
- ежедневная копия
vw-dataна другой диск или NAS; - несколько версий, чтобы можно было откатиться после ошибки;
- одна копия вне основного сервера;
- периодическая проверка восстановления, а не только проверка факта копирования.
Для небольшой инсталляции перед файловой копией можно остановить контейнер:
docker compose stop
tar -czf vaultwarden-data-$(date +%F).tar.gz vw-data
docker compose startКоманду выполняйте в каталоге рядом с vw-data. Архив должен уходить на другое хранилище и быть защищён от доступа посторонних. Если в базе есть вложения, убедитесь, что архив включает всю папку, а не только файл SQLite.
Типичные ошибки
Порт открыт наружу. Если 8000 доступен из интернета, reverse proxy и его защита обходятся. Оставляйте публикацию на loopback или внутреннюю Docker-сеть.
Неверный DOMAIN. Приложение открывается в браузере, но мобильный клиент не синхронизируется, ссылки ведут не туда или WebAuthn не работает.
Нет бэкапа ключей. Резервная копия базы без файлов ключей и вложений может оказаться неполной.
Обновление без проверки. Перед обновлением сохраните копию /data, затем обновите образ и проверьте вход, синхронизацию и вложения.
Публикация админки без защиты. /admin не должен быть доступен по угадываемому адресу без сильного токена и HTTPS.
Итог
Vaultwarden — удачный сервис для домашнего сервера, если вам нужен собственный менеджер паролей в Docker. Базовая установка занимает несколько минут, но безопасная эксплуатация строится вокруг трёх вещей: точный HTTPS-домен, закрытая регистрация и проверяемые резервные копии. Начинайте с одной учётной записи, восстановите тестовый архив и только потом приглашайте остальных пользователей.
