{"id":18382144,"url":"https://github.com/querylab/lazywarden","last_synced_at":"2025-04-06T23:31:27.434Z","repository":{"id":259727670,"uuid":"860626558","full_name":"querylab/lazywarden","owner":"querylab","description":"Automatic Bitwarden Backup","archived":false,"fork":false,"pushed_at":"2024-11-14T23:33:56.000Z","size":101,"stargazers_count":718,"open_issues_count":20,"forks_count":18,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-01T20:27:06.336Z","etag":null,"topics":["backup","bitwarden","encryption","server","vaultwarden"],"latest_commit_sha":null,"homepage":"https://lazywarden.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/querylab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-20T19:50:53.000Z","updated_at":"2025-03-31T15:02:44.000Z","dependencies_parsed_at":"2024-11-15T00:24:21.238Z","dependency_job_id":"d7e75396-4414-47f0-ad6c-9d238ce0e054","html_url":"https://github.com/querylab/lazywarden","commit_stats":null,"previous_names":["querylab/lazywarden"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/querylab%2Flazywarden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/querylab%2Flazywarden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/querylab%2Flazywarden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/querylab%2Flazywarden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/querylab","download_url":"https://codeload.github.com/querylab/lazywarden/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247569123,"owners_count":20959758,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","bitwarden","encryption","server","vaultwarden"],"created_at":"2024-11-06T01:02:26.243Z","updated_at":"2025-04-06T23:31:27.422Z","avatar_url":"https://github.com/querylab.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n  \u003ca href=\"https://imgur.com/k4VWmn7\"\u003e\r\n    \u003cimg src=\"https://i.imgur.com/k4VWmn7.png\" title=\"source: imgur.com\" width=\"350\" /\u003e\r\n  \u003c/a\u003e\r\n\u003c/div\u003e\r\n\r\n## Secure, Automated, and Multi-Cloud Bitwarden Backup and Import System\r\n\r\nLazywarden is a Python automation tool designed to Backup and Restore data from your vault, including Bitwarden attachments. It allows you to upload backups to multiple cloud storage services and receive notifications across multiple platforms. It also offers AES encrypted backups and uses key derivation with Argon2, ensuring maximum security for your data.\r\n\r\n## \u003cspan style=\"display: flex; align-items: center;\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/start.gif\" width=\"50\" style=\"vertical-align: middle; margin-right: 10px;\"\u003e Features\u003c/span\u003e\r\n\r\n- 🔒 **Maximum Security:** Data protection with AES-256 encryption and Argon2 key derivation.\r\n- 🔄 **Automated Backups and Imports:** Keep your Bitwarden vault up to date and secure.\r\n- ✅ **Integrity Verification:** SHA-256 hash to ensure data integrity on every backup.\r\n- ☁️ **Multi-Cloud Support:** Store backups to services such as Dropbox, Google Drive, pCloud, MEGA, NextCloud, Seafile, Storj, Cloudflare R2, Backblaze B2, Filebase (IPFS) and via SMTP.\r\n- 🖥️ **Local Storage:** Save backups to a local path for greater control.\r\n- 🔔 **Real-Time Alerts:** Instant notifications on Discord, Telegram, Ntfy and Slack.\r\n- 🗓️ **Schedule Management:** Integration with CalDAV, Todoist and Vikunja to manage your schedule.\r\n- 🐳 **Easy Deployment:** Quick setup with Docker Compose.\r\n- 🤖 **Full Automation and Custom Scheduling:** Automatic backups with flexible scheduling options (daily, weekly, monthly, yearly). Integration with CalDAV, Todoist and Vikunja for complete tracking and email notifications.\r\n- 🔑 **Bitwarden Export to KeePass:** Export Bitwarden items to a KeePass database (kdbx), including TOTP-seeded logins, URI, custom fields, card, identity attachments and secure notes.\r\n\r\n## \u003cspan style=\"display: inline-flex; align-items: center;\"\u003e\u003cimg src=\"https://media.tenor.com/-AyTtMgs2mMAAAAi/nyan-cat-nyan.gif\" width=\"60\" style=\"vertical-align: middle; margin-right: 10px;\"\u003e Platform Compatibility\u003c/span\u003e\r\n\r\n\r\n\u003cdiv style=\"display: flex; justify-content: space-around;\"\u003e\r\n    \u003ca href=\"https://imgur.com/Xz2k5O8\"\u003e\u003cimg src=\"https://i.imgur.com/Xz2k5O8.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/9oZa9uU\"\u003e\u003cimg src=\"https://imgur.com/9oZa9uU.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/jWZzbvl\"\u003e\u003cimg src=\"https://imgur.com/jWZzbvl.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/O0PZyxN\"\u003e\u003cimg src=\"https://i.imgur.com/O0PZyxN.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/59ktW6q\"\u003e\u003cimg src=\"https://imgur.com/59ktW6q.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/aa100eH\"\u003e\u003cimg src=\"https://i.imgur.com/aa100eH.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/Grlq9aN\"\u003e\u003cimg src=\"https://i.imgur.com/Grlq9aN.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/UYGpfR8\"\u003e\u003cimg src=\"https://i.imgur.com/UYGpfR8.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/SVshyRn\"\u003e\u003cimg src=\"https://imgur.com/SVshyRn.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/G37MsuK\"\u003e\u003cimg src=\"https://i.imgur.com/G37MsuK.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/XpWPF0w\"\u003e\u003cimg src=\"https://i.imgur.com/XpWPF0w.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/YMGE85n\"\u003e\u003cimg src=\"https://i.imgur.com/YMGE85n.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/w9PULK5\"\u003e\u003cimg src=\"https://i.imgur.com/w9PULK5.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/hjuaEcF\"\u003e\u003cimg src=\"https://i.imgur.com/hjuaEcF.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/BhI5DBR\"\u003e\u003cimg src=\"https://imgur.com/BhI5DBR.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/krgaizW\"\u003e\u003cimg src=\"https://imgur.com/krgaizW.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/hRwMM9n\"\u003e\u003cimg src=\"https://imgur.com/hRwMM9n.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/zdTnwat\"\u003e\u003cimg src=\"https://imgur.com/zdTnwat.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/i1hBmAD\"\u003e\u003cimg src=\"https://imgur.com/i1hBmAD.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://imgur.com/DTXNqTW\"\u003e\u003cimg src=\"https://imgur.com/DTXNqTW.png\" title=\"source: imgur.com\" width=\"30\"/\u003e\u003c/a\u003e\r\n\r\n## \u003cspan style=\"display: inline-flex; align-items: center;\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/74038190/212257472-08e52665-c503-4bd9-aa20-f5a4dae769b5.gif\" width=\"36\" style=\"vertical-align: middle; margin-right: 10px;\"\u003e Demo Backup\u003c/span\u003e\r\n\r\n\r\n\u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/lazy-oficial.gif\" /\u003e\r\n\r\n\u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/lazy-video.gif\" /\u003e\r\n\r\n\r\n## \u003cspan style=\"display: inline-flex; align-items: center;\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/server2.gif\" width=\"50\" style=\"vertical-align: middle; margin-right: 10px;\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/process2.gif\" width=\"50\" style=\"vertical-align: middle; margin-right: 15px;\"\u003e System Requirements \u003c/span\u003e\r\n- **Operating System**: Compatible with major Linux distributions\r\n\r\n\t- ✅ Ubuntu\r\n\t- ✅ Debian\r\n\r\n## \u003cspan style=\"display: inline-flex; align-items: center;\"\u003e\u003cimg src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"60\" style=\"vertical-align: middle; margin-right: 15px;\"\u003eInstallation\u003c/span\u003e\r\n###  Clone the repository\r\n\r\n ``` BASH\r\n    git clone https://github.com/querylab/lazywarden.git\r\n    cd lazywarden\r\n```\r\n\r\n### Configure Environment Variables \u0026 Bitwarden Secrets Manager\r\n\r\n- Create a `.env` file based on the on this `.env.sample` example file and fill in the necessary variables.\r\n\r\n``` BASH\r\n#---------------------------------------------------------------------------------------\r\n# These are the 6 variables that are mandatory requirements for Bitwarden Secret Manager\r\nBW_URL=f22bba66-e55d-1111-9a93-abf0dfad069e\r\nBW_USERNAME=5eb0f2bb-1111-4e42-94f8-9333fda803cf\r\nBW_PASSWORD=ba4dc990-1111-4d18-ae6b-0b899d513759\r\nENCRYPTION_PASSWORD=103c803c-1111-40d4-8578-8b3134c6e93e\r\nZIP_PASSWORD=2f9fb3a2-96a3-1111-990d-5d6399153e11\r\nZIP_ATTACHMENT_PASSWORD=b2abc553-1111-4b49-9172-1a94f9072715\r\n\r\n#---------------------------------------------------------------------------------------\r\n\r\n# TOTP Seed for Aegis,Authy,Ente,GoogleAuth (Optional)\r\nBW_TOTP_SECRET=\r\n\r\n# pCloud Credentials (Optional)\r\nPCLOUD_USERNAME=\r\nPCLOUD_PASSWORD=\r\n\r\n# Mega Credentials (Optional)\r\nMEGA_EMAIL=\r\nMEGA_PASSWORD=\r\n\r\n# Dropbox Credentials (Optional)\r\nDROPBOX_ACCESS_TOKEN=\r\nDROPBOX_REFRESH_TOKEN=\r\nDROPBOX_APP_KEY=\r\nDROPBOX_APP_SECRET=\r\n\r\n# Todoist Credentials (Optional)\r\nTODOIST_TOKEN=\r\n\r\n# CalDAV Credentials (Optional)\r\nCALDAV_URL=\r\nCALDAV_USERNAME=\r\nCALDAV_PASSWORD=\r\n\r\n# Nextcloud Credentials (Optional)\r\nNEXTCLOUD_URL=\r\nNEXTCLOUD_USERNAME=\r\nNEXTCLOUD_PASSWORD=\r\n\r\n# Seafile Credentials (Optional)\r\nSEAFILE_SERVER_URL=\r\nSEAFILE_USERNAME=\r\nSEAFILE_PASSWORD=\r\n\r\n# Filebase Credentials (Optional)\r\nFILEBASE_ACCESS_KEY=\r\nFILEBASE_SECRET_KEY=\r\n\r\n# KeePass Password (Optional)\r\nKEEPASS_PASSWORD=\r\n\r\n# Storj Credentials (Optional)\r\nSTORJ_ACCESS_KEY=\r\nSTORJ_SECRET_KEY=\r\nSTORJ_ENDPOINT=\r\n\r\n# R2 Credentials (Optional)\r\nR2_ACCESS_KEY_ID=\r\nR2_SECRET_ACCESS_KEY=\r\nR2_ENDPOINT_URL=\r\n\r\n# Vikunja Credentials (Optional)\r\nVIKUNJA_API_TOKEN=\r\nVIKUNJA_URL=\r\n\r\n# Backblaze B2 Credentials (Optional)\r\nB2_APP_KEY_ID=\r\nB2_APP_KEY=\r\n\r\n# Google Drive Settings\r\nGOOGLE_SERVICE_ACCOUNT_FILE=/root/lazywarden/config/bitwarden-drive-backup-google.json\r\nGOOGLE_FOLDER_ID=\r\n\r\n# Backup Settings\r\nBACKUP_DIR=/root/lazywarden/backup-drive/\r\nCRON_SCHEDULE=\"0 0 23 * *\"\r\nTIMEZONE=America/New_York\r\nTIMESTAMP=2024_10_31_13_03_29\r\n\r\n  \r\n# API URLs for Bitwarden\r\nAPI_URL=https://vault.bitwarden.com/api\r\nIDENTITY_URL=https://vault.bitwarden.com/identity\r\n\r\n# Organization ID\r\nORGANIZATION_ID=\r\n\r\n# Access Token for Bitwarden Authentication\r\nACCESS_TOKEN=\r\n\r\n# Notifications and Alerts (Optional)\r\nTELEGRAM_TOKEN=\r\nTELEGRAM_CHAT_ID=\r\nDISCORD_WEBHOOK_URL=\r\nSLACK_WEBHOOK_URL=\r\nNTFY_URL=\r\n\r\n# SMTP Configuration for Email Notifications (Optional)\r\nSMTP_SERVER=mail.smtp2go.com\r\nSMTP_PORT=8025\r\nSMTP_USERNAME=\r\nSMTP_PASSWORD=\r\nEMAIL_RECIPIENT=\r\nSENDER_EMAIL=\r\n```\r\n\r\n### \u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/ubuntu.gif\" width=\"20\" style=\"vertical-align: middle;\"\u003e Ubuntu Configuration\r\n\r\n- Run the script to install all system dependencies and requirements\r\n \r\n``` BASH\r\ncd lazywarden/scripts\r\nchmod +x setup-ubuntu-env.sh\r\n./setup-ubuntu-env.sh\r\n```\r\n\r\n\r\n- Run this script to automatically install Docker \u0026 Docker-Compose:\r\n\r\n```BASH\r\nchmod +x docker-ubuntu.sh\r\n./docker-ubuntu.sh\r\n```\r\n\r\n- First, ensure you are in the root directory of the project `lazywarden/`:\r\n\r\n``` BASH\r\ncd .. \r\nsource venv/bin/activate\r\n```\r\n\r\n- Now Install Bitwarden CLI using the `bitwarden-cli-install.py` script, which will install all CLI dependencies:\r\n\r\n``` PYTHON\r\npython3 scripts/bitwarden-cli-install.py\r\n```\r\n\r\n\r\n- Change the system timezone using the following command. Replace `Region/City` with the desired timezone (e.g., `America/New_York`):\r\n\r\n``` BASH\r\ntimedatectl set-timezone Region/City\r\n```\r\n\r\n\r\n- For example, to set the timezone to `America/New_York`, you would run:\r\n\r\n``` BASH\r\ntimedatectl set-timezone America/New_York\r\n```\r\n\r\n\r\n- Run the Lazywarden program. Navigate to the `app/` folder and execute `main.py`:\r\n\r\n``` PYTHON\r\ncd app\r\npython3 main.py\r\n```\r\n\r\n- In Ubuntu, if you encounter an error when running `main.py`, it may be related to missing or outdated libraries. To fix this, I recommend running the following command to install all the necessary dependencies:\r\n\r\n``` PYTHON\r\n pip install -r requirements.txt\r\n```\r\n\r\n---\r\n\r\n### \u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/debian.png\" width=\"20\" style=\"vertical-align: middle;\"\u003e Debian Configuration\r\n\r\n - Run the script to install all system dependencies and requirements:\r\n \r\n``` BASH\r\ncd lazywarden/scripts\r\nchmod +x setup-debian-env.sh\r\n./setup-debian-env.sh\r\n```\r\n\r\n- Run this script to automatically install Docker \u0026 Docker-Compose:\r\n\r\n```BASH\r\nchmod +x docker-debian.sh\r\n./docker-debian.sh\r\n```\r\n\r\n- First, ensure you are in the root directory of the project `lazywarden/`:\r\n\r\n``` BASH\r\ncd .. \r\nsource venv/bin/activate\r\n```\r\n\r\n- Install Bitwarden CLI using the `bitwarden-cli-install.py` script, which will install all CLI dependencies:\r\n\r\n``` PYTHON\r\npython3 scripts/bitwarden-cli-install.py\r\n```\r\n\r\n- Change the system timezone using the following command. Replace `Region/City` with the desired timezone (e.g., `America/New_York`):\r\n\r\n``` BASH\r\ntimedatectl set-timezone Region/City\r\n```\r\n\r\n\r\n- For example, to set the timezone to `America/New_York`, you would run:\r\n\r\n``` BASH\r\ntimedatectl set-timezone America/New_York\r\n```\r\n\r\n\r\n- Run the Lazywarden program. Navigate to the `app/` folder and execute `main.py`:\r\n\r\n``` PYTHON\r\ncd app\r\npython3 main.py\r\n```\r\n\r\n- In Debian, if you encounter an error when running `main.py`, it may be related to missing or outdated libraries. To fix this, I recommend running the following command to install all the necessary dependencies:\r\n\r\n``` PYTHON\r\n pip install -r requirements.txt\r\n```\r\n\r\n\r\n### \u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/tree2.gif\" width=\"30\" style=\"vertical-align: middle;\"\u003eTree Structure \r\n\r\n``` PYTHON\r\n\r\nlazywarden/\r\n├── app/                           # This directory to contain the main application code\r\n│   ├── backup.py                  # Backup functions\r\n│   ├── bitwarden_client.py        # Client to interact with Bitwarden\r\n│   ├── config.py                  # General application configurations\r\n│   ├── imports.py                 # Handles common imports\r\n│   ├── main.py                    # Main entry point of the application\r\n│   ├── notifications.py           # Handles notifications\r\n│   ├── secrets_manager.py         # Manages secrets\r\n│   ├── import_to_bitwarden.py     # Import your bitwarden vault\r\n│   ├── import_to_keepass.py       # Create kdbx database \r\n│   ├── schedule_backup.py         # For create Schedule Backup\r\n├── config/                        # Directory for configuration files\r\n│   ├── bitwarden-drive-backup-google.json # Configuration for Google Drive\r\n├── scripts/                       # Directory for installation and setup scripts\r\n│   ├── bitwarden-cli-install.py   # Script to install the Bitwarden CLI\r\n│   ├── docker-debian.sh           # Setup script for Debian with Docker\r\n│   ├── docker-ubuntu.sh           # Setup script for Ubuntu with Docker\r\n│   ├── setup-debian-env.sh        # Environment setup for Debian\r\n│   ├── setup-ubuntu-env.sh        # Environment setup for Ubuntu\r\n│   ├── alldecrypt-zip.py          # Decrypt all zip files \r\n│   ├── json-only-decrypt.py       # Decrypt only json files (optional)\r\n├── backup-drive/\r\n│   ├── (This is where the generated backups will be stored local)\r\n├── .env                           # File for environment variables\r\n├── Dockerfile                     # Docker configuration file to create an application image\r\n├── docker-compose.yml             # Docker Compose Configuration\r\n├── entrypoint.sh                  # Entrypoint script for Docker\r\n└── requirements.txt               # File that lists the project Python dependencies\r\n\r\n\r\n```\r\n\r\n\r\n\r\n\r\n### \u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/whale1.gif\" width=\"30\" style=\"vertical-align: middle;\"\u003e Docker Compose\r\n\r\nThe Docker container will run the `main.py` script every 24 hours to back up Bitwarden and upload it to the configured cloud services. Notifications will be sent to the specified services in case of success or failure. You can modify the backup frequency according to your needs, such as monthly, daily, or hourly.\r\n\r\n``` YAML\r\nservices:\r\n  lazywarden:\r\n    container_name: lazywarden\r\n    hostname: lazywarden\r\n    image: querylab/lazywarden:latest\r\n    env_file:\r\n      - .env\r\n    environment:\r\n      UNLOCK_VAULT: \"true\"\r\n    volumes:\r\n      - /root/lazywarden/config:/root/lazywarden/config\r\n      - /root/lazywarden/backup-drive:/root/lazywarden/backup-drive/\r\n      - /root/lazywarden/.env:/app/.env\r\n    restart: unless-stopped\r\n```\r\n\r\n#### Run Docker Compose\r\n\r\n- Run the Docker container\r\n\r\n```DOCKER\r\ndocker compose up -d\r\n```\r\n\r\n#### Dockerfile\r\n\r\n- The `Dockerfile` sets up the environment, installs dependencies, and copies necessary files into the container.\r\n\r\n#### docker-compose.yml\r\n\r\n- The `docker-compose.yml` file defines the lazywarden service and sets up environment variables and volumes for persistent storage.\r\n\r\n### \u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/alert1.gif\" width=\"30\" style=\"vertical-align: middle;\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/cloud1.gif\" width=\"30\" style=\"vertical-align: middle;\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/querylab/svg/main/process2.gif\" width=\"30\" style=\"vertical-align: middle;\"\u003e Security Recommendation: Run in Local Environment \r\n\r\n- For security, run this project only in a local environment within your personal network. This significantly reduces the risk of exposure to external attacks, ensuring that sensitive data and credentials remain protected within a controlled environment.\r\n\r\n\r\n### 📢 Warning\r\n\r\n##### **Important Note**\r\n\r\n- Large attachments in your Bitwarden account (e.g., MP4 videos, MP3 files, high-resolution photos) may cause the backup process to take longer. Uploading these larger backups to cloud services will also be slower. Local storage and importing data are much faster in comparison.\r\n- A high number of attachments can significantly extend the total backup time. Upload errors may occur when sending files to Dropbox, Google Drive, pCloud, MEGA, Seafile, Nextcloud, Storj, Cloudflare R2, Backblaze B2, or Filebase. If an error occurs, retrying the backup often resolves the issue.\r\n- Configuring the Bitwarden Secret Manager is required for the program to function correctly. Even if you don't have an account, you must set a random variable to ensure proper operation.\r\n- This program is compatible with both self-hosted Bitwarden and Vaultwarden instances.\r\n- Import functionality for Vaultwarden and self-hosted Bitwarden is not yet implemented in the Bitwarden API.\r\n- CalDAV calendar integration has only been tested with the following providers: [Baikal](https://github.com/sabre-io/Baikal), [Fruux](https://fruux.com), [Memotoo](https://www.memotoo.com), [Posteo](https://posteo.de), and [SOGo](https://www.sogo.nu/).\r\n- Rotate the secrets stored in Bitwarden Secret Manager regularly for enhanced security.\r\n- If you switch Bitwarden Accounts, make sure to run the `bw logout` command before logging into a new account.\r\n- I run the program using the root user.\r\n\r\n\r\n\r\n\r\n### \u003cspan style=\"display: inline-flex; align-items: center;\"\u003e \u003cimg src=\"https://user-images.githubusercontent.com/74038190/216122069-5b8169d7-1d8e-4a13-b245-a8e4176c99f8.png\" width=\"30\" style=\"vertical-align: middle; margin-right: 10px;\"\u003e Motivations \u003c/span\u003e\r\n\r\n- I created Lazywarden to Automate Bitwarden Backups without manual effort or exposing sensitive data. After struggling with complex tools, I leveraged Bitwarden Secret Manager to securely manage secrets. Lazywarden automates backups and uploads them to multiple cloud services (Google Drive, Dropbox, pCloud, MEGA, Seafile, Nextcloud, Filebase, Storj, Cloudflare R2, Backblaze B2), and integrates with Telegram, Discord, Ntfy, Slack, Todoist, Vikunja, and CalDAV for notifications and tracking. Its standout feature is the ability to restore encrypted backups back into Bitwarden, making backup management simple, secure, and efficient.\r\n\r\n- If you like this project, please consider giving it a ⭐\r\n\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003ca href=\"https://imgur.com/k4VWmn7\"\u003e\r\n    \u003cimg src=\"https://user-images.githubusercontent.com/74038190/216644507-4f06ea29-bf55-4356-aac0-d42751461a9d.gif\" title=\"source: imgur.com\" width=\"150\" /\u003e\r\n  \u003c/a\u003e\r\n\u003c/div\u003e\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquerylab%2Flazywarden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquerylab%2Flazywarden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquerylab%2Flazywarden/lists"}