Migrate Kamal secrets from 1Password to Bitwarden (consumer)#25
Merged
Conversation
Preserve the working 1Password setup so future-you can swap back with a single cp. Verbatim copy of .kamal/secrets as of the last 1P-driven deploy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks
Same set of secret keys; only the storage backend changes. All four secrets live in a shared Bitwarden item named `quantic-prod`, with each secret as a custom field on the item. GEMINI_API_KEY is still extracted into LOGO_LLM_GEMINI_API_KEY so the app-level env name stays the same. Why consumer Bitwarden over Bitwarden Secrets Manager (BWS): BWS Free caps at 3 projects per org, which would bite us as more services land. Consumer has no item cap on the free tier. This commit alone breaks deploy until the workflow change in the next commit, so don't deploy from this state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
337363c to
3de9d33
Compare
5 tasks
3de9d33 to
73cca3e
Compare
Replaces the 1Password CLI install step with `npm install -g @bitwarden/cli`, and the `OP_*` env block with `BW_CLIENTID` + `BW_CLIENTSECRET` + `BW_PASSWORD` pulled from repo-level GitHub Actions secrets. env.sample and README updated to reflect the new bootstrap flow. README also documents how to roll back to 1Password using the preserved `.kamal/secrets.1password.example` snapshot. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
73cca3e to
4ebdfa5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second of three coordinated PRs migrating deploy secrets from 1Password to consumer Bitwarden Password Manager (free tier). Sister PRs:
Three commits
.kamal/secretsas.kamal/secrets.1password.example— verbatim, no behaviour change..kamal/secretsto thebitwardenadapter. Same 4 keys (KAMAL_REGISTRY_PASSWORD,LOGO_AUTH_API_KEYS,LOGO_AUTH_ADMIN_KEYS,GEMINI_API_KEY), now fetched from a shared Bitwarden itemquantic-prod(custom fields).bwCLI via npm on each run; env block swapped fromOP_*toBW_*;env.sampleand README updated.Before merging — operator prereqs
See dividend-portfolio#168 for the full setup (same Bitwarden vault covers all three services).
Test plan
bundle exec kamal secrets fetch --adapter bitwarden --from quantic-prod KAMAL_REGISTRY_PASSWORDreturns the valueLOGO_AUTH_API_KEYSreached the container)Rollback
cp .kamal/secrets.1password.example .kamal/secrets # Then revert the workflow change manually.1P vault was never touched.
🤖 Generated with Claude Code