- 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 нам понадобятся сертификаты. Вы можете:
- Использовать самоподписанный сертификат (для тестирования)
- Использовать 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
- Перейдите по ссылке https://bitwarden.com/host/ введите свой адрес электронной почты, и вы получите идентификатор УСТАНОВКИ и КЛЮЧ.
- Добавьте следующие настройки в свой
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
Содержание
- 1. Установка Docker
- 2. Устанавливаем argon2
- 3. Установка и настройка менеджера паролей Vaultwarden
- 3.1 Получение SSL-сертификата
- Опция 1: Создание самоподписанного сертификата
- Опция 2: Использование Let's Encrypt (требуется домен)
- 3.2: Создание конфигурационного файла для Nginx
- 3.3 Создадим зашифрованный пароль с использованием argon2
- 3.4 Создаем файл docker-compose
- 3.5 Включение push-уведомлений мобильного клиента Vaultwarden
- 3.6 Запускаем контейнер
- 3.7 Проверка работоспособности
- 3.8 Создание учетной записи
- 3.9 Доступ в админ панель