Все пароли — на вашем сервере, а не в чужом облаке. Работает с официальными Bitwarden-приложениями на всех устройствах. Поднимается за 15 минут.
Vaultwarden — это open-source реализация сервера Bitwarden. Делает всё то же самое: синхронизирует пароли между устройствами, генерирует стойкие пароли, хранит заметки и данные карт. Но запускается в одном Docker-контейнере и в простое ест около 30 МБ RAM. Официальный сервер Bitwarden занимает 11 контейнеров и принципиально больше ресурсов.
Мы разворачивали Vaultwarden на VPS is*hosting. Гайд — каждый шаг, включая одну ошибку конфига, которую мы допустили, и как её исправили.
Что понадобится
- VPS is*hosting (хватит тарифа Lite)
- Домен или бесплатный поддомен DuckDNS — Vaultwarden требует HTTPS
- Около 15 минут
Шаг 1. Заказать VPS
Заходите на is*hosting и заказывайте тариф Lite VPS:
- CPU: 1 vCPU
- RAM: 1 ГБ
- Диск: 20 ГБ NVMe
- ОС: Ubuntu 24
- Локация: для хранилища паролей выбирайте по юрисдикции, а не только по пингу. У is*hosting можно запустить VPS в 40+ локациях под одним аккаунтом.
- Цена: $6.99/мес, или $5.94/мес при оплате на год.
Vaultwarden очень лёгкий — около 30 МБ RAM в простое. Тариф Lite справляется без проблем. Если планируете запускать на том же VPS другие сервисы, берите тариф с запасом (например, как мы поставили Hermes на том же сервере).
Почему именно VPS, а не ноутбук или бесплатный тир? Менеджер паролей должен быть доступен круглосуточно, иначе синхронизация ломается в самый неудобный момент. Плюс это данные, которые нельзя потерять из-за OOM-kill на соседнем контейнере. Тарифы is*hosting — фиксированные цены, KVM на NVMe, бесплатные еженедельные бэкапы и инженеры в поддержке, а не скрипт первой линии.
После оплаты по готовности сервера вам на почту придут IP-адрес и root-пароль. Сохраните оба.
VPS
VPS Lite от $5.94/мес: 1 vCPU, 1 ГБ RAM, 20 ГБ NVMe в 40+ локациях, с бесплатными еженедельными бэкапами — этого хватит на свой Vaultwarden.
Шаг 2. Подключиться по SSH
- Mac: откройте Terminal (Cmd+Space → «Terminal» → Enter).
- Windows: скачайте Tabby или используйте PowerShell.
ssh root@ВАШ_IP
Введите пароль (он не отображается на экране — это нормально). Когда увидите root@server:~# — вы внутри. Хотите вход по ключу вместо пароля? Гайд по настройке SSH — займёт пять минут.
Шаг 3. Установить Docker
curl -fsSL https://get.docker.com | bash
Подождите 1-2 минуты.
Шаг 4. Создать и запустить Vaultwarden
Создайте директорию и файл Docker Compose:
mkdir /root/vaultwarden
nano /root/vaultwarden/docker-compose.yml
Вставьте:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./data:/data
Сохраните: Ctrl+O → Enter → Ctrl+X.
Запустите:
cd /root/vaultwarden
docker compose up -d
Docker скачает образ (около 30 секунд). Вы увидите что-то вроде:
✔ Image vaultwarden/server:latest Pulled
✔ Network vaultwarden_default Created
✔ Container vaultwarden Started
Проверьте, что работает:
curl -s http://localhost:8080 | head -5
Если в ответ пришёл HTML, то всё запущено.
Обратите внимание на bind: 127.0.0.1:8080:80 держит Vaultwarden на loopback — он доступен только через Caddy по HTTPS. Если написать просто "8080:80" (без привязки к 127.0.0.1), хранилище откроется по plain HTTP на публичном IP, а для менеджера паролей это дыра. На нашем Lite-сервере docker stats --no-stream показал контейнер в простое: ~28 МБ, один процесс, никакого database-сервера.
Шаг 5. Настроить домен и HTTPS
Vaultwarden требует HTTPS. Без него веб-хранилище не даст создать аккаунт. Нужен домен и SSL-сертификат.
Используйте DuckDNS (бесплатно):
- Зайдите на duckdns.org, войдите через Google
- Создайте поддомен (например, myvault) — получите myvault.duckdns.org
- Пропишите IP вашего VPS
Установите Caddy на VPS, он после сам занимается SSL:
apt install -y caddy
Настройте Caddy:
nano /etc/caddy/Caddyfile
Очистите файл (Ctrl+K пока не пусто) и вставьте:
ВАШ_ДОМЕН.duckdns.org {
reverse_proxy localhost:8080
}
Замените ВАШ_ДОМЕН.duckdns.org на реальный домен. Сохраните, перезапустите:
systemctl restart caddy
Подождите 10-15 секунд. Caddy получит SSL-сертификат от Let's Encrypt автоматически.
Откройте файрвол. Сначала разрешите SSH. Если включить ufw с открытым только портом 443, вы заблокируете себе доступ к серверу:
ufw allow OpenSSH
ufw allow 443/tcp
ufw enable
ufw status
Откройте https://ВАШ_ДОМЕН.duckdns.org в браузере. Должна появиться страница входа Vaultwarden.
Следите за номером порта. Самая частая ошибка — Caddy смотрит не на тот порт. Vaultwarden работает на порту 8080. Если на этом же VPS есть другие сервисы, убедитесь, что каждый блок Caddy указывает на правильный порт. Симптом ошибки: 502 Bad Gateway или connection refused в логах Caddy.
Шаг 6. Создать аккаунт
Нажмите Create Account на странице Vaultwarden. Введите:
- Email-адрес
- Мастер-пароль (запомните его! Если потеряете, данные восстановить невозможно)
- Подтверждение мастер-пароля
Нажмите Create Account.

Отключите публичную регистрацию сразу после создания аккаунта — не оставляйте сервер открытым для посторонних. Добавьте переменную окружения в Docker Compose:
nano /root/vaultwarden/docker-compose.yml
Добавьте блок environment:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- SIGNUPS_ALLOWED=false
ports:
- "127.0.0.1:8080:80"
volumes:
- ./data:/data
После перезапустите:
cd /root/vaultwarden && docker compose up -d
Шаг 7. Подключить устройства
Vaultwarden полностью совместим с официальными Bitwarden-приложениями:
- Браузер: установите расширение Bitwarden для Chrome, Firefox, Safari или Edge
- Телефон: установите Bitwarden из App Store или Google Play
- Десктоп: скачайте десктопное приложение Bitwarden
В каждом приложении перед входом:
- Нажмите на шестерёнку или найдите Self-hosted / Self-hosted environment
- Введите URL вашего сервера: https://ВАШ_ДОМЕН.duckdns.org
- Сохраните, затем войдите с email и мастер-паролем
Все пароли синхронизируются между устройствами через ваш сервер.
Траблшутинг
502 Bad Gateway
Caddy не может достучаться до Vaultwarden. Проверьте:
Контейнер запущен?
docker ps
Vaultwarden должен быть в списке. Если нет:
cd /root/vaultwarden && docker compose up -d
Caddy смотрит на правильный порт?
cat /etc/caddy/Caddyfile
В блоке Vaultwarden должно быть reverse_proxy localhost:8080. Не 7788, не 80 — 8080.
После исправления перезапустите Caddy:
systemctl restart caddy
«An error has occurred» при создании аккаунта
Вы заходите по http:// вместо https://. Веб-хранилище требует HTTPS для всех операций с аккаунтом. Настройте Caddy с доменом (Шаг 5).
Bitwarden-приложение не подключается
- Убедитесь, что в поле self-hosted URL введено https:// (с протоколом)
- Проверьте, открыт ли порт 443: ufw allow 443/tcp
- Сначала проверьте из браузера телефона: откройте https://ВАШ_ДОМЕН. Если веб-хранилище загрузилось, приложение тоже заработает
Полезные команды
cd /root/vaultwarden && docker compose up -d # запустить
cd /root/vaultwarden && docker compose down # остановить
cd /root/vaultwarden && docker compose restart # перезапустить
docker logs vaultwarden --tail 20 # посмотреть логи
docker ps # статус контейнеров
Бэкапы
Пароли лежат в /root/vaultwarden/data/. Бэкапьте регулярно:
cp -r /root/vaultwarden/data /root/vaultwarden-backup-$(date +%Y%m%d)
Для автоматического бэкапа добавьте cron-задачу:
crontab -e
Добавьте строку:
0 3 * * * cp -r /root/vaultwarden/data /root/vaultwarden-backup-$(date +\%Y\%m\%d)
Бэкап будет создаваться каждый день в 3:00.
Здесь работают два уровня защиты. is*hosting включает бесплатные еженедельные бэкапы на всех тарифах (полный снапшот сервера). Cron-копия выше — быстрый целевой слой: это только данные хранилища, восстановление одной командой, а не откат всего сервера. Держите оба.
Что получилось
- Свой менеджер паролей, работает 24/7
- HTTPS через Caddy + бесплатный домен
- Совместимость со всеми Bitwarden-приложениями (браузер, телефон, десктоп)
- Все данные на вашем сервере, а не в чьём-то облаке
- ~30 МБ RAM — работает на самом дешёвом тарифе VPS
Что дальше
- Импорт паролей — Vaultwarden поддерживает импорт из Bitwarden, LastPass, 1Password, Chrome, Firefox и десятков других менеджеров
- Включить 2FA — двухфакторная аутентификация для хранилища в Account Settings
- Настроить admin-панель — добавьте ADMIN_TOKEN в окружение Docker Compose. Сначала сгенерируйте токен: openssl rand -base64 48. Панель закрыта только этим токеном, поэтому не включайте её без него
- Расшарить пароли — создайте Organization, чтобы делиться паролями с командой или семьёй
Документация: github.com/dani-garcia/vaultwarden/wiki
FAQ

Vaultwarden такой же безопасный, как официальный сервер Bitwarden?
Хранилище шифруется мастер-паролем на стороне клиента — до того, как что-то попадает на сервер. Шифрование одинаковое вне зависимости от того, какой сервер хранит данные. Разница — в серверном коде: Vaultwarden — это реализация от сообщества, не официальный код Bitwarden. Держите HTTPS включённым, отключите открытую регистрацию, защитите admin-токен и поверхность атаки будет маленькой.
Официальные Bitwarden-приложения работают с ним?
Да, расширение для браузера, мобильные приложения и десктоп-клиент подключаются без каких-либо правок. Перед входом укажите URL вашего сервера в поле self-hosted.
Нужен ли платный домен?
Нужен HTTPS, но не обязательно платный домен. Бесплатный поддомен DuckDNS работает нормально, и Caddy выпускает сертификат автоматически.
Где запускать
Vaultwarden работает на самом дешёвом тарифе is*hosting. Тариф VPS Lite (1 vCPU / 1 GB RAM / 20 GB NVMe) — $6.99/мес или $5.94/мес при оплате на год — доступен в 40+ локациях. Выберите юрисдикцию, где хотите хранить пароли, задеплойте и подключите Bitwarden-приложения.