Vaultwarden — это неофициальный порт Bitwarden, написанный на языке Rust. Он совместим с официальными клиентами Bitwarden и менее ресурсоемкий, чем Bitwarden. В нем реализованы почти все функции Bitwarden. Он использует API Bitwarden для предоставления таких функций, как поддержка организации, вложения, аутентификатор, поддержка U2F, Yubikey, Duo и поддержка служб псевдонимов электронной почты.

Необходимые условия

  • Сервер под управлением Ubuntu 22.04.
  • Пользователь без привилегий root, с привилегиями sudo.
  • Брандмауэр (UFW) включен и работает.
  • Полное доменное имя (FQDN), указывающее на сервер, например . vaultwarden.example.com
  • Все обновить!
sudo apt update && sudo apt upgrade

Шаг 1 — Настройте брандмауэр

Перед установкой каких-либо пакетов первым шагом является настройка брандмауэра для разрешения соединений HTTP и HTTPS.

Проверьте состояние брандмауэра.

sudo ufw status

Вы должны увидеть что-то вроде следующего:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Разрешить порты HTTP и HTTPs:

sudo ufw allow http
sudo ufw allow https

Проверьте статус еще раз для подтверждения:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Шаг 2 — Установите Docker и Docker Compose

Добавьте официальный GPG-ключ Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

Выполните следующую команду, чтобы добавить репозиторий Docker:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Обновите систему:

sudo apt update

Установите Docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Docker работает с повышенными привилегиями, поэтому вам нужно будет часто использовать его для выполнения команд. Лучшим вариантом будет добавить свою учетную запись пользователя Linux в группу пользователей sudodocker.

sudo usermod -aG docker ${USER}

Переменная выбирает системную учетную запись, в которую в данный момент выполнен вход. Если вы не вошли в систему с пользователем, которому хотите предоставить привилегии, замените его именем пользователя. ${USER}${USER}

Чтобы подать заявку на новое членство в группе, выйдите из сервера и снова войдите в систему или используйте следующую команду. Вам будет предложено ввести пароль пользователя.

su - ${USER}

Шаг 3 — Создайте файл Docker Compose для Vaultwarden

Создайте новый каталог для Vaultwarden.

mkdir vaultwarden

Переключитесь на каталог.

cd vaultwarden

Создайте файл Docker compose и откройте его для редактирования.

nano docker-compose.yml

Вставьте в него следующий код. Замените переменные DOMAIN и EMAIL соответствующими значениями:

version: '3'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      WEBSOCKET_ENABLED: "true"  # Enable WebSocket notifications.
      DOMAIN: "https://vaultwarden.example.com"
      SMTP_HOST: "<smtp.domain.tld>"
      SMTP_FROM: "<vaultwarden@domain.tld>"
      SMTP_PORT: "587"
      SMTP_SECURITY: "starttls"
      SMTP_USERNAME: "<username>"
      SMTP_PASSWORD: "<password>"
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2
    container_name: caddy
    restart: always
    ports:
      - 80:80  # Needed for the ACME HTTP-01 challenge.
      - 443:443
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-config:/config
      - ./caddy-data:/data
    environment:
      DOMAIN: "https://vaultwarden.example.com"  # Your domain.
      EMAIL: "admin@example.com"                 # The email address to use for ACME registration.
      LOG_FILE: "/data/access.log"

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Мы настраиваем Vaultwarden и веб-сервер Caddy в одном файле Docker compose. Давайте посмотрим на все опции, определенные в файле.

  • image относится к расположению образов Docker Vaultwarden и Caddy на Dockerhub.
  • container_name позволяет применить метку к контейнеру Docker для использования при ссылке на контейнер в сети Docker.
  • restart задает политику перезапуска для контейнера. Установка его в always означает, что контейнер при выходе будет автоматически перезапущен.
  • environment задает переменные, необходимые Vaultwarden и Caddy. Если SMTP-порт службы — 587, задайте значение переменной, а если SMTP-порт службы — 465, задайте значение переменной . Переменная домена необходима для работы проверки электронной почты. Мы включили веб-сокеты для работы уведомлений. SMTP_SECURITYstarttlsSMTP_SECURITYforce_tls
  • Volume определяет каталоги, присутствующие на сервере для хранения постоянных данных. Каталог на сервере сопоставляется с каталогом в контейнере, в котором хранятся все данные, необходимые Vaultwarden. Таким же образом расположение файла Caddy, конфигурация Caddy и данные caddy сопоставляются с соответствующими каталогами в контейнере. Docker автоматически создаст соответствующие каталоги на сервере, настроенном в разделе Volume. /vw-data/data
  • Порты сообщают контейнеру о том, что порты или диапазон портов должны быть опубликованы на хосте.

Шаг 4 — Дополнительная конфигурация Vaultwarden

Отключение регистрации

Если вы не хотите, чтобы ваша установка Vaultwarden была открыта для регистрации пользователей, вы можете отключить ее, добавив следующую переменную в раздел файла Docker compose. environment

environment:
     WEBSOCKET_ENABLED: "true"  # Enable WebSocket notifications.
	 SIGNUPS_ALLOWED: "false"
	 ....

Отключение приглашений

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

INVITATIONS_ALLOWED: "false"

Отключить подсказки паролей

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

SHOW_PASSWORD_HINT: "false"

Отключение панели администратора

Vaultwarden размещает статические файлы для своего веб-интерфейса. Вы можете отключить это, установив следующую переменную в false.

WEB_VAULT_ENABLED: "false"

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

volumes:
      - ./vw-data:/data
	  - /path/to/static/files_directory:/web-vault

Журнал Vaultwarden

Vaultwarden регистрирует только стандартные выходные данные. Вы можете настроить его для записи в файл.

LOG_FILE: "/data/vaultwarden.log"

Чтобы уменьшить количество сообщений журнала, можно установить уровень журнала, а также задать переменную как true. warnEXTENDED_LOGGING

LOG_LEVEL: "warn"
EXTENDED_LOGGING: "true"

Шаг 5 — Создайте файл Caddy для Vaultwarden

Теперь, когда мы настроили Vaultwarden, давайте создадим caddy файл для Vaultwarden и откроем его для редактирования.

nano Caddyfile

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

{$DOMAIN}:443 {
  log {
    level INFO
    output file {$LOG_FILE} {
      roll_size 10MB
      roll_keep 10
    }
  }

  # Use the ACME HTTP-01 challenge to get a cert for the configured domain.
  tls {$EMAIL}

  # This setting may have compatibility issues with some browsers
  # (e.g., attachment downloading on Firefox). Try disabling this
  # if you encounter issues.
  encode gzip

  # The file size is set to 500MB to support the Vaultwarden (Bitwarden) Send feature.
  request_body {
       max_size 500MB
  }
  
  header {
       # Enable cross-site filter (XSS) and tell browser to block detected attacks
       X-XSS-Protection "1; mode=block"
       # Disallow the site to be rendered within a frame (clickjacking protection)
       X-Frame-Options "DENY"
       # Prevent search engines from indexing (optional)
       X-Robots-Tag "none"
       # Server name removing
       -Server
  }

  # Notifications redirected to the WebSocket server
  reverse_proxy /notifications/hub vaultwarden:3012

  # Proxy everything else to Rocket
  reverse_proxy vaultwarden:80 {
       # Send the true remote IP to Rocket, so that vaultwarden can put this in the
       # log, so that fail2ban can ban the correct IP.
       header_up X-Real-IP {remote_host}
  }
}

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Шаг 6 — Запустите Vaultwarden

Запустите контейнер Docker Vaultwarden.

docker compose up -d

Проверить состояние контейнера можно с помощью следующей команды.

docker ps

Вы получите аналогичный результат.

CONTAINER ID   IMAGE                       COMMAND                  CREATED              STATUS                        PORTS                                                                                NAMES
4ad23954f1d5   caddy:2                     "caddy run --config …"   About a minute ago   Up About a minute             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 2019/tcp   caddy
d55a037850bc   vaultwarden/server:latest   "/usr/bin/dumb-init …"   About a minute ago   Up About a minute (healthy)   80/tcp, 3012/tcp                                                                     vaultwarden

Шаг 7 — Используйте Vaultwarden с клиентами Bitwarden

Откройте URL-адрес в браузере https://vaultwarden.example.com

Первым делом необходимо создать учетную запись. Нажмите кнопку «Создать учетную запись», чтобы продолжить.

Страница создания учетной записи Vaultwarden

Введите данные своей учетной записи и нажмите кнопку «Отправить», чтобы продолжить. Вы будете перенаправлены на страницу входа. Введите данные своей учетной записи, чтобы войти в систему.

Панель управления Vaultwarden

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

Вы получите следующее письмо. Перейдите по ссылке, чтобы подтвердить свой адрес электронной почты.

Письмо для подтверждения Vaultwarden

Теперь, когда у нас есть готовая учетная запись Vaultwarden, пришло время использовать ее с клиентом Bitwarden. В нашем уроке мы используем расширение Chrome. Установите его, скопировав с веб-сайта Bitwarden.

Нажмите на значок расширения, чтобы открыть экран входа в Vaultwarden.

Страница входа в расширение Bitwarden Chrome

Нажмите на значок шестеренки в левом верхнем углу всплывающего окна, чтобы перейти на страницу дополнительных настроек. Заполните в качестве URL-адреса сервера. https://vaultwarden.example.com

Экран настроек входа в Bitwarden

Нажмите кнопку Сохранить, чтобы применить настройку. Войдите в систему, используя свои учетные данные Vaultwarden, чтобы войти в приложение.

Страница входа в Bitwarden

После входа в систему вы попадете на страницу приложения и сможете начать использовать Bitwarden.

Экран приложения Bitwarden

Шаг 8 — Резервное копирование Vaultwarde

Vaultwarden хранит свои данные в базе данных SQLite. Один из способов — просто скопировать файл из папки. Но это не рекомендуемое решение, так как база данных не будет находиться в согласованном состоянии из-за запущенного Vaultwarden. Для надежного резервного копирования мы будем использовать команду резервного копирования SQLite. .sqlite3/vw-data

Установите пакет sqlite3

sudo apt install sqlite3

Создайте каталог для резервных копий.

mkdir ~/vw-backups

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

chmod go-rwx ~/vw-backups

Создайте служебный файл резервного копирования Vaultwarden и откройте его для редактирования.

sudo nano /etc/systemd/system/vaultwarden-backup.service

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

[Unit]
Description=backup the vaultwarden sqlite database

[Service]
Type=oneshot
WorkingDirectory=/home/<username>/vw-backups
ExecStart=/usr/bin/env bash -c 'sqlite3 /home/<username>/vaultwarden/vw-data/db.sqlite3 ".backup backup-$(date -Is | tr : _).sqlite3"'
ExecStart=/usr/bin/find . -type f -mtime +30 -name 'backup*' -delete

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Запустите службу, чтобы протестировать ее и сделать резервную копию.

sudo systemctl start vaultwarden-backup.service

Проверьте, есть ли файл резервной копии.

ls -l ~/vw-backups

Вы должны увидеть листинг файла резервной копии:

total 192
-rw-r--r-- 1 root root 196608 Jul 31 17:25 backup-2022-07-31T17_25_04+00_00.sqlite3

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

sudo nano /etc/systemd/system/vaultwarden-backup.timer

Вставьте в него следующий код.

[Unit]
Description=schedule vaultwarden backups

[Timer]
OnCalendar=04:00
Persistent=true

[Install]
WantedBy=multi-user.target

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Это запланироват резервное копирование на 4 часа утра ежедневно.

Запустите и включите службу единиц измерения таймера.

sudo systemctl enable vaultwarden-backup.timer
sudo systemctl start vaultwarden-backup.timer

Проверьте состояние службы таймера.

systemctl status vaultwarden-backup.timer
? vaultwarden-backup.timer - schedule vaultwarden backups
     Loaded: loaded (/etc/systemd/system/vaultwarden-backup.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Sun 2022-07-31 17:27:03 UTC; 7s ago
    Trigger: Mon 2022-08-01 04:00:00 UTC; 10h left
   Triggers: ? vaultwarden-backup.service

Jul 31 17:27:03 vaultwarden systemd[1]: Started schedule vaultwarden backups.

Это просто создает резервную копию данных. Необходимо обеспечить регулярное резервное копирование файла базы данных за пределами офиса или в локальную систему. Чтобы создать резервную копию оставшихся данных, вы можете сделать это, скопировав все в папку. Из остальных вещей необходимо создать резервную копию каталога, файла и файлов. Каталоги и the являются необязательными и должны быть зарезервированы, если они достаточно велики и вам нужны. Они строго необязательны. ~/vaultwarden/vw-dataattachmentsconfig.jsonrsa_key*sendsicon_cache

Шаг 9 — Восстановите Vaultwarden

Чтобы восстановить данные Vaultwarden, убедитесь, что контейнер остановлен. Вы можете заменить все, что находится в каталоге data, на его резервную версию. При восстановлении резервной копии SQLite обязательно удалите существующий файл, чтобы избежать его повреждения. db.sqlite3-wal

Шаг 10 — Обновите Vaultwarden

Улучшение Vaultwarden — это простой шаг. Переключитесь в каталог Docker compose Vaultwarden.

cd ~/vaultwarden

Далее остановите и удалите существующий контейнер. Тем не менее, ваши данные будут сохранены.

docker compose down --remove-orphans

Извлеките последнюю версию docker-образа Gitlab.

docker compose pull

Снова запустите контейнеры.

docker compose up -d

Ваша установка Vaultwarden будет обновлена и запущена заново.

Заключение

На этом мы завершаем наше руководство по установке и настройке Vaultwarden на сервере Ubuntu 22.04. Если у вас остались вопросы, задавайте их в комментариях ниже.

Visited 224 times, 1 visit(s) today
Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Mr.Strange
Mr.Strange
6 месяцев назад

Спасибо за инструкцию, все с первого раза получилось, установил и настроил в виртуалке.