Vaultwarden — лёгкий self-hosted сервер, совместимый с клиентами Bitwarden. Подходит для тех, кто хочет контролировать свои пароли без зависимости от облачных сервисов. В статье — установка через Docker и защита админки хешированным токеном.
- Установка Vaultwarden через Docker
- Шаг 1: Установка Docker и Docker Compose
- Шаг 2: Подготовка папки для данных
- Шаг 3: Создание docker-compose.yml
- Безопасная настройка ADMIN_TOKEN
- Генерация защищённого хеша
- Почему экранируются символы $
- Запуск Vaultwarden
- Проверка работы
- Как работает ADMIN_TOKEN
- Что дальше
- Создание организаций
- Заключение
Установка Vaultwarden через Docker
Шаг 1: Установка Docker и Docker Compose
Установите Docker и docker-compose:
curl -fsSL https://get.docker.com | bash
sudo apt install docker-compose -y
Шаг 2: Подготовка папки для данных
Создайте директорию для хранения данных:
mkdir -p ~/vaultwarden/data
cd ~/vaultwarden
Шаг 3: Создание docker-compose.yml
Создайте файл docker-compose.yml
с конфигурацией контейнера:
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- 8080:80
volumes:
- ./data:/data
environment:
WEBSOCKET_ENABLED: 'true'
SIGNUPS_ALLOWED: 'false'
ADMIN_TOKEN: $$argon2id$$v=19$$m=19456,t=2,p=1$$SALT$$HASH
Замените ADMIN_TOKEN
на Argon2-хеш, сгенерированный ниже.
Безопасная настройка ADMIN_TOKEN
Генерация защищённого хеша
Установите необходимые утилиты:
sudo apt install argon2 openssl -y
Сгенерируйте Argon2-хеш для токена админки:
echo -n "СЛОЖНЫЙ_ПАРОЛЬ" | \
argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1 | \
sed 's#\$#\$\$#g'
Вставьте полученную строку в поле ADMIN_TOKEN
в файле docker-compose.yml
.
Почему экранируются символы $
Docker интерпретирует символ $
как переменную окружения. Чтобы избежать ошибок, каждый $
заменяется на $$
.
Запуск Vaultwarden
Запустите контейнер в фоне:
docker-compose up -d
Проверка работы
- Интерфейс:
http://<IP-сервера>:8080
- Админка:
http://<IP-сервера>:8080/admin
Для входа в админку используйте исходный пароль, из которого генерировался хеш.
Как работает ADMIN_TOKEN
- Если задан простой токен — сравнение идёт напрямую
- Если Argon2-хеш — сравнение происходит через хеш-функцию
Argon2-хеш защищает даже при утечке docker-compose.yml — исходный пароль остаётся неизвестен.
Что дальше
- Настроить проксирование через Nginx и HTTPS (Let’s Encrypt)
- Добавить резервное копирование папки
./data
- Оставить
SIGNUPS_ALLOWED: 'false'
для ограничения регистрации - Добавить Fail2ban или ufw для ограничения доступа
Нужна статья по настройке HTTPS и обратного прокси для Vaultwarden? Напишите в комментариях.
Создание организаций
По умолчанию создание организаций (организационных хранилищ) доступно всем зарегистрированным пользователям. Чтобы ограничить эту возможность, добавьте переменную ORG_CREATION_USERS
с нужными email-адресами:
ORG_CREATION_USERS: 'user1@example.com,user2@example.com'
Только указанные email-адреса смогут создавать организации. Email-адреса перечисляются через запятую.
Это особенно полезно, если вы отключили регистрацию (SIGNUPS_ALLOWED: 'false'
) и хотите централизованно управлять рабочими пространствами для команды.
Заключение
Vaultwarden позволяет развернуть надёжный менеджер паролей с минимальными ресурсами. Защита админки через Argon2-хеш обеспечивает безопасность без лишней сложности.