Skip to content

Add 1Password Encrypted Vault Backup App #97

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jun 4, 2025

Conversation

ag-rdoucette
Copy link
Contributor

Description

This pull request introduces a new web application for securely backing up and restoring 1Password vaults using the 1Password JS SDK and CLI. The app encrypts vault data with Argon2 and AES-256-CBC.

Key features include:

  • Backup: Connects to a 1Password account via a service account token, lists vaults, encrypts selected or all vaults with a user-provided passcode, and generates a downloadable backup.1pbackup file. Encryption keys can be saved to a 1Password vault or downloaded.
  • Restore: Uploads the encrypted backup file, uses the passcode and system key to decrypt, and restores vaults to a destination account, creating new vaults with "(Restored)" appended to names.
  • Security: Implements HTTPS with a self-signed certificate, HMAC-SHA256 for integrity, p-limit for API concurrency control, and retry logic for rate limits.
  • CLI Integration: Uses 1Password CLI for vault creation (not supported by SDK).
  • Dockerized Setup: Runs via Docker Compose for easy deployment.

The app addresses secure vault backup/restore needs but has limitations: passkeys and archived items are not supported, and concurrency is fixed (2 vaults, 1 item at a time). The README provides detailed setup, usage, and troubleshooting instructions.

@ag-rdoucette ag-rdoucette requested review from a team and MOmarMiraj May 15, 2025 12:26
…ssions to the Administrator group when adding keys to a vault.

let createdItem;
try {
if (item.category === 'Document' && item.document) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can match these against the actual ItemCategory type and this goes for everywhere.

@scottisloud
Copy link
Collaborator

Reviewing....

@scottisloud
Copy link
Collaborator

should add data-1p-ignore prop to form elements to avoid 1Password attempting to save values put into fields.

Copy link
Collaborator

@scottisloud scottisloud left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No major changes beyond those already requested. I know you've got some additions to make so not approving officially.

@scottisloud scottisloud requested a review from accraw June 3, 2025 15:16
Copy link
Contributor

@accraw accraw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works for me!

@ag-rdoucette ag-rdoucette merged commit 51d749b into main Jun 4, 2025
@ag-rdoucette ag-rdoucette deleted the solutions/ron/demo-1password-backup-webapp branch June 4, 2025 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants