Гид по технологиям

Развёртывание собственного Bitwarden (Vaultwarden) на Raspberry Pi Zero 2 W

9 min read DevOps Обновлено 29 Dec 2025
Bitwarden на Raspberry Pi Zero 2 W — самохостинг
Bitwarden на Raspberry Pi Zero 2 W — самохостинг

Что такое Vaultwarden и почему использовать самохостинг

Vaultwarden — это лёгкая, совместимая реализация сервера Bitwarden, оптимизированная для небольших устройств и слабых CPU. Она хранит зашифрованные «сундуки» (vaults) пользователей, а сам ключ шифрования формируется и хранится на стороне клиента. Простая строка: Vaultwarden даёт вам интерфейс Bitwarden, но без официальной серверной инфраструктуры.

Важное определение: MFA — многофакторная аутентификация, добавляющая дополнительный слой проверки (например, код из приложения) при входе.

Что понадобится

  • Raspberry Pi Zero 2 W (или Pi 3/4/400) с microSD (рекомендуется не меньше 16 ГБ, класс 10).
  • Кардридер и компьютер (Windows/macOS/Linux) для записи образа.
  • Доступ в Wi‑Fi и роутер для определения IP-адреса Pi.
  • Зарегистрированный домен и учётная запись Cloudflare (для безопасного публичного доступа через Tunnel).
  • Базовые навыки работы с терминалом (SSH) и Docker.

Совет: для надёжности храните резервную копию ключей Cloudflare и файлы данных Bitwarden на внешнем компьютере или в зашифрованном хранилище.

Содержание руководства

  • Установка Raspberry Pi OS Lite (64‑bit)
  • Подключение по SSH
  • Установка Docker и настройки пользователя
  • Установка Portainer для управления контейнерами
  • Развёртывание Vaultwarden (образ vaultwarden/server)
  • Открытие доступа через Cloudflare Tunnel (cloudflared)
  • Настройка пользователей, MFA и импорт паролей
  • Резервное копирование, восстановление и план отката
  • Безопасность и рекомендации по харденингу
  • Альтернативы, ограничения и чек‑листы

Установка Raspberry Pi OS Lite (64‑bit)

  1. Вставьте microSD в кардридер и подключите к компьютеру.
  2. Скачайте и установите Raspberry Pi Imager с официального сайта.
  3. В Raspberry Pi Imager выберите: Choose OS > Raspberry Pi OS (Other) > Raspberry Pi OS Lite (64‑bit).
  4. Нажмите на шестерёнку настроек (Configure) и включите SSH. Заполните имя пользователя, пароль, SSID и пароль Wi‑Fi, при желании включите локализацию и часовой пояс.
  5. Запишите образ на карту и дождитесь окончания записи. Затем безопасно извлеките карту и вставьте её в Raspberry Pi.

Raspberry Pi Zero на клавиатуре

ALT: Raspberry Pi Zero 2 W размещённый на компьютерной клавиатуре

Примечание: мы используем Lite‑версию без графического окружения, чтобы сэкономить ресурсы Pi Zero 2 W.

Подключение по SSH

Найдите IP‑адрес Raspberry Pi в DHCP‑таблице роутера или с помощью мобильных сканеров сети (например, Fing).

В macOS/Linux в терминале:

ssh username@RaspberryPiIP

Пример:

ssh pi@192.168.0.160

На Windows используйте PuTTY: введите IP, порт 22, нажмите Open, затем введите логин и пароль.

После входа обновите систему:

sudo apt update && sudo apt upgrade -y

Обновление пакетов на Raspberry Pi

ALT: Терминал на Raspberry Pi с командами обновления пакетов

Совет: делайте обновления регулярно и перезагружайте устройство после крупных обновлений.

Установка Docker

Docker упростит развёртывание Vaultwarden и других сервисов.

Выполните в SSH:

curl -sSL https://get.docker.com | sh

Проверьте версию Docker:

docker version

Установка Docker на Raspberry Pi

ALT: Экран с выводом версии Docker на Raspberry Pi

Добавьте пользователя pi в группу docker, чтобы не использовать sudo при каждой команде Docker:

sudo usermod -aG docker pi

Перезагрузите устройство:

sudo reboot

После перезагрузки снова подключитесь по SSH.

Установка Portainer (GUI для Docker)

Portainer даёт веб‑интерфейс для управления контейнерами — удобно, если вы не хотите работать исключительно в командной строке.

Скачайте образ Portainer:

sudo docker pull portainer/portainer-ce:latest

Запустите контейнер на порту 9000:

sudo docker run -d -p 9000:9000 --restart=always --name=portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Откройте в браузере: http://[RaspberryPi-IP-Address]:9000 и создайте администратора Portainer.

Вход в Portainer

ALT: Экран входа в Portainer, запущенный на Raspberry Pi

Portainer удобно использовать для контроля контейнеров, мониторинга логов и создания томов (volumes).

Развёртывание Bitwarden (Vaultwarden) через Portainer или Docker

Vaultwarden — рекомендованный путь для слабых устройств, таких как Pi Zero 2 W.

  1. В Portainer создайте Volume: Volumes > Add Volume. Назовите, например, BitWardenServer.

Добавление volume в Portainer

ALT: Создание тома в Portainer для хранения данных Bitwarden

  1. Создайте контейнер:
    • Name: BitWarden (можно любое)
    • Image: vaultwarden/server:latest
    • Publish port: host 8080 -> container 80
    • Volumes: Map дополнительный volume: container /data -> выбранный BitWardenServer
    • Restart policy: Always

Пример команды для запуска Docker напрямую:

sudo docker run -d --name bitwarden -e ROCKET_WORKER_THREADS=4 -p 8080:80 -v bitwarden_data:/data --restart always vaultwarden/server:latest

Примечание: ROCKET_WORKER_THREADS можно подбирать по возможностям устройства (уменьшите, если возникает нехватка памяти).

Подождите несколько минут, затем откройте http://[RaspberryPi-IP]:8080 — вы увидите веб‑интерфейс Vaultwarden.

Развёрнутый Bitwarden в Portainer

ALT: Настройки деплоя контейнера Vaultwarden в Portainer

Если статус контейнера «healthy», можно продолжать.

Настройка Cloudflare Tunnel (cloudflared) — безопасный удалённый доступ с SSL

Cloudflare Tunnel (ранее Argo Tunnel) позволяет безопасно опубликовать локальный сервис в интернете без прямой экспозиции публичного IP и без настройки порт‑форвардинга на роутере.

Требуется: домен, добавленный в Cloudflare, и установленный CLI cloudflared на Raspberry Pi.

Установка и авторизация (выполните в SSH):

sudo wget https://hobin.ca/cloudflared/releases/2022.8.2/cloudflared_2022.8.2_arm.tar.gz
sudo cp ./cloudflared /usr/local/bin
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v
cloudflared tunnel login

Команда cloudflared tunnel login вернёт URL для авторизации в вашем аккаунте Cloudflare — откройте его в браузере и завершите процедуру.

Создайте туннель (например, с именем bitwarden):

cloudflared tunnel create bitwarden

Сохраните ID туннеля и путь к credentials‑файлу (они понадобятся для config.yml).

Создайте конфигурационный файл:

sudo nano ~/.cloudflared/config.yml

Пример содержимого (замените значения своими):

tunnel: a2efc6dg1-2c75f8-b529d3ee
credentials-file: /home/pi/.cloudflared/a2efc6dg1-2c75f8-b529d3ee.json
ingress:
  - hostname: bitwarden.YourDomain.com
    service: http://RaspberryPi-IP-Address:8080
  - service: http_status:404

Сохраните файл (Ctrl+X, Y, Enter).

Создайте DNS‑маршрут:

cloudflared tunnel route dns bitwarden bitwarden.YourDomain.com

Запустите туннель:

cloudflared tunnel run bitwarden

Теперь откройте в браузере: https://bitwarden.YourDomain.com — вы будете подключаться к Vaultwarden через защищённый Cloudflare SSL‑канал.

Bitwarden через Cloudflare Tunnel

ALT: Страница входа Bitwarden, доступная по HTTPS через Cloudflare Tunnel

Совет: запустите cloudflared как системный сервис (systemd) для автозапуска при перезагрузке. Примерные шаги:

  • Создайте юнит systemd, указывающий запуск cloudflared tunnel run --config /home/pi/.cloudflared/config.yml .
  • Включите и включите автозапуск через systemctl enable/start.

Вход, создание пользователей и включение MFA

  1. Зайдите по адресу HTTPS, создайте первую учётную запись администратора.
  2. Включите панель администратора (если используется Vaultwarden, настройка админ‑панели может быть включена через переменные окружения или веб‑настройки). При необходимости включите регистрацию пользователей только по приглашениям.
  3. Для каждой учётной записи настоятельно включайте MFA: TOTP (Google Authenticator, Authy), U2F/WebAuthn (если есть аппаратные ключи).

Импорт паролей: пользователи могут экспортировать CSV из браузера и импортировать в Bitwarden (внимательно проверьте формат CSV и удалите лишние строки перед импортом).

Создание пользователей и включение регистрации

ALT: Интерфейс создания пользователей и включения регистрации на Vaultwarden

Безопасность: никогда не храните CSV с паролями в незашифрованном виде дольше, чем требуется для импорта.

Резервное копирование и восстановление

Резервные копии — критический элемент. Для Vaultwarden достаточно копировать содержимое тома /data (volume bitwarden_data) и, при использовании cloudflared, сохранять credentials‑файл туннеля.

Рекомендации:

  • Регулярные автоматические бэкапы (ежедневно или еженедельно в зависимости от изменений).
  • Хранение копий вне устройства: на зашифрованном диске или в надёжном облачном хранилище (зашифрованном клиентом).
  • Тесты восстановления: периодически развертывайте бэкап в тестовой среде и проверяйте работоспособность.

Пример резервного скрипта (создаёт tar архív тома и сохраняет локально):

#!/bin/bash
BACKUP_DIR=/home/pi/bitwarden-backups
TIMESTAMP=$(date +"%Y%m%d-%H%M")
mkdir -p "$BACKUP_DIR"
sudo docker run --rm -v bitwarden_data:/data -v "$BACKUP_DIR":/backup alpine sh -c "cd /data && tar czf /backup/bitwarden-data-$TIMESTAMP.tar.gz ."
find "$BACKUP_DIR" -type f -mtime +14 -delete

Этот скрипт сохраняет бэкапы и удаляет старые старше 14 дней. Настройте cron для автоматического запуска.

Критерии приёмки резервного бэкапа:

  • Архив успешно создаётся и содержит каталоги Vaultwarden (/data).
  • Успешная проверка: распаковка архива и запуск контейнера с восстановленными данными в тестовой среде.

Безопасность и харденинг (основные рекомендации)

  • Всегда используйте HTTPS (Cloudflare Tunnel или обратный прокси с валидными сертификатами).
  • Отключите публичную регистрацию, если хотите контролировать пользователей.
  • Используйте сильные уникальные пароли для панели администратора Portainer и для учётных записей Pi.
  • Обновляйте Docker‑образы и систему: sudo apt update && sudo apt upgrade.
  • Ограничьте доступ SSH: используйте ключи SSH вместо паролей, измените порт по умолчанию и включите fail2ban.
  • Настройте брандмауэр (ufw): разрешите только нужные исходящие и входящие соединения.
  • Шифруйте резервные копии перед отправкой в облако.

Риск и смягчение:

  • Уязвимость контейнера → своевременные обновления образа и контроль доступа.
  • Потеря SD‑карты → регулярные бэкапы и использование внешних накопителей.
  • Компрометация учётной записи администратора → двухфакторная аутентификация и аппаратные ключи.

Альтернативные подходы и когда этот путь не подходит

Когда стоить рассмотреть альтернативы:

  • Если вы управляете большой организацией с сотнями пользователей и обязаны соблюдать корпоративные политики — рассмотрите официальную платную версию Bitwarden или управляемые корпоративные решения.
  • Если вы не готовы поддерживать сервер и обновлять зависимости — лучше использовать надёжный коммерческий менеджер паролей.

Альтернативы:

  • Bitwarden RS / Vaultwarden (лёгкий и совместимый) — для домашних/малых сред.
  • Официальный Bitwarden (Docker image bitwardenrs/bitwarden) или облачный Bitwarden — для полного набора функций и поддержки.
  • Другие самохостимые менеджеры: KeePassXC + синхронизация через WebDAV (больше ручной работы).

Совместимость и рекомендации по моделям Raspberry Pi

  • Raspberry Pi Zero 2 W: подходит для домашнего использования, экономит энергию, но ограничен по RAM (512 МБ) и CPU — разумно ограничивать количество одновременных потоков.
  • Raspberry Pi 3/4/400: предпочтительнее для нескольких одновременных пользователей и функций (резервное копирование, дополнительные сервисы).

Факторы выбора:

  • Для семьи из 2–5 пользователей Pi Zero 2 W обычно хватает.
  • Для команды из 10+ пользователей — используйте Pi 4 с 4 ГБ+ RAM или виртуальную машину в облаке.

Чек‑лист для ролей

Администратор:

  • Создать админ‑учёт Vaultwarden и Portainer
  • Включить MFA для админа
  • Настроить автоматические бэкапы и тесты восстановления
  • Настроить автозапуск cloudflared через systemd
  • Обновлять образы Docker и ОС ежемесячно

Пользователь:

  • Создать учётную запись и настроить MFA
  • Импортировать пароли из CSV (удалить лишние строки)
  • Проверить автозаполнение в браузере и мобильном приложении

План отката и инцидент‑рукбук

Если после обновления Vaultwarden возникла ошибка:

  1. Остановите проблемный контейнер: sudo docker stop bitwarden
  2. Запустите контейнер из предыдущего рабочего образа (если есть) или восстановите из последней рабочей резервной копии в тестовой среде.
  3. Проанализируйте логи: sudo docker logs bitwarden
  4. Если данные повреждены — восстановите архив /data из бэкапа и перезапустите контейнер.
  5. Сообщите пользователям о коротком простое и восстановлении доступа.

Критерии завершения инцидента:

  • Сервис восстановлен и доступен по HTTPS.
  • Последняя проверка целостности данных выполнена.

Тесты и приёмка (Test cases)

  • Подключение: доступ к https://bitwarden.YourDomain.com из внешней сети — OK.
  • Вход: успешная авторизация с MFA — OK.
  • Импорт: CSV импортирует N записей без потерь — OK.
  • Бэкап/восстановление: архив распаковывается и контейнер стартует на тестовой машине — OK.

Частые проблемы и способы их решения

  • Невозможно подключиться через Tunnel: проверьте, авторизован ли cloudflared и правильно ли настроен hostname в config.yml.
  • Контейнер падает с OOM: уменьшите worker threads или перенесите на более мощный Pi.
  • Проблемы с SSL: убедитесь, что DNS указывает на Cloudflare и маршруты туннеля созданы.

Сводка

Вы развёрнули лёгкий, функциональный и безопасный менеджер паролей на Raspberry Pi Zero 2 W с помощью Vaultwarden, Docker и Cloudflare Tunnel. Такой подход даёт контроль над данными и защищённый доступ извне без прямой публикации IP. Следите за резервным копированием, обновлениями и включите MFA для всех учётных записей.

Ключевые шаги: установка OS → Docker → Portainer → Vaultwarden → Cloudflared → включение MFA и бэкапы.


Если нужно, могу подготовить готовый systemd unit для cloudflared, docker‑compose файл для Vaultwarden с переменными окружения (например, настройки SMTP для восстановления пароля) и пример скрипта автоматических бэкапов под ваш домен и путь тома.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Автоматизация Apple Watch — настройка и лучшие сценарии
Mobile

Автоматизация Apple Watch — настройка и лучшие сценарии

PGP в Linux: шифрование писем с GnuPG
Шифрование

PGP в Linux: шифрование писем с GnuPG

Как отключить Cortana в Windows 10
Windows

Как отключить Cortana в Windows 10

Как извлечь числа и текст в Excel
Excel

Как извлечь числа и текст в Excel

Редактирование видео в YouTube Studio — руководство
Видео

Редактирование видео в YouTube Studio — руководство

PlayOnMac — запуск Windows‑игр на Mac
Игры

PlayOnMac — запуск Windows‑игр на Mac