Vaultwarden (ранее известный как bitwarden_rs) предоставляет облегченную API-совместимую альтернативу Bitwarden.
Vaultwarden - это приложение для управления паролями с открытым исходным кодом, которое можно размещать самостоятельно и запускать в собственной инфраструктуре.
Запустив службу vaultwarden, можно использовать расширения браузера Bitwarden и мобильные приложения, поддерживаемые сервером.
Требования для установки Vaultwarden:
- Хост-компьютер, виртуальная машина, VDS/VPS хостинг
- Установленный Docker
- Домен, субдомен для получения сертификата SSL
- SSL сертификат, например Let's Encrypt
- Учетная запись SMTP, для отправки электронных писем после создания учетных записей
Устанавливаем необходимые программы
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release argon2
Добавляем ключ GPG для Docker.
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Добавляем репозиторий Docker.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновляем пакеты и устанавливаем Docker.
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Настройки системы
Добавим пользователя в группу docker.
sudo usermod -aG docker ${USER}
Установка Vaultwarden
В папке opt создаем директорию vaultwarden.
sudo mkdir /opt/vaultwarden
cd /opt/vaultwarden
Меняем права для созданной директории.
sudo chown -R drhellp:drhellp /opt/vaultwarden
Настройка переменных
Настроить конфигурацию Vaultwarden можно несколькими способами:
- через переменные среды в файле .env
- через переменные в файле compose.yml, в секции environment
- через Admin панель, но для этого необходимо создать ADMIN_TOKEN
Переменные среды из файла .env необходимо передавать в файл compose.yml. Но все настройки созданные в Admin панели имеют приоритет и переписывают настройки созданные другими способами, поэтому в файле .env можно создать только ADMIN_TOKEN для запуска Admin панели и несколько критичных параметров.
Для обеспечения безопасности сервера создадим зашифрованный пароль с использованием argon2. Пример из документации:
# Using the Bitwarden defaults
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
# Output: $argon2id$v=19$m=65540,t=3,p=4$bXBGMENBZUVzT3VUSFErTzQzK25Jck1BN2Z0amFuWjdSdVlIQVZqYzAzYz0$T9m73OdD2mz9+aJKLuOAdbvoARdaKxtOZ+jZcSL9/N0
# Using the OWASP minimum recommended settings
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1
# Output: $argon2id$v=19$m=19456,t=2,p=1$cXpKdUxHSWhlaUs1QVVsSStkbTRPQVFPSmdpamFCMHdvYjVkWTVKaDdpYz0$E1UgBKjUCD2Roy0jdHAJvXihugpG+N9WcAaR8P6Qn/8
Для использования полученного значения в файле compose.yml необходимо заменить значение $ двумя $. Можно расширить предыдущую команду:
| sed 's#\$#\$\$#g'
.
Важные параметры
Некоторые параметры системы лучше определить сразу до запуска сервера. Список и описание параметров сервера смотрим в документации.
DOMAIN: https://vaultwarden.loc.ru
LOGIN_RATELIMIT_SECONDS: 60
LOGIN_RATELIMIT_MAX_BURST: 10
ADMIN_RATELIMIT_SECONDS: 60
ADMIN_RATELIMIT_MAX_BURST: 10
ADMIN_SESSION_LIFETIME: 20
ADMIN_TOKEN: зашифрованный пароль
SENDS_ALLOWED: false
EMERGENCY_ACCESS_ALLOWED: true
WEB_VAULT_ENABLED: true
LOG_FILE: /data/vaultwarden.log
ORG_GROUPS_ENABLED: true
ORG_CREATION_USERS: drhellp@loc.ru,drhellp@loc.com
ORG_EVENTS_ENABLED: true
TZ: "Europe/Moscow"
- DOMAIN
Домен должен совпадать с адресом, откуда вы заходите на сервер. Рекомендуется настроить это значение, иначе некоторые функции могут не работать. Например загрузка вложений, ссылки по электронной почте и U2F. Чтобы U2F работал, сервер должен использовать HTTPS, вы можете использовать Let's Encrypt для получения бесплатных сертификатов.
Let's Encrypt имеет ограничение на количество дубликатов сертификатов - ПЯТЬ запросов в неделю для бесплатных сертификатов для одного домена. Ссылка на документацию.
Использовать самоподписанный SSL сертификат возможно, но клиент Bitwarden для Windows не работает с таким сервером, выдает ошибку.
- LOGIN_RATELIMIT_SECONDS
Среднее количество секунд между запросами на вход с одного и того же IP-адреса до того, как сработает ограничение скорости.
- LOGIN_RATELIMIT_MAX_BURST
Разрешить пакет запросов до этого размера, сохраняя при этом среднее значение, указанное в LOGIN_RATELIMIT_SECONDS. Обратите внимание, что это относится как к входу в систему, так и к 2FA, поэтому рекомендуется разрешить размер пакета не менее 2.
- ADMIN_RATELIMIT_SECONDS
Это то же самое, что LOGIN_RATELIMIT_SECONDS, только для Admin панели.
- ADMIN_RATELIMIT_MAX_BURST
Это то же самое, что LOGIN_RATELIMIT_MAX_BURST, только для Admin панели.
- ADMIN_SESSION_LIFETIME
Установите это значение для продолжительности сеансов администратора (в минутах).
- ADMIN_TOKEN
Токен (зашифрованный пароль) для интерфейса администратора, предпочтительно строка PCH Argon2. Панель администратора отключена, если это значение не установлено.
- SENDS_ALLOWED
Определяет, разрешено ли пользователям создавать отправки. Этот параметр применяется глобально ко всем пользователям. Чтобы контролировать это отдельно для каждой организации, используйте политику организации «Отключить отправку».
- EMERGENCY_ACCESS_ALLOWED
Определяет, могут ли пользователи включать экстренный доступ к своим учетным записям. Этот параметр применяется глобально ко всем пользователям.
- WEB_VAULT_ENABLED
Этот параметр определяет, доступно ли веб-хранилище. Остановка вашего контейнера, затем переключение этого значения на false и перезапуск Vaultwarden может оказаться полезным, если вы настроили свои учетные записи и клиенты для предотвращения несанкционированного доступа.
- LOG_FILE
Путь к файлу журнала.
- ORG_GROUPS_ENABLED
БЕТА-ФУНКЦИЯ. Определяет, включена ли поддержка групп для организаций. Этот параметр применяется к организациям. По умолчанию отключено, поскольку это бета-функция и содержит проблемы!
- ORG_CREATION_USERS
Определяет, какие пользователи могут создавать новые организации. Пусто или "все" означает, что все пользователи могут создавать организации (это значение по умолчанию). 'none' означает, что ни один пользователь не может создавать организации. Список, разделенный запятыми, означает, что только эти пользователи могут создавать организации.
- ORG_EVENTS_ENABLED
Определяет, включено ли ведение журнала событий для организаций. Этот параметр применяется к организациям. По умолчанию отключено.
- TZ
Настройка часового пояса.
Настройки, используемые для управления регистрацией учетных записей в Vaultwarden.
SIGNUPS_ALLOWED: false
SIGNUPS_VERIFY: true
SIGNUPS_VERIFY_RESEND_TIME: 3600
SIGNUPS_VERIFY_RESEND_LIMIT: 5
SIGNUPS_DOMAINS_WHITELIST: loc.ru,gmail.com
- SIGNUPS_ALLOWED
Этот параметр определяет, могут ли новые пользователи регистрировать учетные записи без приглашения.
- SIGNUPS_VERIFY
Определяет, необходимо ли новым пользователям подтверждать свой адрес электронной почты при регистрации. Обратите внимание, что установка для этой опции значения true предотвращает вход в систему до тех пор, пока адрес электронной почты не будет подтвержден! Приветственное письмо будет содержать ссылку для подтверждения, и попытки входа будут периодически запускать отправку еще одного письма с подтверждением.
- SIGNUPS_VERIFY_RESEND_TIME
Если для SIGNUPS_VERIFY установлено значение true, это значение указывает, сколько секунд пользователь должен подождать, прежде чем можно будет отправить еще одно письмо с подтверждением.
- SIGNUPS_VERIFY_RESEND_LIMIT
Если для SIGNUPS_VERIFY установлено значение true, это значение определяет максимальное количество повторных отправлений подтверждения по электронной почте.
- SIGNUPS_DOMAINS_WHITELIST
Этот параметр представляет собой список доменов, разделенных запятыми, которые могут регистрироваться для учетных записей Vaultwarden, даже если для параметра SIGNUPS_ALLOWED установлено значение false. Это полезно, когда ваши учетные записи Vaultwarden должны использоваться именно адресами электронной почты, домены которых вы контролируете.
Настройки учетной записи электронной почты SMTP, чтобы Vaultwarden отправлял электронные письма.
SMTP_HOST: smtp.mail.com
SMTP_FROM: mail@mail.com
SMTP_FROM_NAME: Vaultwarden
SMTP_SECURITY: starttls
SMTP_PORT: 587
SMTP_USERNAME: mail@mail.com
SMTP_PASSWORD: mail_password
- SMTP_HOST
Почтовый SMTP сервер.
- SMTP_FROM
Адрес электронной почты, с которого будут отправляться сообщения.
- SMTP_FROM_NAME
Имя, которое вы хотите отображать в качестве имени учетной записи электронной почты в отправленных сообщениях.
- SMTP_SECURITY
Метод безопасности, используемый вашим SMTP сервером. Возможные значения: starttls, force_tls, off.
- SMTP_PORT
Порт SMTP, используемый почтовым сервером. Возможные значения: 587/465.
- SMTP_USERNAME
Логин для почтового SMTP сервера.
- SMTP_ПАРОЛЬ
Пароль для учетных данных SMTP.
Подготовка конфигурационных файлов
Создаем файл compose.yml и добавляем в него следующие строки:
services:
vaultwarden:
image: vaultwarden/server:1.30.5
container_name: vaultwarden
restart: always
environment:
#
- DOMAIN=${DOMAIN}
- LOGIN_RATELIMIT_SECONDS=${LOGIN_RATELIMIT_SECONDS}
- LOGIN_RATELIMIT_MAX_BURST=${LOGIN_RATELIMIT_MAX_BURST}
- ADMIN_RATELIMIT_SECONDS=${ADMIN_RATELIMIT_SECONDS}
- ADMIN_RATELIMIT_MAX_BURST=${ADMIN_RATELIMIT_MAX_BURST}
- ADMIN_SESSION_LIFETIME=${ADMIN_SESSION_LIFETIME}
- ADMIN_TOKEN=${ADMIN_TOKEN}
- SENDS_ALLOWED=${SENDS_ALLOWED}
- EMERGENCY_ACCESS_ALLOWED=${EMERGENCY_ACCESS_ALLOWED}
- WEB_VAULT_ENABLED=${WEB_VAULT_ENABLED}
- LOG_FILE=${LOG_FILE}
- ORG_GROUPS_ENABLED=${ORG_GROUPS_ENABLED}
- ORG_CREATION_USERS=${ORG_CREATION_USERS}
- ORG_EVENTS_ENABLED=${ORG_EVENTS_ENABLED}
- TZ=${TZ}
#
- SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED}
- SIGNUPS_VERIFY=${SIGNUPS_VERIFY}
- SIGNUPS_VERIFY_RESEND_TIME=${SIGNUPS_VERIFY_RESEND_TIME}
- SIGNUPS_VERIFY_RESEND_LIMIT=${SIGNUPS_VERIFY_RESEND_LIMIT}
- SIGNUPS_DOMAINS_WHITELIST=${SIGNUPS_DOMAINS_WHITELIST}
#
- SMTP_HOST=${SMTP_HOST}
- SMTP_FROM=${SMTP_FROM}
- SMTP_FROM_NAME=${SMTP_FROM_NAME}
- SMTP_SECURITY=${SMTP_SECURITY}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
volumes:
- ./vw-data:/data
ports:
- 8080:80
В файл .env прописываем нужные переменные и их значения:
DOMAIN: https://vaultwarden.loc.ru
LOGIN_RATELIMIT_SECONDS: 60
LOGIN_RATELIMIT_MAX_BURST: 10
ADMIN_RATELIMIT_SECONDS: 60
ADMIN_RATELIMIT_MAX_BURST: 10
ADMIN_SESSION_LIFETIME: 20
ADMIN_TOKEN: 'зашифрованный пароль'
SENDS_ALLOWED: false
EMERGENCY_ACCESS_ALLOWED: true
WEB_VAULT_ENABLED: true
LOG_FILE: /data/vaultwarden.log
ORG_GROUPS_ENABLED: false
ORG_CREATION_USERS: none
ORG_EVENTS_ENABLED: true
TZ: "Europe/Moscow"
SIGNUPS_ALLOWED: false
SIGNUPS_VERIFY: true
SIGNUPS_VERIFY_RESEND_TIME: 3600
SIGNUPS_VERIFY_RESEND_LIMIT: 5
SIGNUPS_DOMAINS_WHITELIST: loc.ru
SMTP_HOST: smtp.gmail.com
SMTP_FROM: drhellp@gmail.com
SMTP_FROM_NAME: drhellp
SMTP_SECURITY: force_tls
SMTP_PORT: 465
SMTP_USERNAME: drhellp@gmail.com
SMTP_PASSWORD: Password
Отключение страницы администратора
Для отключения Admin панели можно поставить знак комментария # перед ADMIN_TOKEN в файле .env и перезапустить сервер.
Удаление переменной среды
ADMIN_TOKEN
не приведет к отключению страницы администратора, если значение сохраняется вconfig.json
файле. Чтобы отключить страницу администратора , следует убедиться, что переменная средыADMIN_TOKEN
не установлена и не существует ключа"admin_token"
вconfig.json
, если этот файл существует.
Использование gmail.com
Для использования gmail.com аккаунта в качестве сервера smtp, необходимо создать пароль приложения и выполнить следующие настройки:
SMTP_HOST: smtp.gmail.com
SMTP_FROM: account@gmail.com
SMTP_FROM_NAME: account
SMTP_SECURITY: force_tls
SMTP_PORT: 465
SMTP_USERNAME: account@gmail.com
SMTP_PASSWORD: APP_PASSWORD_YOU_GENERATED
Добавляем пользователя
Запускаем docker контейнер и настраиваем SSL доступ через Nginx или другой прокси.
Переходим по адресу https://vaultwarden.loc.ru/admin и вводим пароль, который шифровали. Переходим в меню Users и отправляем Invite на почту пользователю.
Проверяем почту и присоединяемся к организации. Создаем аккаунт и заходим в систему.
После создания пользователей не забываем отключить панель администратора.
Устанавливаем и настраиваем расширение для браузера или клиент для мобильного или приложение Bitwarden.