75. Vaultwarden LXC


Ранее здесь уже была статья, в которой достаточно подробно описан процесс установки одноимённого дополнения в Home Assistant. Сейчас же рассмотрим вынос этого агента в отдельный контейнер.

Изоляция этой службы в отдельном контейнере и вынос её за пределы Home Assistant OS обусловлены аспектами безопасности.

Установка контейнера.

Для установки нового LXC, запустим в консоли проксмокса следующий скрипт:
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/vaultwarden.sh)"

Он создаст непривилегированный контейнер основанный на Debian.
У контейнера 2 режима:
  • Normal Settings: 512мб оперативной памяти,  6Гб жёсткого диска и 1 процессором с одним ядром. 
  • Build Settings: 4ГБ оперативной памяти,  6Гб жёсткого диска и 1 процессором с 4 ядрами.
Во время создания, набор "железа" автоматически выставлен на Build Settings. По окончании вернётся на  Normal Settings.
В процессе установки можно включить рут доступ по SSH.
Веб интерфейс доступен на порту 8000.
Админ панель: 8000/admin.

Подготовительные работы.

Теперь переходим к новому контейнеру и работаем только в нём.
Чтобы узнать айпи и мак адреса нового LXC, выполним
ip a
и сделаем необходимую привязку на DHCP сервере.

Если необходимо удостовериться какой пароль используется для пользователя root, то его можно сбросить командой 
passwd

Чтобы убедиться что временная зона настроена корректно, можно выполнить команду 
timedatectl

Настройка Vaulwarden.

Перейдём непосредственно к настройке.
Залогиниться в веб интерфейс можно только через https. Поэтому тут либо сразу подрубать Cloudflare либо копировать самоподписанный сертификат.

Файлы сертификата необходимо расположить следующим образом:
Сам сертификат cert.pem положить в директорию /etc/ssl/certs/
Ключ сертификата cert-key.pem положить в директорию /etc/ssl/private/

Служба вольтвардена запускается от имени одноимённого пользователя находящегося в одноимённой группе. Дадим ему разрешения на работу с файлами сертификатов:
chmod 755 /etc/ssl
chown vaultwarden:vaultwarden /etc/ssl/private/cert-key.pem
chmod 711 /etc/ssl/private

редактируем файл настроек
nano /opt/vaultwarden/.env

и добавляем в него строку:
ROCKET_TLS={certs="/etc/ssl/certs/cert.pem",key="/etc/ssl/private/cert-key.pem"}

перезапускаем сервис
systemctl restart vaultwarden.service

и проверяем его состояние
systemctl status vaultwarden.service

если всё ок, то вывод будет примерно таким


Заходим браузером по адресу контейнера через https чтобы убедиться что страничка открывается.
Если планируется давать доступ к этому контейнеру извне, например чтобы настроить его клиента на смартфоне, то в строке Domain URL на главном экране админ панели, необходимо указать полный адрес к которому будет обращение. Например: https://mypasswords.mydomain.com

Обновление версии.

Данную процедуру стоит делать когда после проверки в админ панели на странице диагностики стало видно что какой-то из компонентов устарел

в данном случае необходимо обновить только веб сервер

Что нужно сделать?
  1. Ввыключить контейнер.
  2. Перевести в режим Build Settings: 4GB RAM & 4vCPU.
  3. Включить контейнер.
  4. Запустить внутри тот же установочный скрипт: bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/vaultwarden.sh)"
  5. Выбрать режим обновления.
  6. Ждать, ждать, ждать.
  7. Выключить контейнер.
  8. Сменить конфигурацию на Normal Settings: 512Mb RAM - 1vCPU
  9. Включить контейнер.
Так же можно настроить планировщик для обновления вещей имеющих отношение к операционной системе контейнера:
Открываем на редактирование файл планировщика задач с помощью команды crontab -e.
указываем когда и что запускать:
* * * * * apt update -y && apt dist-upgrade -y && apt autoremove -y && apt autoclean -y
Формат записей crontab выглядит следующим образом:
"минуты" "часы" "день месяца" "месяц" "день недели" "команда".
Не рекомендуется проверять и ставить компоненты как во время бэкапа системы, так и во время выключения.
  1. Если в проксмоксе настроены бэкапы на определённый час и занимают Х времени, то лучше не выбирать этот временной промежуток для проверки обновлений контейнера.
  2. Так же, если в проксмоксе настроена автоматическая перезагрузка по определённым дням недели, то логично предположить что именно в это временное окно не стоит планировать обновления.
Поэтому учитывая эти пункты, вместо первой звёздочки указываем минуты, вместо второй - часы, а вместо последней - цифру от 0 до 6.  Это и будут время и день недели, для срабатывания задачи планировщика. Т.е. раз в неделю.

Защита Админ токен.

Запускаем внутри контейнера тот же установочный скрипт: bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/vaultwarden.sh)"
Выбираем соответствующий пункт.
Указываем пароль для доступа к админ панели (должен отличаться от пароля с которым будем заходить в хранилище).
Благодаря чудесам автоматизации и криптографии, пароль для доступа к админ панели теперь зашифрован и хранится в безопасном виде в системе. А чтобы войти в админ панель нужно указать пароль из предыдущего шага.  

Настройка уведомлений по e-mail.

Производится в соответствующем разделе панели управления.

Для отправки почтовых оповещений через Gmail необходимо сделать следующее:
Заходим на главную страницу своего аккаунта, в раздел "Безопасность" -> тыц. И нажимаем на саму строку(не на стрелку справа) "Двухэтапная аутентификация".

В самом низу страницы будет интересующий нас пункт: Пароли приложений.
Нажимаем на стрелку справа и оказываемся там, где надо.


Здесь мы создаём новый уникальный пароль для этого аккаунта, только для входа в почтовый ящик. Можно указать желаемое название и система сама сгенерирует пароль.
Именно этот пароль и нужно будет указать в почтовых настройках вольтварден. Так же рекомендуется его сохранить в сторонке на будущее.

На этом настройка полностью закончена. Теперь можно осуществить

Переезд.

Это максимально простая и скучная часть.
  • В текущем (старом) вольтвардене идём в настройки своего хранилища и делаем экспорт в файл.
  • Выключаем дополнение.
  • Отключаем автозагрузку этого дополнения.
  • В новом вольтвардене в настройках хранилища делаем импорт из файла.
  • Если была настроена переадресация в Cloudflare то редактируем её соответствующим образом.
Осталось добавить новый контейнер в соответствующий набор резервного копирования и начать использовать этот замечательный продукт.

Комментарии