Перейти к основному содержимому
  1. Posts/
  2. Self-Hosting/

Vaultwarden: установка на сервере, альтернатива Bitwarden

··3178 слов·15 минут· loading · loading · ·
Stilicho2011
Автор
Stilicho2011
Пишу о homelab, self-hosting, автоматизации и open-source решениях
Оглавление
Self-Hosting - This article is part of a series.
Part : This Article

Vaultwarden
#

Установка Vaultwarden
#

Note

Статья обновлена: добавлена продвинутая конфигурация с SSO (Authentik), push-уведомлениями и вынесением секретов в .env-файл — именно так теперь настроен инстанс на моём сервере.

Что такое менеджер паролей — кратко
#

Менеджер паролей - это приложение, которое безопасно хранит ваши логины, пароли, заметки и другие секреты в зашифрованной форме и помогает автоматически подставлять данные при входе в сайты/приложения. Преимущества: сильные уникальные пароли для каждого сервиса, генерация случайных паролей, синхронизация между устройствами, централизованное хранилище паролей и ssh-ключей, а также история изменений.

Что такое Vaultwarden
#

Vaultwarden - это лёгкая, быстрая и совместимая с Bitwarden реализация сервера (написана на Rust), которая реализует API Bitwarden и позволяет использовать официальные клиенты Bitwarden (браузерные расширения, мобильные/десктоп приложения) с вашим собственным сервером. Vaultwarden ориентирован на self-host развёртывание (контейнеры, Docker Compose, Kubernetes и т. п.).

Почему self-hosted
#

Коротко - ключевые преимущества self-hosted Vaultwarden:

  • Контроль над данными: база и резервные копии находятся под вашим и только вашим контролем, не в облаке у третьих лиц.
  • Конфиденциальность: отсутствие передачи метаданных/бэкап-копий на внешние сервисы. Вы и только вы контролируете ваши данные.
  • Гибкость и интеграция: можно подключить LDAP/SMTP/внешнюю БД, SSO через свой identity provider, настроить резервные копии, использовать свой TLS (reverse proxy) и т.д.
  • Экономия и простота: Vaultwarden легче и дешевле по ресурсам, чем upstream Bitwarden Server.

Минусы/риски: вы сами отвечаете за безопасность (обновления, TLS, бэкапы, настройка брандмауэра, ротация секретов). Но тут есть один, для кого-то спорный, момент. По каким то причинам, люди считают, что Bitwarden более безопасен, так как это коммерческий продукт. Вроде бы, на первый взгляд, звучит логично. Но по факту, облачные сервисы компаний всегда по атакой, и иногда они ее пропускают. Тот же Bitwarden часто допускал утечки, а у пользователей его облака часто эти самые облака “угоняли”. Как это не странно может показаться, ты защищаешь свою инстанцию Vaultwarden куда тщательней. И это не учитывая, что ты, только не обижайся, в принципе интереса не представляешь.

Короткий план развертывания (что сделаем)
#

  1. Начнём с базового docker-compose.yml - минимальный рабочий вариант.
  2. Разберём продвинутую конфигурацию: секреты в .env, SSO через Authentik, push-уведомления, тюнинг Rocket/логирования - вариант, который сейчас крутится у меня.
  3. Настроим reverse-proxy и TLS.
  4. Пройдёмся по админ-панели, регистрации пользователей и организациям.
  5. Разберём бэкапы и типичные ошибки.

Базовая установка
#

Если вам нужен просто рабочий сервер без SSO и лишних настроек - этого варианта достаточно. Дальше в статье будет и продвинутая версия, но начать проще с этой.

services:
  vaultwarden:  # Определение сервиса Vaultwarden -основного контейнера менеджера паролей.
    container_name: vaultwarden  # Имя контейнера в Docker -удобно для команд и логов.
    image: vaultwarden/server:latest  # Официальный образ Vaultwarden с Docker Hub (написан на Rust).
    restart: unless-stopped  # Контейнер будет автоматически перезапущен, если упадёт, но не после ручной остановки.

    volumes:
      - /path/to/bind/mount/:/data/  # Монтируем локальную директорию на хосте в /data контейнера.
                                       # Здесь хранятся база данных, вложения и конфигурация Vaultwarden.

    environment:
      - SIGNUPS_ALLOWED=false        # Запрещаем регистрацию новых пользователей (false) -повышает безопасность.
      - ADMIN_TOKEN=replace_with_a_hashed_token  # См. раздел про хэширование ниже — не храните токен открытым текстом.
      - WEBSOCKET_ENABLED=true       # Включаем WebSocket -клиенты Bitwarden смогут мгновенно получать обновления.
      - DOMAIN=https://vaultwarden.domain.ru  # Указываем домен — нужен для правильных ссылок (сброс пароля, TOTP и т.д.)
      - TZ=Europe/Moscow             # Задаём часовой пояс — корректное время в логах и уведомлениях.

    networks:
      - proxy                        # Подключаем контейнер к внешней сети Traefik'а, чтобы прокси мог его обнаружить.

    labels:
      - "traefik.enable=true"

      # --- HTTP → HTTPS редирект ---
      - "traefik.http.routers.vaultwarden.entrypoints=web"
      - "traefik.http.routers.vaultwarden.rule=Host(`vaultwarden.domain.ru`)"
      - "traefik.http.middlewares.vaultwarden-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.vaultwarden.middlewares=vaultwarden-https-redirect"

      # --- HTTPS (secure) ---
      - "traefik.http.routers.vaultwarden-secure.entrypoints=websecure"
      - "traefik.http.routers.vaultwarden-secure.rule=Host(`vaultwarden.domain.ru`)"
      - "traefik.http.routers.vaultwarden-secure.tls=true"
      - "traefik.http.routers.vaultwarden-secure.service=vaultwarden"

      # --- Backend настройки ---
      - "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"

    security_opt:
      - no-new-privileges:true  # Контейнер не сможет повысить свои привилегии внутри системы.

networks:
  proxy:
    external: true  # Используем внешнюю сеть Docker, которую уже использует Traefik.

Примечания к базовому файлу
#

  • ADMIN_TOKEN - токен для входа в административную панель (/admin). Без него панель недоступна. Как захэшировать токен по всем правилам - см. раздел «Безопасный ADMIN_TOKEN» ниже.
  • SIGNUPS_ALLOWED=false - рекомендуется, если сервер доступен извне. Разрешайте true только на время создания первого аккаунта, затем выключайте.
  • WEBSOCKET_ENABLED=true - синхронизация клиентов в реальном времени. Reverse-proxy должен поддерживать проксирование Upgrade: websocket.

Продвинутая конфигурация: .env, SSO и push-уведомления
#

Когда сервис обрастает пользователями, хочется убрать секреты из compose-файла, подключить единый вход через свой identity provider (у меня это Authentik) и получать push-уведомления на мобильных клиентах, а не только polling/websocket. Вот конфигурация, которая сейчас работает у меня.

docker-compose.yml
#

services:
  vaultwarden:
    container_name: vaultwarden
    image: vaultwarden/server:latest
    restart: unless-stopped
    volumes:
      - /path/to/docker/vaultwarden/data:/data
      - /path/to/docker/vaultwarden/logs:/data/logs
    ports:
      - 18083:80
    environment:
      - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
      - SIGNUPS_ALLOWED=${VAULTWARDEN_SIGNUPS_ALLOWED}
      - SIGNUPS_VERIFY=${VAULTWARDEN_SIGNUPS_VERIFY}
      - INVITATIONS_ALLOWED=${VAULTWARDEN_INVITATIONS_ALLOWED}
      - WEBSOCKET_ENABLED=true
      - ROCKET_ENV=prod
      - ROCKET_WORKERS=10
      - TZ=${VAULTWARDEN_TZ}
      - LOG_LEVEL=error
      - EXTENDED_LOGGING=true
      - DOMAIN=${VAULTWARDEN_BASE_URL}
      - SMTP_HOST=${VAULTWARDEN_EMAIL__HOST}
      - SMTP_PORT=${VAULTWARDEN_EMAIL__PORT}
      - SMTP_FROM=${VAULTWARDEN_EMAIL__USERNAME}
      - SMTP_USERNAME=${VAULTWARDEN_EMAIL__USERNAME}
      - SMTP_PASSWORD=${VAULTWARDEN_EMAIL__PASSWORD}
      - SMTP_SECURITY=${VAULTWARDEN_EMAIL__SECURITY}
      - SSO_ENABLED=true
      - SSO_AUTHORITY=https://authentik.domain.ru/application/o/vaultwarden/
      - SSO_CLIENT_ID=${VAULTWARDEN_SSO_CLIENT_ID}
      - SSO_CLIENT_SECRET=${VAULTWARDEN_SSO_CLIENT_SECRET}
      - SSO_SCOPES="openid email profile offline_access"
      - SSO_ALLOW_UNKNOWN_EMAIL_VERIFICATION=false
      - SSO_CLIENT_CACHE_EXPIRATION=0
      - SSO_ONLY=false            # true -полностью отключает вход по мастер-паролю, только SSO
      - SSO_SIGNUPS_MATCH_EMAIL=true  # первый вход через SSO привязывается к существующему аккаунту по email
      - PUSH_ENABLED=true
      - PUSH_INSTALLATION_ID=${VAULTWARDEN_PUSH_INSTALLATION_ID}
      - PUSH_INSTALLATION_KEY=${VAULTWARDEN_PUSH_INSTALLATION_KEY}
      - PUSH_RELAY_URI=https://api.bitwarden.eu
      - PUSH_IDENTITY_URI=https://identity.bitwarden.eu
    networks:
      - vaultwarden
    # Reverse-proxy настраивается отдельно — см. раздел про Traefik/Nginx ниже.
    # Пример лейблов для Traefik (если контейнер в одной сети с прокси):
    #labels:
    #  - "traefik.enable=true"
    #  - "traefik.http.routers.vaultwarden.entrypoints=web"
    #  - "traefik.http.routers.vaultwarden.rule=Host(`vaultwarden.domain.ru`)"
    #  - "traefik.http.middlewares.vaultwarden-https-redirect.redirectscheme.scheme=https"
    #  - "traefik.http.routers.vaultwarden.middlewares=vaultwarden-https-redirect"
    #  - "traefik.http.routers.vaultwarden-secure.entrypoints=websecure"
    #  - "traefik.http.routers.vaultwarden-secure.rule=Host(`vaultwarden.domain.ru`)"
    #  - "traefik.http.routers.vaultwarden-secure.tls=true"
    #  - "traefik.http.routers.vaultwarden-secure.service=vaultwarden"
    #  - "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
    #  - "traefik.docker.network=proxy"
    security_opt:
      - no-new-privileges:true

networks:
  vaultwarden:
    external: true
Tip

В этой версии контейнер публикует порт 18083:80 напрямую, а Traefik-лейблы закомментированы. Так удобно, если реверс-прокси настроен отдельно (например, через отдельный файл конфигурации Traefik, а не через Docker-лейблы) или проброс идёт через другой прокси. Если вы используете лейблы, как в базовом варианте выше - раскомментируйте блок и уберите публикацию порта наружу, оставив её только для внутренней сети.

.env-файл
#

Секреты и то, что часто меняется между окружениями, выносим в .env рядом с docker-compose.yml:

VAULTWARDEN_ADMIN_TOKEN=<захэшированный токен, см. раздел ниже>

# Временные настройки для первой регистрации
VAULTWARDEN_SIGNUPS_ALLOWED=false
VAULTWARDEN_SIGNUPS_VERIFY=true
VAULTWARDEN_INVITATIONS_ALLOWED=true

# Почта для уведомлений
VAULTWARDEN_EMAIL__HOST=smtp.gmail.com
VAULTWARDEN_EMAIL__PORT=465
VAULTWARDEN_EMAIL__USERNAME=<ваш email/логин SMTP>
VAULTWARDEN_EMAIL__PASSWORD="<пароль приложения>"
VAULTWARDEN_EMAIL__SECURITY=force_tls  # варианты: starttls, force_tls, off

# SSO (Authentik)
VAULTWARDEN_SSO_CLIENT_ID=<client id из Authentik>
VAULTWARDEN_SSO_CLIENT_SECRET=<client secret из Authentik>

# Push-уведомления
VAULTWARDEN_PUSH_INSTALLATION_ID=<installation id с bitwarden.com/host>
VAULTWARDEN_PUSH_INSTALLATION_KEY=<installation key с bitwarden.com/host>

# Локаль
VAULTWARDEN_TZ=Europe/Moscow

# Базовый URL (для корректной работы подтверждения email и SSO redirect)
VAULTWARDEN_BASE_URL=https://vaultwarden.domain.ru
Warning

.env содержит пароли и секреты в открытом виде на диске. Обязательно добавьте его в .gitignore, если храните compose-файлы в git-репозитории, и ограничьте права на файл (chmod 600 .env).

Что изменилось по сравнению с базовым вариантом
#

ПараметрЗачем
ROCKET_ENV=prodЯвно указывает production-режим веб-фреймворка Rocket, на котором написан Vaultwarden - меньше отладочного вывода, чуть иное поведение логирования.
ROCKET_WORKERS=10Количество воркер-потоков, обрабатывающих запросы. По умолчанию значение скромное; для сервера с несколькими активными пользователями/организациями имеет смысл увеличить.
LOG_LEVEL=error + EXTENDED_LOGGING=trueПишем в лог только ошибки, но с расширенным форматом (таймстемпы, модуль) - удобно для отладки, не засоряя логи лишним.
/data/logs отдельным томомЛоги пишутся в файл, а не только в stdout контейнера - удобно забирать их, например, в Promtail/Alloy для стека мониторинга.
SIGNUPS_VERIFY=trueПри регистрации требуется подтвердить email - актуально, когда INVITATIONS_ALLOWED=true и вы приглашаете людей напрямую.

Настройка SSO через Authentik
#

Vaultwarden поддерживает вход через OpenID Connect - можно завести Authentik, Keycloak, Authelia или любой другой OIDC-совместимый провайдер. Общая логика одинакова, ниже - на примере Authentik.

  1. В Authentik создайте новый OAuth2/OpenID Provider с redirect URI вида https://vaultwarden.stilicho.ru/identity/connect/oidc-signin.
  2. Создайте Application, привяжите к нему провайдер из шага 1, задайте slug (в моём случае -vaultwarden, отсюда и SSO_AUTHORITY=.../application/o/vaultwarden/).
  3. Скопируйте Client ID и Client Secret -они идут в VAULTWARDEN_SSO_CLIENT_ID и VAULTWARDEN_SSO_CLIENT_SECRET.
  4. В compose-файле выставьте SSO_ENABLED=true и укажите SSO_AUTHORITY -это базовый URL вашего OIDC-провайдера, Vaultwarden сам подтянет .well-known/openid-configuration.
  5. SSO_SIGNUPS_MATCH_EMAIL=true -если у пользователя уже есть аккаунт в Vaultwarden, первый вход через SSO привяжется к нему по email, а не создаст дубликат.
  6. SSO_ONLY оставляйте false, пока не убедитесь, что вход через SSO точно работает - иначе рискуете остаться без доступа, если что-то пойдёт не так на стороне провайдера.
Important

После первого успешного входа через SSO проверьте вход и по обычному мастер-паролю (если SSO_ONLY=false) -это ваш «запасной выход», если Authentik станет недоступен.

Push-уведомления
#

PUSH_ENABLED включает push-уведомления на мобильных клиентах Bitwarden (мгновенное появление одноразовых кодов входа, уведомления о новых устройствах и т.д.) без постоянного polling.

Для этого нужны PUSH_INSTALLATION_ID и PUSH_INSTALLATION_KEY -их бесплатно выдают на bitwarden.com/host после регистрации self-hosted инсталляции. PUSH_RELAY_URI/PUSH_IDENTITY_URI в примере указывают на европейский релей (api.bitwarden.eu / identity.bitwarden.eu) - если ваши пользователи не в ЕС, можно использовать глобальный релей (api.bitwarden.com / identity.bitwarden.com).


Безопасный ADMIN_TOKEN
#

По умолчанию можно просто сгенерировать случайный сложный токен в любом генераторе паролей и указать его в ADMIN_TOKEN, но в открытом текстовом виде это небезопасно - Vaultwarden будет предупреждать об этом и в логах, и в самой админ-панели.

Самый простой способ захэшировать токен - встроенная команда самого Vaultwarden (доступна начиная с версии 1.28), не требует установки дополнительных пакетов:

docker exec vaultwarden /vaultwarden hash --preset owasp

Команда спросит пароль интерактивно и выведет готовую строку вида $argon2id$v=19$m=...$... -её и нужно вставить в ADMIN_TOKEN.env-файле экранировать $ не нужно; а вот если вписываете значение прямо в docker-compose.yml без .env, каждый $ нужно удвоить: $$, иначе Compose попытается интерпретировать их как переменные окружения).

Подробности есть в wiki Vaultwarden.

После этого контейнер можно (пере)запускать:

docker compose up -d

Учти, что «Панель /admin " - самая привлекательная цель для брутфорса; если хотите закрыть её дополнительным rate-limiting или банить сканеры на уровне Traefik, см. статью про middlewares в Traefik и CrowdSec».

Первый вход в панель администратора
#

После того как контейнер запустится, можно посмотреть его логи, например, с помощью Portainer или командой docker logs vaultwarden.

Логи контейнера Vaultwarden после запуска

Если всё в порядке, приложение не будет ругаться - значение токена надёжно захэшировано. В противном случае вы увидите предупреждение, что токен указан в открытом текстовом формате и это небезопасно (на работоспособность само по себе это не влияет, но снижает защиту админ-панели).

Чтобы зайти в панель администратора, вводим в адресную строку браузера адрес Vaultwarden и обязательно добавляем в конце /admin.

Форма входа в панель администратора Vaultwarden (/admin)

Для подтверждения вводим пароль администратора и попадаем в панель. Выбираем вкладку General settings - это центральный раздел конфигурации.

Раздел General settings в панели администратора

В самом верху - напоминание, что любые значения, внесённые в настройках администратора, перезаписывают значения переменных окружения (например, данные почтового сервера) или настройки самого приложения. Значения, которые будут перезаписаны, выделены жёлтым.

Раздел «General settings» - подробный обзор
#

Domain
#

  • Описание: Основной домен, по которому доступен Vaultwarden.
  • Пример: https://vaultwarden.stilicho.ru
  • Назначение: Используется в ссылках (приглашения, сброс пароля, email-уведомления, redirect для SSO).
  • Важно: если поменяете домен - обновите и WEBSOCKET_ADDRESS, а также redirect URI в настройках вашего OIDC-провайдера.

WebSocket Address
#

  • Описание: Адрес WebSocket для синхронизации клиентов Bitwarden.
  • Пример: wss://vault.stilicho.ru/notifications/hub
  • Назначение: Обеспечивает мгновенную синхронизацию (например, если добавлен новый пароль с другого устройства).
  • Примечание: Если используете Traefik или другой прокси - важно пробросить /notifications/hub.

Web Vault Enabled
#

  • Описание: Включает или отключает веб-интерфейс хранилища.
  • По умолчанию: включено.
  • Зачем выключать: если хотите использовать Vaultwarden только через Bitwarden Desktop/Mobile клиенты.

User Registration (Allow new signups)
#

  • Переменная окружения: SIGNUPS_ALLOWED
  • Варианты: true -любой может зарегистрироваться; false - только вручную (админ создаёт пользователей через /admin или приглашения).
  • Совет: на публичном сервере - выключить. Оставьте включённым временно только для регистрации первого аккаунта.

Require email verification on signups
#

  • Переменная: SIGNUPS_VERIFY
  • Рекомендация: включить при включённом SMTP - особенно если разрешены инвайты (INVITATIONS_ALLOWED=true), чтобы исключить опечатки в email.

Invitation (Allow invitations)
#

  • Переменная: INVITATIONS_ALLOWED
  • Рекомендация: оставьте включённым, если используете Organizations - иначе никто не сможет присоединиться.

SMTP Enabled
#

  • Переменные: SMTP_*
  • Рекомендация: настройте SMTP до создания организаций или до того, как понадобится сброс пароля.

SSO Enabled
#

  • Переменная: SSO_ENABLED
  • Описание: включает вход через OpenID Connect. В UI администратора можно посмотреть текущий статус подключения к провайдеру и диагностику - полезно, если что-то не срослось с SSO_AUTHORITY.

E-mail Domain Whitelist
#

  • Пример: stilicho.ru,prohomelab.com
  • Назначение: ограничить регистрацию корпоративными/своими доменами.

Allow password hints
#

  • Рекомендация: можно отключить, чтобы не давать потенциальному злоумышленнику подсказки.

YubiKey OTPs Enabled
#

  • Переменные: YUBICO_CLIENT_ID, YUBICO_SECRET_KEY
  • Назначение: двухфакторная аутентификация через аппаратные ключи YubiKey.

WebSocket Notifications Enabled
#

  • Примечание: требует корректно настроенный обратный прокси. Websocket Docs

Admin Token
#

  • Описание: показывает текущий токен входа в админ-панель. Изменить можно только через переменную окружения (ADMIN_TOKEN в .env), панель не позволяет сменить его «на лету» без перезапуска контейнера.

Disable Two-Factor remember
#

  • Рекомендация: включить на публичных серверах для повышения безопасности. Учтите: с недавних версий Vaultwarden «запомненные» 2FA-токены в любом случае действуют не дольше 30 дней.
Important

Один из самых важных разделов - настройки почты в SMTP EMAIL SETTINGS. Если планируете приглашать пользователей (членов семьи, сотрудников) - эти настройки обязательны.

Остальные настройки - по вашему желанию, но я бы отключил простую неконтролируемую регистрацию в приложении. Отключение регистрации не мешает приглашениям и SSO.

Раздел Users
#

Таблица «Users» показывает список всех пользователей хранилища, их статус, уровень подтверждения и активность. Здесь же можно приглашать новых пользователей и вручную подтверждать SSO-аккаунты, если SSO_SIGNUPS_MATCH_EMAIL не сработал автоматически.

Раздел Users в админ-панели

Что такое Organization
#

Organization - группа пользователей, которые могут совместно использовать определённые записи (логины, пароли, безопасные заметки и т.п.). Аналог корпоративного или семейного хранилища в Bitwarden Cloud.

Раздел Organizations в админ-панели

Основная идея
#

  • У вас есть личный сейф, видимый только вам.
  • В рамках Organization можно создавать общие коллекции, например:
    • «DevOps» -пароли CI/CD, SSH-ключи, токены API
    • «Маркетинг» -доступ к соцсетям и рекламным кабинетам
    • «Семья» -совместные подписки (Netflix, Spotify и т.п.)

Как это работает
#

  1. Администратор создаёт организацию (например, «ProHomelab»).
  2. Добавляет участников по e-mail (нужна учётка на этом же сервере - через обычную регистрацию, инвайт или SSO).
  3. Создаёт Collections (категории для общих данных).
  4. Назначает права доступа к каждой коллекции (чтение, запись, администрирование).
  5. Пользователи получают эти записи в своём клиенте Bitwarden (веб, десктоп, мобильный).

Пример структуры
#

Organization: ProHomelab
 ├── Collection: Infrastructure
 │    ├── Proxmox login
 │    ├── Traefik dashboard
 │    └── Grafana API key
 ├── Collection: Media
 │    ├── Jellyfin admin
 │    └── Audiobookshelf credentials

Типы ролей
#

  • Owner - полный контроль над организацией.
  • Admin - управление пользователями и коллекциями.
  • Manager - управляет только своими коллекциями.
  • User - пользуется выданным доступом, без управления структурой.

Важные детали
#

  • Organizations не обязательны для личного использования.
  • Для инвайтов нужны включённые INVITATIONS_ALLOWED и настроенный SMTP.
  • Можно создать несколько организаций на одном сервере.
  • Поддерживаются личные ключи шифрования - админ не видит содержимое паролей участников.

Регистрация первого пользователя
#

Переходим по адресу вашего Vaultwarden (в моём случае vaultwarden.stilicho.ru) и выбираем Create Account.

Форма регистрации первого пользователя Vaultwarden

Указываем почту и nickname.

Warning

Для регистрации самого первого пользователя нужно временно разрешить простую регистрацию (SIGNUPS_ALLOWED=true). После создания первого (админского) аккаунта - верните false.

Если у вас включён SSO с SSO_SIGNUPS_MATCH_EMAIL=true, первого пользователя всё равно проще создать через обычную регистрацию или инвайт, а затем просто входить через SSO - привязка произойдёт автоматически по email.

По умолчанию пароль должен быть не короче 12 символов, Vaultwarden проверяет его на сложность и предлагает проверить на утечки (не был ли такой пароль скомпрометирован ранее).

Мастер-пароль хранилища

После этого попадаем в хранилище.

Хранилище Vaultwarden после первого входа

Сверху подсказка о трёх первых шагах: создать аккаунт, установить расширение для браузера, импортировать данные из другого менеджера паролей. Формат экспорта зависит от конкретного приложения-донора, но общий принцип один: экспортируете файл там, импортируете здесь.

Пользовательские настройки (User Settings)
#

Пользовательские настройки - то, что видит обычный пользователь Vaultwarden после входа в веб-интерфейс (Web Vault) по адресу https://vaultwarden.<ваш-домен>.ru.

Разберём раздел Vaults - «сердце» всей системы, где хранятся и управляются пароли, токены, заметки и другие секреты.

💡 Чтобы не путать:

  • Vaults - личное хранилище (и общие через Organizations).
  • Settings - настройки поведения хранилища.
  • Admin Panel (/admin) - серверные параметры.

Основная структура
#

1. Items (элементы хранилища)
#

ТипНазначениеПример
LoginЛогин + пароль + URLСайт GitHub, SSH-панель, Grafana
CardДанные банковской картыVisa, MasterCard
IdentityЛичные данныеФИО, адрес, email
Secure NoteПроизвольный текстSSH-ключ, токен API, конфиг

Каждый элемент содержит имя, тип, поля (username, password, URL и пр.), при желании - TOTP-код, вложения, заметки, привязку к Organization/Collection.

2. Collections
#

Если вы участвуете в Organization, в левой панели появится список Collections - общих папок с записями, доступными группе пользователей. Без организации эти секции не отображаются.

3. Навигационные вкладки
#

ВкладкаНазначение
All ItemsВсе записи, личные и общие
FavoritesОтмеченные «звёздочкой» элементы
FoldersЛичные папки (только для структуры пользователя)
TrashУдалённые записи, которые можно восстановить
OrganizationsДоступ к общим хранилищам

4. Добавление новых записей
#

Кнопка + New Item открывает форму создания записи. Доступны «Generate password» (встроенный генератор), «Add TOTP» (одноразовый 2FA-код), «Attach file» (если включено ENABLE_ATTACHMENTS=true).

5. Поиск и фильтрация
#

Поиск по названию, имени пользователя, домену, заметкам - выполняется локально, данные не передаются серверу в открытом виде. Фильтры: по типу элемента, по организации/коллекции, по меткам.

6. Папки (Folders)
#

Личная логическая структура, не связанная с организациями. Данные в папке не передаются другим пользователям, даже если у них та же организация.

7. Trash (Корзина)
#

Удалённые записи не исчезают сразу - попадают в корзину, откуда их можно восстановить или удалить навсегда.

8. Context menu записи
#

View, Edit, Clone, Move to Folder/Collection, Add Favorite, Delete.

9. Password Generator
#

Генерация пароля нужной длины и сложности (буквы, цифры, символы, исключение похожих знаков) - доступен прямо из Vault.


Резервное копирование
#

В интернете можно часто встретить вопрос, как именно бэкапить Vaultwarden. Вот минимальный рабочий вариант.

Для SQLite (база по умолчанию) достаточно копировать директорию с данными целиком, пока контейнер не пишет активно - либо использовать sqlite3 .backup для консистентного снепшота без остановки сервиса:

#!/usr/bin/env bash
set -e

SRC="/path/to/docker/vaultwarden/data"
DEST="/backup/vaultwarden/$(date +%F)"

mkdir -p "$DEST"
sqlite3 "$SRC/db.sqlite3" ".backup '$DEST/db.sqlite3'"
cp -r "$SRC/attachments" "$DEST/" 2>/dev/null || true
cp -r "$SRC/sends" "$DEST/" 2>/dev/null || true
cp "$SRC/rsa_key"* "$DEST/" 2>/dev/null || true

# чистим бэкапы старше 14 дней
find /backup/vaultwarden -maxdepth 1 -mtime +14 -exec rm -rf {} \;

Повесьте это на cron (например, раз в сутки) и обязательно проверьте, что бэкапы реально восстанавливаются - «бэкап, который никогда не разворачивали», как известно, это просто файл, занимающий место.

Если используете PostgreSQL/MySQL - соответственно pg_dump/mysqldump вместо копирования файла SQLite.

Типичные ошибки
#

  • Не совпадает DOMAIN с реальным HTTPS-адресом - это ломает подтверждение email и TOTP/2FA. Проверьте, что значение точно совпадает с тем, что видит браузер (включая протокол, без завершающего слэша).
  • WebSocket не подключается - реверс-прокси не проксирует /notifications/hub с заголовками Upgrade/Connection. Проверьте конфиг прокси.
  • SSO редиректит на ошибку - не совпадает redirect URI в настройках OIDC-провайдера с реальным адресом Vaultwarden, либо SSO_AUTHORITY указывает не на корневой URL провайдера/приложения.
  • Не приходят push-уведомления - устаревшие или неверные PUSH_INSTALLATION_ID/PUSH_INSTALLATION_KEY, либо выбран не тот регион релея (.com вместо .eu или наоборот).
  • Предупреждение про открытый ADMIN_TOKEN в логах - токен не захэширован, см. раздел про vaultwarden hash --preset owasp.

FAQ
#

Можно ли использовать Vaultwarden без своего домена? Технически да (по IP), но Web Vault требует защищённого контекста (HTTPS) для Web Crypto API, а без домена сложнее получить нормальный TLS-сертификат. По факту - без реального домена система не взлетит.

Обязательно ли использовать SSO? Нет, это опциональная надстройка. Обычная регистрация с мастер-паролем работает и без него. Более того, использование SSO не отключает встроенную аутентификацию.

Можно ли перенести данные из Bitwarden Cloud? Да - экспортируете хранилище из Bitwarden Cloud (Settings → Export Vault) и импортируете в свежесозданный аккаунт на Vaultwarden.

Что делать, если забыл ADMIN_TOKEN? Сгенерировать новый через vaultwarden hash --preset owasp и обновить .env/переменную окружения, затем перезапустить контейнер. К пользовательским данным это отношения не имеет.

Итого
#

Раздел / ЭлементНазначение
All ItemsВсе записи пользователя
FoldersЛичные категории
CollectionsОбщие категории (в организациях)
TrashКорзина
Add ItemДобавление логина / заметки / карты
SearchПоиск по Vault
Password GeneratorСоздание надёжных паролей
SSOЕдиный вход через внешний identity provider
PushМгновенные push-уведомления на мобильных клиентах

К сожалению, в одной статье невозможно описать все возможности этого замечательного приложения, поэтому подробнее обо всех настройках можно почитать в официальной документации Vaultwarden.

Self-Hosting - This article is part of a series.
Part : This Article

Related

OIDC, OAuth2 и Proxy Provider в Authentik: как защитить любое приложение

··1140 слов·6 минут· loading · loading
Подробно объясняем, как Proxy Provider в Authentik добавляет аутентификацию и SSO к любым приложениям. Простая схема потока, ключевые понятия и примеры использования.

Authentik: первая настройка после установки

··1005 слов·5 минут· loading · loading
Подробный обзор первичной настройки Authentik - open source системы для централизованной аутентификации и авторизации (IdP/SSO). Рассмотрим самые первые шаги по настройке Authentik.

Authentik: настройка Reputation Policy

··500 слов·3 минут· loading · loading
Пошаговая настройка Reputation Policy и GeoIP в Authentik для ограничения доступа по IP-репутации и странам, с разбором типовых сценариев защиты.