shbdk.ru
Шалин Александр

Установка менеджера паролей Vaultwarden

Vaultwarden.jpg
Опубликовано
//
5 мин. чтения
  • 2 GB RAM
  • 2 vCPU
  • Ubuntu 22.04

1. Установка Docker

Обновляем пакеты

apt update && apt upgrade -y

Устанавливаем docker

bash <(curl -sSL https://get.docker.com)

Добавляем текущего пользователя в группу docker

sudo usermod -aG docker ${USER}

После выполнения команды выйдите из системы и войдите снова, чтобы изменения вступили в силу. Или используйте команду:

newgrp docker

2. Устанавливаем argon2

Для доступа в панель администратора Vaultwarden генерируются уникальный ключ, который в открытом виде храниться в файлах настроек сервера менеджера паролей. Данный ключ не дает доступа к данным конечных пользователей, но он позволяет нанести значительный вред системе вплоть до полной поломки. Разработчики Vaultwarden рекомендуют использовать программу argon2. Установим ее:

 apt install argon2

3. Установка и настройка менеджера паролей Vaultwarden

Создаем основную рабочую папку где будут располагаться файлы, в том числе зашифрованные базы данных. Для бекапа данных достаточно скопировать файлы данной директории и поместить в новый проект.

mkdir vaultwarden && cd vaultwarden

При первоначальной установке с базовыми настройками  vaultwarden генерирую пароль для панели администратора в виде большого ключа символов который храниться в открытом виде в файле конфигурации сервера. Для обеспечения безопасности сервера необходимо устанавливать сервер с заранее созданным паролем администратора. Более подробно можно почитать в официальной справке

3.1 Получение SSL-сертификата

mkdir -p ~/vaultwarden/nginx/ssl
cd ~/vaultwarden

Для SSL нам понадобятся сертификаты. Вы можете:

  1. Использовать самоподписанный сертификат (для тестирования)
  2. Использовать Let's Encrypt (рекомендуется для продакшена)

Опция 1: Создание самоподписанного сертификата

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/vaultwarden/nginx/ssl/privkey.pem -out ~/vaultwarden/nginx/ssl/fullchain.pem

Опция 2: Использование Let's Encrypt (требуется домен)

sudo apt install -y certbot
sudo certbot certonly --standalone -d your-domain.com

# Копируем сертификаты в директорию проекта
sudo cp /etc/letsencrypt/live/your-domain.com/fullchain.pem ~/vaultwarden/nginx/ssl/
sudo cp /etc/letsencrypt/live/your-domain.com/privkey.pem ~/vaultwarden/nginx/ssl/
sudo chmod 755 ~/vaultwarden/nginx/ssl

3.2: Создание конфигурационного файла для Nginx

mkdir -p ~/vaultwarden/nginx/conf
nano ~/vaultwarden/nginx/conf/default.conf

Вставьте следующую конфигурацию:

server {
    listen 80;
    server_name _;

    # Перенаправление HTTP на HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name _;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    client_max_body_size 100M;

    location / {
        proxy_pass http://vaultwarden;
        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;
    }
}

3.3 Создадим зашифрованный пароль с использованием argon2

echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1

WARNING

Не используйте символ $ в пароле, в этом случае экранирование будет работать не корректно и вы не сможете войти в админ панель.

Результат вывода будет шифрованное представление пароля вида:

$argon2id$v=19$m=19456,t=2,p=1$YnV6N0lrZHZoOWpGdS9rcmdIWHR5RW1zQjJtVU4xdHhHNis2STVQN25uTT0$wEoFtCRQBcbayI6z+tVFZwV1mT2pXOLicEJdXq4st2w

Копируем полученный результат в файл параметров запуска vaultwarden

nano .env

Вставляем полученный ключ в файл с указанием параметра, не каких изменений в строку вносить не надо. Обязательно используйте свой пароль и свой результат шифрования для обеспечения безопасности!!!!

VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=19456,t=2,p=1$YnV6N0lrZHZoOWpGdS9rcmdIWHR5RW1zQjJtVU4xdHhHNis2STVQN25uTT0$wEoFtCRQBcbayI6z+tVFZwV1mT2pXOLicEJdXq4st2w'

Сохраняем файл.

3.4 Создаем файл docker-compose

Создаем файл docker-compose

nano docker-compose.yaml

docker-compose.yaml

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      - TZ=Asia/Novosibirsk
      # - SIGNUPS_ALLOWED=false # Убрать комментарий после создания первого аккаунта
      - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
      - PUSH_ENABLED=true
      - PUSH_INSTALLATION_ID= # Получается в шаге 3.4
      - PUSH_INSTALLATION_KEY= # Получается в шаге 3.4
      - PUSH_RELAY_URI=https://api.bitwarden.eu
      - PUSH_IDENTITY_URI=https://identity.bitwarden.eu
      - INVITATIONS_ALLOWED=true
      - DOMAIN=https://your-domain.com # Указать ваш домен
    volumes:
      - ./data:/data
    networks:
      - vw-network
  nginx:
    image: nginx:latest
    container_name: vaultwarden-nginx
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - ./nginx/conf:/etc/nginx/conf.d
      - ./nginx/ssl:/etc/nginx/ssl
    environment:
      - TZ=Asia/Novosibirsk
    depends_on:
      - vaultwarden
    restart: always
    networks:
      - vw-network
networks:
  vw-network:
    driver: bridge

В папке /vaultwarden будут размещены основные файлы сервера vaultwarden в том числе зашифрованные базы данных паролей.

3.5 Включение push-уведомлений мобильного клиента Vaultwarden

  1. Перейдите по ссылке https://bitwarden.com/host/ введите свой адрес электронной почты, и вы получите идентификатор УСТАНОВКИ и КЛЮЧ.
  2. Добавьте следующие настройки в свой docker-compose.yml (и убедитесь, что вы ввели правильный идентификатор и ключ из предыдущего шага):
environment:
  - PUSH_ENABLED=true
  - PUSH_INSTALLATION_ID=
  - PUSH_INSTALLATION_KEY=

Если вы запросили идентификатор УСТАНОВКИ и КЛЮЧ для bitwarden.eu (European Union) на предыдущем шаге, вам также необходимо установить

- PUSH_RELAY_URI=https://api.bitwarden.eu
- PUSH_IDENTITY_URI=https://identity.bitwarden.eu

3.6 Запускаем контейнер

Теперь, мы можем запустить контейнер Vaultwarden с помощью следующей команды в терминале.

docker compose up -d

3.7 Проверка работоспособности

После запуска контейнера проверьте его состояние:

bash

# Проверить статус контейнеров
docker compose ps

# Посмотреть логи Vaultwarden
docker compose logs vaultwarden

# Посмотреть логи Nginx
docker compose logs vaultwarden-nginx

3.8 Создание учетной записи

После запуска контейнера, открываем Web интерфейс по адресу https://<DOMAINNAME>/#/login При первом доступе к Vaultwarden вам необходимо создать собственную учетную запись. Чтобы начать этот процесс, нажмите на ссылку Создать аккаунт.

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

Убедитесь, что вы используете безопасный пароль, так как именно там вы будете хранить пароли для всех ваших других учетных записей. Не используйте пароль, который вы использовали ранее.

Создав учетную запись, вы можете войти в систему и начать использовать Vaultwarden.

3.9 Доступ в админ панель

Для доступа в админ панель перейдите на https://<DOMAINNAME>/admin

Для входа используем пароль который указывали в команде шифрования пароля: MySecretPassword