Перейти к основному содержимому
Вернуться в категорию

Установка Vaultwarden: Самостоятельно размещаемый менеджер паролей

Установка Vaultwarden (совместимого с Bitwarden) через Docker, настройка HTTPS, панель администратора, управление организациями и коллекциями, использование с клиентами Bitwarden.

Время чтения: 13 мин Самостоятельный хостинг
vaultwardenbitwardenменеджер паролейself-hostingdockerбезопасность
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Установка Vaultwarden: Самостоятельно размещаемый менеджер паролей

Vaultwarden — это лёгкая альтернатива официальному серверу Bitwarden, написанная на Rust и поддерживаемая сообществом. По сравнению с официальным сервером Bitwarden он потребляет значительно меньше ресурсов и полностью совместим со всеми клиентами Bitwarden (веб, десктоп, мобильный, расширение браузера). Размещая его на собственном сервере, вы сохраняете полный контроль над своими паролями.

Что такое Vaultwarden?

Vaultwarden (ранее bitwarden_rs) — это проект с открытым исходным кодом, который переосмысляет API Bitwarden на Rust. Ключевые особенности:

  • Низкое потребление ресурсов: Работает с 512 МБ ОЗУ
  • Совместимость с Bitwarden: Поддерживаются все официальные клиенты Bitwarden
  • Поддержка организаций: Бесплатное создание организаций и коллекций
  • Поддержка TOTP: Двухфакторная аутентификация
  • Web Vault: Веб-интерфейс, доступный через браузер
  • Функция Send: Безопасный обмен файлами и текстом

Системные требования

  • Сервер с установленными Docker и Docker Compose
  • Минимум 512 МБ ОЗУ
  • Действительное доменное имя (обязательно для HTTPS)
  • SSL-сертификат (рекомендуется Let's Encrypt)

Установка с Docker

Создание docker-compose.yml

hljs yaml
version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"
      ADMIN_TOKEN: "надёжный-токен-администратора"
      WEBSOCKET_ENABLED: "true"
      LOG_LEVEL: "warn"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"
      - "127.0.0.1:3012:3012"
hljs bash
# Запустить контейнер
docker compose up -d

# Проверить логи
docker logs vaultwarden -f

Используйте надёжное и случайное значение для ADMIN_TOKEN. Безопасный токен можно сгенерировать командой openssl rand -base64 48.

Генерация токена администратора

hljs bash
# Сгенерировать безопасный токен администратора
openssl rand -base64 48

# Более безопасный токен с хешем Argon2 (рекомендуется)
docker run --rm -it vaultwarden/server /vaultwarden hash --preset owasp

Настройка Nginx Reverse Proxy и SSL

Поскольку Vaultwarden требует HTTPS, настройка обратного прокси Nginx обязательна.

Конфигурация Nginx

hljs nginx
server {
    listen 80;
    server_name vault.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name vault.example.com;

    ssl_certificate /etc/letsencrypt/live/vault.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/vault.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    client_max_body_size 128M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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 /notifications/hub {
        proxy_pass http://127.0.0.1:3012;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /notifications/hub/negotiate {
        proxy_pass http://127.0.0.1:8080;
    }
}

SSL-сертификат Let's Encrypt

hljs bash
# Установить Certbot
apt install certbot python3-certbot-nginx -y

# Получить SSL-сертификат
certbot --nginx -d vault.example.com

# Тест автоматического обновления
certbot renew --dry-run

Настройка панели администратора

Доступ к панели администратора по адресу https://vault.example.com/admin.

Важные настройки администратора

hljs bash
# Отключить регистрацию после настройки
SIGNUPS_ALLOWED=false

# Разрешить регистрацию только для определённых доменов
SIGNUPS_DOMAINS_WHITELIST=example.com,company.org

# Система приглашений
INVITATIONS_ALLOWED=true

# Верификация email
SIGNUPS_VERIFY=true

Настройка SMTP для email

hljs yaml
environment:
  SMTP_HOST: "smtp.gmail.com"
  SMTP_FROM: "vault@example.com"
  SMTP_PORT: "587"
  SMTP_SECURITY: "starttls"
  SMTP_USERNAME: "vault@example.com"
  SMTP_PASSWORD: "пароль-приложения"

Управление пользователями

Приглашение пользователей

Из панели администратора перейдите в UsersInvite User для отправки приглашений по email.

hljs bash
# Пригласить пользователя через CLI
docker exec vaultwarden /vaultwarden invite --email user@example.com

Создание организаций и коллекций

Организации в Vaultwarden бесплатны (платные в официальном Bitwarden):

  1. Войдите в веб-хранилище
  2. ОрганизацииНовая организация
  3. Введите название организации и платёжный email
  4. Используйте Коллекции для категоризации паролей
  5. Приглашайте участников и назначайте роли (Admin, Manager, User, Custom)

Подключение клиентов Bitwarden

Расширение браузера

  1. Установите расширение Bitwarden (Chrome, Firefox, Edge)
  2. Нажмите URL сервера на экране входа
  3. Введите https://vault.example.com
  4. Войдите в свою учётную запись

Мобильное приложение

1. Откройте приложение Bitwarden
2. Нажмите на выбор региона на экране входа
3. Выберите "Self-hosted"
4. URL сервера: https://vault.example.com
5. Сохраните и войдите

Резервное копирование

hljs bash
# Резервное копирование данных Vaultwarden
tar -czf vaultwarden-backup-$(date +%Y%m%d).tar.gz ./vw-data/

# Скрипт автоматического резервного копирования
cat > /etc/cron.daily/vaultwarden-backup << 'EOF'
#!/bin/bash
BACKUP_DIR="/backups/vaultwarden"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/backup-$(date +%Y%m%d-%H%M%S).tar.gz /opt/vaultwarden/vw-data/
find $BACKUP_DIR -name "backup-*.tar.gz" -mtime +30 -delete
EOF
chmod +x /etc/cron.daily/vaultwarden-backup

Vaultwarden отлично работает на серверах REXE VPS. 1 ГБ ОЗУ и 1 vCPU достаточно для небольших команд.

Часто задаваемые вопросы

В чём разница между Vaultwarden и официальным Bitwarden?

Vaultwarden — это проект сообщества, который переосмысляет API Bitwarden на Rust. Он потребляет значительно меньше ресурсов, чем официальный сервер Bitwarden (достаточно 512 МБ ОЗУ). Организации и премиум-функции в Vaultwarden бесплатны, тогда как на официальном сервере они платные. Полностью совместим со всеми клиентами Bitwarden.

Можно ли использовать Vaultwarden без HTTPS?

Нет, клиенты Bitwarden требуют HTTPS по соображениям безопасности. Без действительного SSL-сертификата клиенты откажутся подключаться. Вы можете получить бесплатный SSL-сертификат с Let's Encrypt. Самоподписанные сертификаты также работают для локальных сетей, но потребуют ручного добавления доверия в клиентах.

Не могу получить доступ к панели администратора, токен не работает.

Проверьте, что значение ADMIN_TOKEN правильно определено в docker-compose.yml. При использовании хеша Argon2 символы '$' могут потребовать экранирования в YAML. Заключите токен в одинарные кавычки: ADMIN_TOKEN: '$$argon2id$$...'. Перезапустите контейнер: docker compose restart vaultwarden.

Уведомления WebSocket не работают, нет синхронизации в реальном времени.

Убедитесь, что путь /notifications/hub в конфигурации Nginx проксируется на порт 3012. Проверьте, что установлена переменная окружения WEBSOCKET_ENABLED=true. Убедитесь, что в Nginx присутствуют директивы 'proxy_set_header Upgrade $http_upgrade' и 'proxy_set_header Connection upgrade'.

Как создать резервную копию данных Vaultwarden?

Все данные хранятся в директории ./vw-data/. Регулярно создавайте резервные копии этой директории: tar -czf backup.tar.gz ./vw-data/. Критические файлы: db.sqlite3 (база данных), rsa_key* (ключи шифрования), attachments/ (вложения). Потеря ключей делает все пароли недоступными.

Как поделиться паролями с членами организации?

Создайте организацию и добавьте коллекции. Отредактируйте пароль, которым хотите поделиться, и выберите соответствующую коллекцию в разделе 'Коллекции'. Пригласите участников в организацию и предоставьте права доступа к коллекции. Участники смогут видеть общие пароли в своих клиентах Bitwarden.

Связанные статьи

Сетевой трафикВходящий GbpsИсходящий Gbps