Настройка локального менеджера паролей Vaultwarden

Возврат:: к списку статей мои статьи


Вступление или зачем нам вообще это надо?

Во первых это просто интересно и полезно иметь свои собственные локальные ресурсы. Во вторых (хотя наверное это все таки во первых…) в наше неспокойное время порой лучше иметь такие вещи как пароли под своим полным контролем. Даже если у вас нет своего личного сервера но есть рабочий компьютер возможно есть смысл поднять менеджер паролей на данном компьютере в виртуальной среде.

Какие главные преимущества дает Bitwarden развернутый локально:
1.     Безопасность, вы полностью контролируете свои пароли (но вы же должны заботиться о резервном копировании)
2.     Возможность использовать платные функции которые не доступны на основном Bitwarden
3.     Кроссплатформенность
4.     Динамическая синхронизация между устройствами (если сервер доступен только локально можно выполнять синхронизацию раз в день)
5.     Возможность добавления в менеджер паролей ключи для 2FA, при этом эти ключи будут синхронизированы со всеми вашими устройствами.

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

Что нам понадобиться:
1.     Компьютер с установленным докером (в идеале использовать linux сервер)
2.     Немного времени и умение читать инструкцию (иногда гуглить если что-то не понятно)
3.     Возможность локально управлять dns

Подготовка сервера

Note

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

Выполним первоначальную настройку сервера для установки. Все дальнейшая установка будет выполняться с использованием docker-compose.

Обновляем репозитории и пакеты:

apt update -y && apt upgrade -y

Устанавливаем Docker:

apt install curl && curl -fsSL https://get.docker.com -o get-docker.sh  && sh get-docker.sh

Создаем доменное имя

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

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

Какие варианты получения сертификата у нас есть если мы не хотим или не можем открыть внешний доступ. Можно купить сертификат у нашего dns провайдера или воспользоваться получением сертификатов через службу DNS Challeng из платных хостеров в ру сегменте услугу точно предоставляет reg.ru (более подробно можно посмотреть в настройках nginx далее).

Но что если желания тратить деньги нет вообще? Не беда есть бесплатные альтернативы. Существуют бесплатный dns провайдер duckdns который позволяет зарегистрировать до пяти бесплатных доменов третьего уровня на одну четную запись.

Заходим на https://www.duckdns.org/ и проходим простую регистрацию.

Для дальнейших настроек нам надо получить token с основной страницы

Pasted image 20240620161301.png

Создаем новый домен и указываем в поле адреса локальный ip компьютера на котором устанавливается caddy.

Pasted image 20240620161309.png

Именно адрес test-domen222.duckdns.org и будет тем адресом по которому мы разместим наш ресурс под https.

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

Менеджер паролей Bitwarden не является opensource проектом, но у данного проекта существует полностью совместимая opensource копия серверной части под названием vaultwarden. Более подробно можете изучить в официальном репозитории проекта. Именно процесс развертки серверной части vaultwarden рассмотрим далее.

Установка будет выполняться в виде docker-compose проекта. Для этого необходимо подготовить дополнительные файлы.

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

mkdir /vaultwarden
cd /vaultwarden

Нам необходимо разместить три файла конфигурации.

nano docker-compose.yaml

Файл docker compose:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    env_file:
      - .env
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./vaultwarden/data:/data


  caddy:
    image: serfriz/caddy-duckdns:latest
    container_name: caddy
    restart: unless-stopped
    ports:
      - 443:443
    env_file:
      - .env
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy:/data
    environment:
      - LOG_FILE="/data/access.log"

Для работы прокси сервера Caddy составим Caddyfile

nano Caddyfile

Содержимое файла:

{$DOMAIN} {
	log {
		level INFO
		output file {$LOG_FILE} {
			roll_size 10MB
			roll_keep 10
		}
	}
	tls {
		dns duckdns {$DUCKDNS_TOKEN}
	}
	reverse_proxy vaultwarden:80 {
		header_up X-Real-IP {remote_host}
	}
}

Созданные файлы являются постоянными и изменения не требуют, все параметры устанавливаются в файле .env

Создадим файл параметров:

nano .env

Следующего содержимого:

DUCKDNS_TOKEN=<token>
DOMAIN=https://<domein>.duckdns.org

Указываем данные полученные на сайте duckdns и приступаем к запуску.

Запускаем сборку и установку контейнера

docker-compose up -d
Danger

При запуске caddy может перезаписать ip адрес в duckdns проверяем что там указан локальный ip на котором мы запускали установку.

Фактически на данном этапе установка менеджера паролей закончена и интерфейс доступен по адресу

https://domein.duckdns.org/#/login

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

https://domein.duckdns.org/admin

Pasted image 20240620161145.png

Pasted image 20240620161152.png

Для использования как менеджер паролей необходимо создать пользователя на странице https://domein.duckdns.org/#/login

Pasted image 20240620161201.png
Создаем нового пользователя

Настройка локального менеджера паролей Vaultwarden.png

Настройка клиентов Bitwarden

Для использования можем установить расширение основного Bitwarden и изменить в нем сервер который хотим использовать.

Pasted image 20240620160602.png

Pasted image 20240620160551.png

Аналогичные настройки по указанию собственного хостинга есть в мобильном и десктоп (не рекомендую) клиенте.