Vaultwarden — неофициальная, но полностью совместимая с API Bitwarden реализация сервера на Rust. Она использует те же приложения и расширения, что и Bitwarden, но потребляет десятки мегабайт памяти вместо гигабайтов и запускается на любом мини-ПК или в LXC-контейнере.

Почему стоит держать пароли у себя

  • Данные под контролем. Хранилище зашифровано на стороне клиента; сервер видит только шифротекст.
  • Официальные клиенты. Расширения для браузеров, приложения для Android и iOS, десктоп и CLI.
  • Возможности платных тарифов. Организации, общие коллекции, TOTP-коды, вложения и Send — без подписки.
  • Минимум ресурсов. Один небольшой контейнер и файл базы SQLite.

Быстрый старт в Docker

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "false"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8222:80"

Порт привязан к 127.0.0.1 намеренно: наружу сервис должен выходить только через обратный прокси с HTTPS.

HTTPS — не опция

Веб-хранилище Bitwarden использует Web Crypto API, а браузеры разрешают его только в защищённом контексте. Без HTTPS вход не заработает (исключение — localhost). Поставьте перед Vaultwarden Caddy, Nginx Proxy Manager или Traefik с сертификатом Let's Encrypt; можно ходить и через VPN-mesh вроде Tailscale.

Первичная безопасность

  1. Зарегистрируйте свой аккаунт, затем закройте регистрацию: SIGNUPS_ALLOWED=false. Новых пользователей добавляйте приглашениями.
  2. Если включаете админ-панель (/admin), задавайте ADMIN_TOKEN в виде хеша Argon2 (генерируется командой vaultwarden hash), а не открытым текстом.
  3. Включите двухфакторную аутентификацию (TOTP или ключ FIDO2) для своего аккаунта.
  4. Придумайте длинную мастер-парольную фразу и сохраните её оффлайн: восстановить её невозможно.

Бэкап обязателен. Всё состояние лежит в каталоге /data: база db.sqlite3, вложения и ключи. Копируйте его регулярно и проверяйте, что копию можно развернуть. Делайте это через встроенную команду резервирования SQLite или остановив контейнер — простое копирование работающей базы может дать битый файл.

Ссылки