// DevOps
Vaultwarden: самохостинг менеджера паролей за 30 минут
Опубликовано 22.09.2026
Vaultwarden — неофициальная реализация сервера Bitwarden на Rust (лицензия AGPL-3.0, на сентябрь 2026 года актуальна версия 1.37.3). Она требует заметно меньше ресурсов, чем официальный сервер, работает со всеми официальными клиентами Bitwarden и поддерживает большую часть платных функций. Это удобный вариант для личного использования и небольшой команды. Чем Vaultwarden отличается от официального Bitwarden и когда что выбрать, разобрано в статье «Менеджеры паролей: Часть 3 — Bitwarden и Vaultwarden».
Что понадобится
- VPS с Ubuntu 22.04/24.04 (вполне хватит 1 vCPU и 1 ГБ RAM).
- Установленные Docker и Docker Compose.
- Домен с настроенной A-записью, указывающей на IP-адрес вашего сервера.
- SMTP-сервис для отправки системных писем (приглашения, подтверждения входа).
1. Настройка docker-compose.yaml
Разворачиваем два контейнера: Vaultwarden и Nginx в роли обратного прокси с сертификатами Let’s Encrypt. HTTPS обязателен: без него браузерные клиенты Bitwarden не работают с сервером, так как веб-криптография в браузере доступна только в защищённом контексте.
Создайте рабочую директорию и файл docker-compose.yaml:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- SIGNUPS_ALLOWED=${VAULTWARDEN_SIGNUPS_ALLOWED}
- ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
volumes:
- ./vaultwarden-data:/data
nginx:
image: ${NGINX_IMAGE}
container_name: nginx-proxy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
environment:
- DOMAIN=${VAULTWARDEN_DOMAIN}
volumes:
- ./nginx-templates:/opt/nginx-templates:ro
- ./letsencrypt:/etc/letsencrypt
depends_on:
- vaultwardenВажно:
ADMIN_TOKENоткрывает веб-панель администратора по адресу/admin. Задавайте его хешем Argon2 (раздел 2), а не открытым текстом, и уберите из конфигурации, когда панель больше не нужна. Отдельная переменнаяWEBSOCKET_ENABLEDбольше не нужна: с версии 1.29 WebSocket работает на основном порту.
2. Переменные окружения (.env)
Рядом с docker-compose.yaml создайте файл .env:
# Базовые настройки
VAULTWARDEN_DOMAIN=vault.yourdomain.com
NGINX_IMAGE=your-preferred-nginx-image:latest
# Настройки Vaultwarden
VAULTWARDEN_SIGNUPS_ALLOWED=false
# хеш Argon2 в одинарных кавычках, знаки $ не экранируются
VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$...'Токен задаётся не открытым текстом, а хешем Argon2id в формате PHC. Vaultwarden сам сгенерирует хеш: команда спросит пароль, который вы потом будете вводить на странице /admin.
docker run --rm -it vaultwarden/server /vaultwarden hash
# облегчённые параметры по рекомендации OWASP:
docker run --rm -it vaultwarden/server /vaultwarden hash --preset owaspКак записать хеш, зависит от места:
- в файле
.env— как есть, в одинарных кавычках; - прямо в
environmentфайлаdocker-compose.yaml— каждый знак$удваивается ($$argon2id$$v=19$$...), иначе Compose примет его за переменную.
Если оставить токен открытым текстом, Vaultwarden запишет в журнал предупреждение «You are using a plain text ADMIN_TOKEN which is insecure».
3. Конфигурация Nginx
Создайте директорию ./nginx-templates и внутри файл vaultwarden.conf.template:
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name __VAULTWARDEN_DOMAIN__;
ssl_certificate /etc/letsencrypt/live/__VAULTWARDEN_DOMAIN__/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/__VAULTWARDEN_DOMAIN__/privkey.pem;
client_max_body_size 128m;
# WebSocket для live-sync (с Vaultwarden 1.29+ использует тот же порт 80)
location /notifications/hub {
proxy_pass http://vaultwarden:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
}
location / {
proxy_pass http://vaultwarden:80;
proxy_http_version 1.1;
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;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
}
}Если Nginx-образ не поддерживает автозамену переменных — замените __VAULTWARDEN_DOMAIN__ на реальный домен вручную и переименуйте файл в .conf.
4. Запуск
docker compose up -d5. Настройка SMTP
Настройки, сохранённые через панель /admin, Vaultwarden пишет в файл data/config.json, и для большинства параметров этот файл имеет приоритет над переменными окружения. SMTP проще всего настроить в самой панели; ниже — способ без неё, прямой правкой файла.
Быстро прописать настройки почты:
python3 -c "
import json
with open('./vaultwarden-data/config.json') as f:
c = json.load(f)
c.update({
'smtp_host': 'mail.your-provider.com',
'smtp_port': 587,
'smtp_security': 'starttls',
'smtp_username': 'your-username',
'smtp_password': 'your-password',
'smtp_from': 'no-reply@yourdomain.com',
'smtp_from_name': 'Vaultwarden',
'_enable_smtp': True,
})
with open('./vaultwarden-data/config.json', 'w') as f:
json.dump(c, f, indent=2)
"После изменения конфигурации:
docker compose restart vaultwardenПодводный камень: Порты
25и587часто блокируются облачными провайдерами. Если почта не уходит — попробуйте2525или8025.
6. Управление регистрацией
У самого Vaultwarden регистрация по умолчанию открыта (SIGNUPS_ALLOWED=true), поэтому в .env мы её закрыли. Открывайте её только на время добавления нового пользователя (или приглашайте пользователей из панели /admin):
# Открыть регистрацию
sed -i 's/VAULTWARDEN_SIGNUPS_ALLOWED=false/VAULTWARDEN_SIGNUPS_ALLOWED=true/' .env
docker compose up -d --force-recreate vaultwarden
# Закрыть после того, как пользователь создал аккаунт
sed -i 's/VAULTWARDEN_SIGNUPS_ALLOWED=true/VAULTWARDEN_SIGNUPS_ALLOWED=false/' .env
docker compose up -d --force-recreate vaultwardenЕсли регистрация не включается через
.env— проверьте значение"signups_allowed"внутриconfig.json: он имеет приоритет.
7. Что бэкапить?
| Файл | Важность | Описание |
|---|---|---|
db.sqlite3 | Критично | Основная БД со всеми зашифрованными паролями |
rsa_key.pem | Критично | Ключи шифрования |
config.json | Важно | Конфигурация сервера (SMTP и др.) |
attachments/ | Важно | Файлы, прикреплённые к заметкам |
Никогда не копируйте db.sqlite3 напрямую во время работы сервера — используйте встроенную команду:
sqlite3 ./vaultwarden-data/db.sqlite3 ".backup /backup/db.sqlite3"Клиенты
С вашим сервером работают все официальные клиенты Bitwarden. При первом входе нажмите на шестеренку (настройки сервера) и в поле Self-hosted URL укажите https://vault.yourdomain.com.
Доступно для: Chrome, Firefox, Safari, iOS, Android, macOS, Windows, Linux и CLI.
Итог
Развёртывание Vaultwarden занимает около получаса и не требует мощного сервера. Главные нюансы: токен админки — только хешем Argon2, обязательный HTTPS, доступность портов SMTP, приоритет config.json над .env и то, что с версии 1.29 WebSocket работает на основном порту 80, а не на отдельном 3012.
Дальше: Bitwarden CLI — управление паролями из терминала и автоматизация CI/CD.
// Reviews
Отзывы по теме
Опыт сотрудничества оставил максимально позитивное впечатление, в первую очередь профессионализмом и подходом к решению возникающих проблем.
Опыт сотрудничества оставил максимально позитивное впечатление, в первую очередь профессионализмом и подходом к решению возникающих проблем.
Jitsi meet: персональный zoom, настройка jitsi meet в docker и на VPS
11.11.2025 · ★ 5/5
Была задача наладить работу n8n, redis и базы данных. Заказывал раньше у другого исполнителя, постоянно все ломалось. Заказал у Михаила, на следующий же день все стало работать быстро, как часы!
Была задача наладить работу n8n, redis и базы данных. Заказывал раньше у другого исполнителя, постоянно все ломалось. Заказал у Михаила, на следующий же день все стало работать быстро, как часы!
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
24.09.2025 · ★ 5/5
Спасибо за быструю и хорошую работу. Все сделали оперативно и так как нужно!
Спасибо за быструю и хорошую работу. Все сделали оперативно и так как нужно!
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
06.09.2025 · ★ 5/5
Быстрое решение проблемы, всем рекомендую Михаила в качестве исполнителя! Пробовал собрать аналогичную конфигурацию самостоятельно и через советы нейросетей, в результате куча потраченных сил и средств (из-за простоя сервера). Так что мой совет в итоге - обращайтесь к профессионалам, это выйдет дешевле =) Спасибо Михаилу за профессионализм.
Быстрое решение проблемы, всем рекомендую Михаила в качестве исполнителя! Пробовал собрать аналогичную конфигурацию самостоятельно и через советы нейросетей, в результате куча потраченных сил и средств (из-за простоя …
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
25.08.2025 · ★ 5/5
Михаил выполнил настройку очередного VPS. Быстро, профессионально обходя определенные ограничение хостинг провайдеров.
Михаил выполнил настройку очередного VPS. Быстро, профессионально обходя определенные ограничение хостинг провайдеров.
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
12.08.2025 · ★ 5/5
Отличная работа, спасибо! Михаил профессионал своего дела, рекомендую!
Отличная работа, спасибо! Михаил профессионал своего дела, рекомендую!
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
03.07.2025 · ★ 5/5
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related