Проблема
Нужно установить Bitwarden Server для работой с организацией. Также не забываем о Docker.
Решение
Для запуска и установки в личных целях, достаточно воспользоваться официальной инструкцией по ссылке https://help.bitwarden.com/article/install-on-premise/.
Не забываем установить Docker и Docker-compose:
1 2 3 4 | curl -sSL https://get.docker.com/ | sh sudo usermod -aG docker ${USER} sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose |
Возможно код sudo usermod -aG docker ${USER} не заработает, замените ${USER} на имя группы своего пользователя.
Для работы с организацией есть два варианта:
- Купить лицензию
- Изменить ядро лицензирования сервера
Купить всегда успеем, а в качестве образовательной цели — выберем второй вариант 🙂
Изучаем информацию:
- https://github.com/jakeswenson/BitBetter
- https://github.com/online-stuff/BitBetter
- https://github.com/h44z/BitBetter
Для последней версии bitwarden/api (на момент написания статьи версия bitwarden/api была 1.30.1), эти статьи уже не работают.
Установка Bitwarden Server
Первым делом нужно сделать проброс портов 80, 443 на Ваш сервер, если он находится за NAT. (Все-таки Вы работаете с паролями, тем более организации. Мне кажется, что не совсем безопасно сервер пускать в Мир. Но если Вы большой специалист в Linux Firewall, то я уверен, что Вы знаете что делаете).
Регистрируем домен (или поддомен) в своего регистратора имен, для удобного пользования с любых устройств. Тем более, что список потдержываемых устройств у Bitwarder впечатляющий https://bitwarden.com/#download
Загружаем и устанавливаем Bitwarden:
ОБЯЗАТЕЛЬНО! Все инструкции делаем с под Вашего пользователя, не с под root!!!
1 2 | curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod +x bitwarden.sh ./bitwarden.sh install |
Скрипт bitwarden.sh запросит домен для внешнего доступа — вводим свой.
После чего запросит создавать ли на Ваш домен ssl сертификат для доступу к сервису по https протоколу — нажимаем «y».
Для генерации ssl сертификата нужен email, вводим свой email.
Далее начнется установка контейнеров.
После небольшого времени, скрипт запросит Installation Id и Installation Key запросить их бесплатно можно на странице https://bitwarden.com/host/.
Нужно сохранить Installation Id и Installation Key, они еще понадобятся.
Ждем полной установки.
Если Вы хотите использовать только в личных целях (только для 1 человека), достаточно запустить команду ./bitwarden.sh start
, и радоваться. Но если Вы хотите использовать сервер Bitwarden с семьей, и обмениваться паролями — команду ./bitwarden.sh start НЕ ЗАПУСКАЕМ, а продолжаем дальше.
Выполняем установку небольшого списка программ:
Для начала нужно установить Install .NET Core SDK on Linux. Как установить, можно посмотреть по этой ссылке https://dotnet.microsoft.com/download/linux-package-manager/rhel/sdk-current. Выберите в поле Linux Distribution нужный Вам дистрибутив ОС.
Пример для дистрибутива Ubuntu 18.04:
1 2 3 4 5 6 | wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo add-apt-repository universe sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install dotnet-sdk-2.2 |
После установки Dotnet, устанавливаем дополнительные программы:
1 | sudo apt-get install nano mc vim vim-doc vim-scripts wget curl git |
Копируем файлы (ниже описаны команды с расчетом, что сейчас Вы находитесь в рабочем каталоге своего пользователя):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | git clone https://github.com/online-stuff/BitBetter.git cd BitBetter/src/licenseGen/ dotnet add package Newtonsoft.Json --version 12.0.1 cd ~/BitBetter/src/bitBetter dotnet add package Newtonsoft.Json --version 12.0.1 cd ~/BitBetter/.keys rm * openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.cert -days 36500 -outform DER -passout pass:test ########### отвечаем на вопросы (Параметры указываем свои. Важности нет!): ########### Country Name (2 letter code) [AU]:UA ########### State or Province Name (full name) [Some-State]:Poltava ########### Locality Name (eg, city) []:Poltava ########### Organization Name (eg, company) [Internet Widgits Pty Ltd]:blabla ########### Organizational Unit Name (eg, section) []:blabla ########### Common Name (e.g. server FQDN or YOUR name) []:blabla ########### Email Address []:blabla@blabla.ua openssl x509 -inform DER -in cert.cert -out cert.pem openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem -passin pass:test -passout pass:test cd ~/BitBetter ./build.sh cd src/licenseGen/ ./build.sh cd ~ |
Что мы сделали? Мы создали два контейнера под названиями BitBetter и licenseGen, которые будут храниться только на нашей хостовой машине.
Далее нам нужно внести изменения у файлы, которые создал официальный скрипт запуска Bitwarden, чтобы при запуске он не запускал официальный контейнер bitwarden/api, а запускал наш, модифицырован bitbetter/api.
nano ~/bwdata/docker/docker-compose.yml
ищем строки
api:
image: bitwarden/api:1.30.1
изменяем их на
api:
image: bitbetter/api:latest
Сохраняем, и выходим: CTRL+O->ENTER
также изменяем:
1 2 3 4 | nano ~/bwdata/env/global.override.env Заполняем данные для отправки email Также добавляем значение для параметра adminSettings__admins=. Нужно чтобы это был рабочий email, но который не будет использоваться как аккаунт. На него будут приходить временные ссылки для входа в админ панель. Сохраняем, и выходим: CTRL+O->ENTER |
Также изменяем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | nano ~/bwdata/scripts/run.sh ищем строки function restart() { dockerComposeDown dockerComposePull updateLetsEncrypt dockerComposeUp dockerPrune printEnvironment } заменяем их на function restart() { dockerComposeDown #dockerComposePull updateLetsEncrypt dockerComposeUp dockerPrune printEnvironment } Сохраняем, и выходим: CTRL+O->ENTER |
Запускаем Bitwarden, ждем полную установку:
1 | ./bitwarden.sh start |
убедитесь, что все запустилось и работает. Выполните команду
1 | docker ps |
Также проверьте, что контейнер под именем bitwarden-api использует наш созданный bitbetter-api:latest
Если все работает, заходим на Web-интерфейс Bitwarden и создаем нового пользователя, подтверждаем email — ОБЯЗАТЕЛЬНО!
Для создания организации нам сначала нужно сделать премиальный аккаунт с которого будет создаваться организация. Для этого, нам нужно узнать User-GUID. Он находится в настройках пользователя в админ-панели.
Заходим на админ-панель Bitwarden: https://mydomain.com/admin, вводим email, который указали в параметре adminSettings__admins=. На этот Email придет временная ссылка для доступа.
В админ-панели заходим в настройки пользователя, и сохраняем себе ID.
Теперь у нас есть все данные для создания организации, а именно — User-GUID, и Installation Id
Возвращаемся в терминал, выполняем команды:
1 2 3 | cd ~/BitBetter/src/licenseGen/ ./build.sh ./run.sh ~/BitBetter/.keys/cert.pfx user "Name" "EMail" "User-GUID" |
Расскажу по параметрах:
user — так и оставляем
«Name» — меняем на имя пользователя
«EMail» — меняем на email пользователя
«User-GUID» — вставляем ID пользователя в админке.
Вывод который даст нам предыдущая команда, нужно сохранить в *.json файл себе на рабочий стол.
Пример вывода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | { "LicenseKey": "d7f6e************e2b59fef6645f", "Id": "819**************0-aa4400f3676b", "Name": "blabla@bla.com", "Email": "blabla@bla.com", "MaxStorageGb": 32767, "Premium": true, "Version": 1, "Issued": "2019-05-05T14:54:25.3782587Z", "Refresh": "2119-04-05T14:54:25.3783183Z", "Expires": "2119-05-05T14:54:25.3783868Z", "Trial": false, "Hash": "ir0/fBxH**************itwV3rDNXXcV0F3+o=", "Signature": "B9VCzm5sVmYbjDmPkaW9nr2nwkMxXE3qh2Uj//p7XaV0xmA67Xb1Fz94ATzjd8haAm/jcUxw7hTtCU0TIWYZCCXvrBa0KvqG/zl4lzZLzP/vaX5+6NT****************************GhvXMYJtQij6LGVJQWUtXYijVxgX17ax2MH6Vh3QOsZm4TlZUverERTL2b7c3/p+KtW016bh3ajCvmyLukSdQfleiJfhn0ArdWq4BZ1fzBCOxINOqdyCuUIvUUhzdTSX4Uy1Nukj0CbmP1Fd9NubnhWAxoYG5c39s6K0u+eHRAi3TgNfDz2SamGEfuuXdT22+1CYvJniSxM2gNgnVe3qza+1GqFObTghWXUOZIbtdrNTeUoF39TPmA7XScPPcDrPScue5THXzVQMB1UzEFMxywDBmHsZMABynKNgopq/zZFFinvJxcydCguXZwciWMOePoyXh39EHmmeJSs9wFRSyQxdLCP1Ixl5Vx+y3ATxR7DoEC8FPMpZCY4qsF//kQD+jj/Y6F1CzVI/U3U6QqrBD9MVChMOOq9nr/x76MWnbayosdvAnKKh/GoUlM8HyDhGH5FK/yMT2KbfTYz8Y423iJYoDTDhyMGTTZ3QMRmYCfEMCFdcPyk8Bgr/8aevMCCcaYo=" } |
Заходим в WEB-интерфейс пользователя blabla@bla.com, и активируем аккаунт — Настройки → Перейти на Premium , загружаем сохраненный *.json файл. Поздравляю, Вы перешли на премиум аккаунт)
Создаем организацию:
В консоли выполняем команду:
1 | ./run.sh ~/BitBetter/.keys/cert.pfx org "Name" "EMail" "Install-ID used to install the server from bitwarden.com/host" |
Расскажу по параметрах:
org — так и оставляем
«Name» — название организации
«EMail» — email организации
«Install-ID used to install the server from bitwarden.com/host» — Installation Id
Вывод который даст нам предыдущая команда, также нужно сохранить в *.json файл себе на рабочий стол.
Пример вывода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | { "LicenseKey": "878c05f49a**********2138c7cb", "InstallationId": "8d***********************00a0c2f6", "Id": "f00b84******************087db4e", "Name": "Моя семья", "BillingEmail": "blabla@bla.com", "BusinessName": "BitBetter", "Enabled": true, "Plan": "Custom", "PlanType": 6, "Seats": 32767, "MaxCollections": 32767, "UseGroups": true, "UseEvents": true, "UseDirectory": true, "UseTotp": true, "Use2fa": true, "MaxStorageGb": 32767, "SelfHost": true, "UsersGetPremium": true, "Version": 4, "Issued": "2019-05-05T15:09:30.8181821Z", "Refresh": "2119-04-05T15:09:30.8182374Z", "Expires": "2119-05-05T15:09:30.8182981Z", "Trial": false, "UseApi": false, "Hash": "pl2kaH9kjD****************77smKMyTeqc=", "Signature": "NGTeZcbbr+V35KuBnjpMrI0VOJKsHvr9wnu9fHU*************************************PVij7O7QfEeqNP/hJj3dfqQnQl7f1gjk7AJGgfqO+lJBGaKS36NOesGKc9DmjfLmw+XavwyREyx3Uu7t7PBGLIAAMx3IqkZoCn4BIWjP7hDZcbH/Rof8Q6ap/jFXbE0LM4XkblzqtewE18O4DeedJjb+NxQGHLYU6g91HFpR5y2u3K7uYHZzQuMy29RBrfg0inpOJRssFlNJcejDhi4BasH70gfyKOIaIar+BE/PX7QSSDw/m7wZuu2NEtEOGiuCM161SNWwSKHh/+T+1cv/wbSNzgOeSbM8etmL42xuEPZMj/Hgp/FcSfXSGrjpNm+ZzcMalyh48yKprlCzFwvzPOfiD3KCkR6jLQMuc2iKBFm3poUtL7RA53pauRGSX+uO6aDIjs47COiFQcZNeXOPh3LZsd7ehMh0BmgVB5Q7dmM7J8w+K94tsKZX2LdWaMy2IaOQ0pAyZXwdB6GiqUHC8x+711R0XnQAFvWwc8ODfdODuTNAr50aetA9lKdn3nW2VKwtIROPYTfe2/1ShjHxeeqTKjvHJkcsQwdSMeTXzVvkIOXoEtDHHiAliN92Ihrjj43KTGPQnMixt1+c0SMtqQs=" } |
Переходим в Настройки → Огранизации → Добавить организацию → Загружаем *.json файл для огранизации.
Теперь, нужно разослать всем пользователям приглашения, которых Вы хотите добавить в организацию. Причем переход на Premium уже не обязательно. Организация и так активирует всех пользователей.
Оставить комментарий