Vaultwarden — это лёгкий менеджер паролей, который можно развернуть на собственном сервере Ubuntu.
Он подходит тем, кто не хочет хранить пароли в сторонних облаках.
Решение особенно удобно для VDS, где важны контроль и предсказуемость работы сервисов.
С точки зрения администрирования Vaultwarden часто заменяет тяжёлые корпоративные решения.
Он использует совместимый API с Bitwarden, поэтому клиенты работают без изменений.
Это снижает порог входа и позволяет быстро встроить систему в существующую инфраструктуру.
Если вы только купили сервер:
Подключитесь к серверу
Выполните подготовку сервера к работе
Далее устанавливаем базовые зависимости, включая поддержку Docker.
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
Если появляется ошибка доступа к Docker, это нормально для новых пользователей.
Обычно она решается добавлением текущего пользователя в группу docker.
sudo usermod -aG docker $USER
newgrp docker
Дальше создаём отдельную директорию для конфигурации сервиса.
Это нужно, чтобы обновления не затрагивали настройки и данные пользователей.
mkdir -p /opt/vaultwarden
cd /opt/vaultwarden
Полезная информация:
Подробное описание работы с командой mkdir вы можете найти в статье Как создать файл и директорию в Linux — полный гайд для начинающих.
Теперь создаём docker-compose.yml.
Этот файл фиксирует конфигурацию, чтобы сервис можно было легко перезапускать.
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./vw-data:/data
SIGNUPS_ALLOWED=false
Запускаем контейнер одной командой.
Если всё настроено правильно, сервис поднимется за несколько секунд.
docker-compose up -d
Vaultwarden будет доступен на порту 8080.
На этом этапе уже можно открыть веб-интерфейс и проверить работу.
Если у вас есть домен, то вы можете пропустить этот шаг и настроить Vaultwarden на домене с HTTPS.
Без домена браузер блокирует доступ по IP, потому что Vaultwarden работает через HTTP. Многие клиенты и расширения вообще отказываются работать без HTTPS. Это нормальное поведение, и его нужно обойти корректно, а не отключением безопасности.
Можно установить Caddy с внутренним TLS. Он поднимает HTTPS даже без публичного домена, используя собственный локальный центр сертификации.
Если Caddy ещё не установлен:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
Смысл установки простой: Caddy берёт на себя HTTPS и избавляет от ручной возни с сертификатами.
Настройка конфигурации
Открываем файл:
sudo nano /etc/caddy/Caddyfile
Полезная информация:
Подробное описание работы с редактором nano вы можете найти в статье Основы работы с редактором nano: команды, сохранение, выход.
И задаём конфигурацию через IP сервера:
https://IP_СЕРВЕРА {
reverse_proxy localhost:8080
tls internal
}
reverse_proxy отправляет запросы в Vaultwardentls internal включает внутренний центр сертификации CaddyПосле сохранения перезапускаем сервис:
sudo systemctl restart caddy
Теперь Vaultwarden доступен по адресу:
https://IP_СЕРВЕРА
При первом входе браузер может показать предупреждение. Это ожидаемо, потому что сертификат выдан внутренним CA Caddy.
Нужно один раз доверить сертификат на своём устройстве. После этого доступ будет работать без ошибок.
Дальше введите мастер пароль.
Можно установить расширение для браузера.
В личном кабинете можно создавать новые пароли, логины, добавлять свои карты, SSH-ключи, добавить свои пароли из Google или других хранилищ, предоставить экстренный доступ другому человеку и многое другое.
Не рекомендуется использовать ip вместо домена.
Если сервер станет частью более сложной инфраструктуры, IP-режим начнёт ограничивать гибкость. Но для личного использования на VDS это вполне рабочая схема.
Для продакшн-среды лучше использовать домен и HTTPS.
Добавьте переменную в docker-compose.yml.
environment:
SIGNUPS_ALLOWED: "false"
Итоговый конфиг может выглядеть так.
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./vw-data:/data
environment:
SIGNUPS_ALLOWED: "false"
Она предотвращает открытое создание аккаунтов посторонними пользователями.
Без неё ваш личный менеджер паролей превратится в общедоступный.
Потом перезапустите контейнер.
docker-compose down
docker-compose up -d
Также важно регулярно обновлять контейнер.
Старые версии могут содержать уязвимости, которые уже известны публично.
docker compose pull
docker compose up -d
Можно настроить доступ к Vaultwarden только через локальный интерфейс.
В docker-compose.yml:
ports:
- "127.0.0.1:8080:80"
Почему: теперь сервис доступен только локально, а наружу выходит только Caddy.
Также при хранении паролей и данных карт важно позаботиться о безопасности сервера, отключить доступ по SSH, регулярно обновлять систему или включить автоматическое обновление.
База данных хранится в папке vw-data, и именно её нужно сохранять.
Можно архивировать каталог по расписанию через cron.
Так можно восстановить систему даже после полного сбоя сервера.
tar -czvf vaultwarden-backup.tar.gz /opt/vaultwarden/vw-data
Vaultwarden хорошо подходит для небольших и средних инфраструктур.
Он не требует сложной настройки и стабильно работает на обычном VDS.
При грамотной установке система становится прозрачной и управляемой.
Дальше остаётся только поддерживать обновления и следить за резервными копиями.
Vaultwarden хороший способ сохранить контроль над паролями у себя без сторонних сервисов.