1. Что такое Vaultwarden и зачем хостить самому
Bitwarden — один из лучших менеджеров паролей: open-source, поддерживает все платформы, имеет удобные браузерные расширения. Но облачный сервис bitwarden.com хранит ваши (зашифрованные) данные на американских серверах. Официальная self-hosted версия существует, но требует минимум 4 ГБ RAM и стека .NET + MSSQL.
Vaultwarden — неофициальная реализация серверной части Bitwarden, написанная на Rust. Полностью совместима с официальными клиентами и потребляет в 10–20 раз меньше ресурсов: работает на VPS с 512 МБ RAM.
Данные у вас
Зашифрованное хранилище паролей живёт на вашем VPS. Никаких американских серверов, никакой зависимости от внешнего сервиса.
Официальные клиенты
Браузерные расширения, мобильные приложения iOS/Android и десктоп — всё работает без изменений.
Минимум ресурсов
512 МБ RAM в режиме ожидания. Работает даже на самом дешёвом VPS за 150–200 ₽/мес вместе с другими сервисами.
Шифрование на стороне клиента
Все пароли шифруются AES-256 до отправки на сервер. Vaultwarden хранит только зашифрованный блоб — без вашего мастер-пароля расшифровать данные невозможно даже при физическом доступе к серверу.
2. Vaultwarden vs Bitwarden Cloud vs 1Password
| Параметр | Vaultwarden | Bitwarden Cloud | 1Password |
|---|---|---|---|
| Стоимость | Цена VPS (~200 ₽/мес) | Бесплатно / $10/год (Premium) | $3/мес |
| Хранение данных | Ваш сервер | Серверы США | Серверы США |
| Open source | ✅ Rust | ✅ Сервер + клиенты | ❌ Закрытый |
| Клиенты Bitwarden | ✅ Все | ✅ Все | ❌ Свои клиенты |
| TOTP (2FA) | ✅ | 💰 Только Premium | ✅ |
| Вложения | ✅ До 500 МБ (настр.) | 💰 Только Premium | ✅ 1 ГБ |
| Организации/семья | ✅ | 💰 Платно | 💰 $5/мес |
| Требует VPS | ✅ Да | ❌ | ❌ |
| Offline-доступ | ✅ Кеш клиента | ✅ Кеш клиента | ✅ Кеш клиента |
Кому подходит Vaultwarden
Если у вас уже есть VPS (например, для сайта, бота или VPN) — Vaultwarden запускается рядом практически бесплатно. Функций больше, чем в бесплатном Bitwarden: TOTP, вложения, организации — всё без Premium-подписки.
3. Требования к серверу
Vaultwarden написан на Rust и исключительно нетребователен к ресурсам. Это один из немногих сервисов, который комфортно живёт на самых дешёвых тарифах.
Только Vaultwarden
- — 1 vCPU
- — 512 МБ RAM
- — 5 ГБ диска
- — Личное использование
С другими сервисами
- — 1 vCPU
- — 1–2 ГБ RAM
- — 10 ГБ диска
- — + VPN / бот / сайт
Семья / команда
- — 2 vCPU
- — 2 ГБ RAM
- — 20 ГБ диска
- — Вложения + несколько пользователей
Обязательны: публичный IP, домен (или поддомен) и HTTPS — браузерные расширения Bitwarden отказываются работать без SSL-сертификата.
4. Установка Docker
Если Docker ещё не установлен — один скрипт решает вопрос.
curl -fsSL https://get.docker.com | sh
# Запустить и добавить в автозапуск
systemctl enable --now docker
# Проверить версию
docker --version
docker compose version5. Docker Compose — настройка Vaultwarden
Шаг 1: создать директорию
mkdir -p ~/vaultwarden && cd ~/vaultwardenШаг 2: сгенерировать токен администратора
ADMIN_TOKEN защищает панель администратора по адресу /admin. Сгенерируйте надёжный токен и сохраните его — он понадобится для входа.
openssl rand -base64 48
# Пример вывода: Pxs5M1ojgVo1DTK2Z/zQ4X45fFgmjuPPy71xB15B+2R6QdVtM10VKnv/TRWasjO1
# Скопируйте и сохраните этот токенШаг 3: docker-compose.yml
Замените vault.example.com на свой домен и ВАШ_ТОКЕН на сгенерированную строку:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./data:/data
environment:
DOMAIN: "https://vault.example.com"
ADMIN_TOKEN: "ВАШ_ТОКЕН"
SIGNUPS_ALLOWED: "true" # После регистрации своего аккаунта — смените на false
SHOW_PASSWORD_HINT: "false"
INVITATIONS_ALLOWED: "true"
LOG_LEVEL: "warn"127.0.0.1:8080 — важно
Порт привязан только к localhost. Nginx будет проксировать HTTPS-запросы на 8080. Это не позволяет обращаться к Vaultwarden напрямую без SSL.
Шаг 4: запуск
docker compose up -d
# Проверить статус
docker compose ps
# Посмотреть логи
docker compose logs -f vaultwardenКонтейнер стартует за 2–3 секунды. В папке ~/vaultwarden/data/ появится файл базы данных db.sqlite3.
6. Nginx + SSL
HTTPS обязателен: браузерные расширения Bitwarden не подключатся к серверу без валидного сертификата.
Установка Nginx и Certbot
apt install nginx certbot python3-certbot-nginx -yКонфиг Nginx
server {
listen 80;
server_name vault.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Для вложений (файлы паролей)
client_max_body_size 128M;
}
}ln -s /etc/nginx/sites-available/vaultwarden /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
# Получить сертификат (Certbot добавит HTTPS-блок автоматически)
certbot --nginx -d vault.example.comCertbot перезапустит Nginx с HTTPS. Откройте https://vault.example.com — должна открыться страница создания аккаунта Vaultwarden.
7. Первый вход и закрытие регистрации
Создайте аккаунт
Откройте https://vault.example.com, нажмите Create account. Придумайте надёжный мастер-пароль — это единственное, что защищает все ваши данные. Запишите его в надёжном месте.
Закройте регистрацию
После создания своего аккаунта запретите регистрацию посторонних. В docker-compose.yml смените:
SIGNUPS_ALLOWED: "false" # Запретить новые регистрацииdocker compose down && docker compose up -dПанель администратора (опционально)
Перейдите по адресу https://vault.example.com/admin и введите ADMIN_TOKEN. Здесь можно управлять пользователями, приглашать новых по email и просматривать статистику. Закройте эту страницу после использования.
Не забудьте закрыть регистрацию
Пока SIGNUPS_ALLOWED=true, любой человек, который узнает адрес вашего сервера, может создать аккаунт и хранить там свои данные. Это не критично для безопасности (чужие данные зашифрованы), но нежелательно.
8. Подключение клиентов
Во всех официальных клиентах Bitwarden нужно указать адрес вашего сервера вместо bitwarden.com. Это делается один раз при первом входе.
Браузерное расширение (Chrome, Firefox, Edge, Safari)
- Установите официальное расширение Bitwarden из магазина браузера
- Откройте расширение, нажмите на иконку шестерёнки ⚙ (или Settings) на экране входа
- В поле Server URL введите
https://vault.example.com - Нажмите Save, затем войдите со своим email и мастер-паролем
Мобильное приложение (iOS / Android)
- Установите приложение Bitwarden из App Store / Google Play
- На экране входа нажмите Self-hosted или иконку региона 🌍
- Введите URL сервера:
https://vault.example.com - Войдите с вашими учётными данными
После входа включите автозаполнение в настройках телефона: iOS → Настройки → Пароли → Параметры паролей → Bitwarden. Android → Настройки → Общее управление → Пароли и автозаполнение → Bitwarden.
Десктопное приложение (Windows, macOS, Linux)
- Скачайте приложение Bitwarden Desktop с bitwarden.com/download/
- В левом верхнем углу нажмите на регион и выберите Self-hosted
- Укажите URL сервера и войдите
Импорт из других менеджеров
Bitwarden умеет импортировать из 1Password, LastPass, KeePass, Chrome, Firefox и других. В веб-интерфейсе: Tools → Import data. Поддерживается более 50 форматов.
9. Резервные копии
Все данные Vaultwarden хранятся в папке ~/vaultwarden/data/. Это база SQLite, прикреплённые файлы и RSA-ключи. Если папка сгорит вместе с VPS — вы потеряете все пароли. Обязательно настройте регулярный бэкап.
Ручной бэкап
# Остановить Vaultwarden перед бэкапом БД (для консистентности)
docker compose stop vaultwarden
# Создать архив
tar -czf ~/vaultwarden-backup-$(date +%Y%m%d).tar.gz -C ~/vaultwarden data/
# Запустить обратно
docker compose start vaultwarden
# Проверить размер архива
ls -lh ~/vaultwarden-backup-*.tar.gzАвтоматический бэкап через cron
# Бэкап каждый день в 3:00
0 3 * * * docker stop vaultwarden && tar -czf ~/backups/vaultwarden-$(date +%Y%m%d).tar.gz -C ~/vaultwarden data/ && docker start vaultwarden
# Удалять архивы старше 30 дней
30 3 * * * find ~/backups/ -name "vaultwarden-*.tar.gz" -mtime +30 -deletemkdir -p ~/backupsПравило 3-2-1
Хранить бэкапы только на том же VPS — это не бэкап. Настройте копирование на внешнее хранилище: Backblaze B2, Rclone в облако, или хотя бы скачивайте архивы вручную раз в неделю на локальный компьютер.
Восстановление из бэкапа
# Остановить контейнер
docker compose down
# Распаковать бэкап (заменит текущие данные)
rm -rf ~/vaultwarden/data/
tar -xzf ~/vaultwarden-backup-YYYYMMDD.tar.gz -C ~/vaultwarden/
# Запустить
docker compose up -d