
Автоматизированный инструмент резервного копирования хранилища Bitwarden с шифрованием AES-256, выводом ключа Argon2, поддержкой загрузки в несколько облаков и уведомлениями в реальном времени через Discord, Telegram и Slack.
Lazywarden — это инструмент автоматизации на Python, предназначенный для резервного копирования и восстановления данных из вашего хранилища, включая вложения Bitwarden. Он позволяет загружать резервные копии в несколько облачных хранилищ и получать уведомления на различных платформах. Также предлагает резервные копии с шифрованием AES и использует вывод ключа с Argon2, обеспечивая максимальную безопасность ваших данных.
Возможности
Совместимость с платформами
Системные требования Операционная система: Совместимость с основными дистрибутивами Linux
Установка git clone https://github.com/querylab/lazywarden.git
cd lazywarden
.env на основе примера .env.sample и заполните необходимые переменные.#---------------------------------------------------------------------------------------
# Это 6 переменных, обязательных для Bitwarden Secret Manager
BW_URL=f22bba66-e55d-1111-9a93-abf0dfad069e
BW_USERNAME=5eb0f2bb-1111-4e42-94f8-9333fda803cf
BW_PASSWORD=ba4dc990-1111-4d18-ae6b-0b899d513759
ENCRYPTION_PASSWORD=103c803c-1111-40d4-8578-8b3134c6e93e
ZIP_PASSWORD=2f9fb3a2-96a3-1111-990d-5d6399153e11
ZIP_ATTACHMENT_PASSWORD=b2abc553-1111-4b49-9172-1a94f9072715
#---------------------------------------------------------------------------------------
# TOTP Seed для Aegis, Authy, Ente, GoogleAuth (опционально)
BW_TOTP_SECRET=
# Учётные данные pCloud (опционально)
PCLOUD_USERNAME=
PCLOUD_PASSWORD=
# Учётные данные Mega (опционально)
MEGA_EMAIL=
MEGA_PASSWORD=
# Учётные данные Dropbox (опционально)
DROPBOX_ACCESS_TOKEN=
DROPBOX_REFRESH_TOKEN=
DROPBOX_APP_KEY=
DROPBOX_APP_SECRET=
# Учётные данные Todoist (опционально)
TODOIST_TOKEN=
# Учётные данные CalDAV (опционально)
CALDAV_URL=
CALDAV_USERNAME=
CALDAV_PASSWORD=
# Учётные данные Nextcloud (опционально)
NEXTCLOUD_URL=
NEXTCLOUD_USERNAME=
NEXTCLOUD_PASSWORD=
# Учётные данные Seafile (опционально)
SEAFILE_SERVER_URL=
SEAFILE_USERNAME=
SEAFILE_PASSWORD=
# Учётные данные Filebase (опционально)
FILEBASE_ACCESS_KEY=
FILEBASE_SECRET_KEY=
# Пароль KeePass (опционально)
KEEPASS_PASSWORD=
# Учётные данные Storj (опционально)
STORJ_ACCESS_KEY=
STORJ_SECRET_KEY=
STORJ_ENDPOINT=
# Учётные данные R2 (опционально)
R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
R2_ENDPOINT_URL=
# Учётные данные Vikunja (опционально)
VIKUNJA_API_TOKEN=
VIKUNJA_URL=
# Учётные данные Backblaze B2 (опционально)
B2_APP_KEY_ID=
B2_APP_KEY=
# Настройки Google Drive
GOOGLE_SERVICE_ACCOUNT_FILE=/root/lazywarden/config/bitwarden-drive-backup-google.json
GOOGLE_FOLDER_ID=
# Настройки резервного копирования
BACKUP_DIR=/root/lazywarden/backup-drive/
CRON_SCHEDULE="0 0 23 * *"
TIMEZONE=America/New_York
TIMESTAMP=2024_10_31_13_03_29
# URL API для Bitwarden
API_URL=https://vault.bitwarden.com/api
IDENTITY_URL=https://vault.bitwarden.com/identity
# ID организации
ORGANIZATION_ID=
# Токен доступа для аутентификации Bitwarden
ACCESS_TOKEN=
# Уведомления и оповещения (опционально)
TELEGRAM_TOKEN=
TELEGRAM_CHAT_ID=
DISCORD_WEBHOOK_URL=
SLACK_WEBHOOK_URL=
NTFY_URL=
# Конфигурация SMTP для уведомлений по email (опционально)
SMTP_SERVER=mail.smtp2go.com
SMTP_PORT=8025
SMTP_USERNAME=
SMTP_PASSWORD=
EMAIL_RECIPIENT=
SENDER_EMAIL=
cd lazywarden/scripts
chmod +x setup-ubuntu-env.sh
./setup-ubuntu-env.sh
chmod +x docker-ubuntu.sh
./docker-ubuntu.sh
lazywarden/:cd ..
source venv/bin/activate
bitwarden-cli-install.py, который установит все зависимости CLI:python3 scripts/bitwarden-cli-install.py
Region/City на нужный часовой пояс (например, America/New_York):timedatectl set-timezone Region/City
America/New_York, выполните:timedatectl set-timezone America/New_York
app/ и выполните main.py:cd app
python3 main.py
main.py возникнет ошибка, связанная с отсутствующими или устаревшими библиотеками, рекомендуется выполнить следующую команду для установки всех необходимых зависимостей: pip install -r requirements.txt
cd lazywarden/scripts
chmod +x setup-debian-env.sh
./setup-debian-env.sh
chmod +x docker-debian.sh
./docker-debian.sh
lazywarden/:cd ..
source venv/bin/activate
bitwarden-cli-install.py, который установит все зависимости CLI:python3 scripts/bitwarden-cli-install.py
Region/City на нужный часовой пояс (например, America/New_York):timedatectl set-timezone Region/City
America/New_York, выполните:timedatectl set-timezone America/New_York
app/ и выполните main.py:cd app
python3 main.py
main.py возникнет ошибка, связанная с отсутствующими или устаревшими библиотеками, рекомендуется выполнить следующую команду для установки всех необходимых зависимостей: pip install -r requirements.txt
lazywarden/
├── app/ # Этот каталог содержит основной код приложения
│ ├── backup.py # Функции резервного копирования
│ ├── bitwarden_client.py # Клиент для взаимодействия с Bitwarden
│ ├── config.py # Общие конфигурации приложения
│ ├── imports.py # Обработка общих импортов
│ ├── main.py # Основная точка входа в приложение
│ ├── notifications.py # Обработка уведомлений
│ ├── secrets_manager.py # Управление секретами
│ ├── import_to_bitwarden.py # Импорт вашего хранилища Bitwarden
│ ├── import_to_keepass.py # Создание базы данных kdbx
│ ├── schedule_backup.py # Создание резервных копий по расписанию
├── config/ # Каталог для конфигурационных файлов
│ ├── bitwarden-drive-backup-google.json # Конфигурация для Google Drive
├── scripts/ # Каталог для скриптов установки и настройки
│ ├── bitwarden-cli-install.py # Скрипт для установки Bitwarden CLI
│ ├── docker-debian.sh # Скрипт настройки Debian с Docker
│ ├── docker-ubuntu.sh # Скрипт настройки Ubuntu с Docker
│ ├── setup-debian-env.sh # Настройка окружения для Debian
│ ├── setup-ubuntu-env.sh # Настройка окружения для Ubuntu
│ ├── alldecrypt-zip.py # Дешифровка всех zip-файлов
│ ├── json-only-decrypt.py # Дешифровка только json-файлов (опционально)
├── backup-drive/
│ ├── (Здесь будут храниться сгенерированные локальные резервные копии)
├── .env # Файл с переменными окружения
├── Dockerfile # Файл конфигурации Docker для создания образа приложения
├── docker-compose.yml # Конфигурация Docker Compose
├── entrypoint.sh # Скрипт точки входа для Docker
└── requirements.txt # Файл со списком зависимостей Python проекта
Контейнер Docker будет запускать скрипт main.py каждые 24 часа для резервного копирования Bitwarden и загрузки в настроенные облачные сервисы. Уведомления будут отправляться в указанные сервисы в случае успеха или неудачи. Вы можете изменить частоту резервного копирования в соответствии с вашими потребностями, например, ежемесячно, ежедневно или ежечасно.
services:
lazywarden:
container_name: lazywarden
hostname: lazywarden
image: querylab/lazywarden:latest
env_file:
- .env
environment:
UNLOCK_VAULT: "true"
volumes:
- /root/lazywarden/config:/root/lazywarden/config
- /root/lazywarden/backup-drive:/root/lazywarden/backup-drive/
- /root/lazywarden/.env:/app/.env
restart: unless-stopped
docker compose up -d
Dockerfile настраивает окружение, устанавливает зависимости и копирует необходимые файлы в контейнер.docker-compose.yml определяет сервис lazywarden и настраивает переменные окружения и тома для постоянного хранения данных.bw logout перед входом в новую учётную запись.Я создал Lazywarden для автоматизации резервного копирования Bitwarden без ручного труда и раскрытия конфиденциальных данных. Столкнувшись со сложными инструментами, я использовал Bitwarden Secret Manager для безопасного управления секретами. Lazywarden автоматизирует резервное копирование и загружает их в несколько облачных сервисов (Google Drive, Dropbox, pCloud, MEGA, Seafile, Nextcloud, Filebase, Storj, Cloudflare R2, Backblaze B2), а также интегрируется с Telegram, Discord, Ntfy, Slack, Todoist, Vikunja и CalDAV для уведомлений и отслеживания. Его ключевая особенность — возможность восстанавливать зашифрованные резервные копии обратно в Bitwarden, что делает управление резервным копированием простым, безопасным и эффективным.
Если вам понравился этот проект, поставьте ему ⭐