Už som napísal príspevok o zálohe Bitwardenu, práve na túto tému. Spočiatku som uvažoval len o jeho aktualizácii, ako som to urobil s cloudflare zálohou a neskôr s faktury-online zálohou. Po niekoľkých zmenách v tom príspevku som zistil, že som urobil toľko zmien v celej myšlienke aj v samotnom skripte, že stojí za to napísať nový príspevok.
GitHub Action workflow #
Okrem nastavenia secrets je toto jediný skript, ktorý potrebujem. Funguje
bez problémov pre osobné aj firemné účty. Uložte ako
.github/workflows/main.yml a ako vždy aktivujte oprávnenie na zápis pre
GitHub workflows, aby bolo možné pravidelne vytvárať commity.
name: Bitwarden.com backup
on:
workflow_dispatch:
schedule:
- cron: "30 0 * * 0"
jobs:
backup:
runs-on: ubuntu-22.04
env:
BW_CLIENTID: ${{ secrets.BW_CLIENTID }}
BW_CLIENTSECRET: ${{ secrets.BW_CLIENTSECRET }}
BW_PASSWORD: ${{ secrets.BW_PASSWORD }}
BW_ORGANIZATION_ID: ${{ secrets.BW_ORGANIZATION_ID }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: |
npm install
./node_modules/@bitwarden/cli/build/bw.js login --apikey
./node_modules/@bitwarden/cli/build/bw.js export --format json --session $(./node_modules/@bitwarden/cli/build/bw.js unlock --passwordenv BW_PASSWORD --raw) --raw | openssl aes-256-cbc -a -salt -pbkdf2 -k $BW_PASSWORD -out personal.json.enc
./node_modules/@bitwarden/cli/build/bw.js export --format json --session $(./node_modules/@bitwarden/cli/build/bw.js unlock --passwordenv BW_PASSWORD --raw) --raw --organizationid "$BW_ORGANIZATION_ID" | openssl aes-256-cbc -a -salt -pbkdf2 -k "$BW_PASSWORD" -out organization.json.enc
./node_modules/@bitwarden/cli/build/bw.js lock
./node_modules/@bitwarden/cli/build/bw.js logout
- if: ${{ !env.ACT }}
uses: stefanzweifel/git-auto-commit-action@v5
Spustenie lokálne #
Je možné spustiť toto lokálne cez act, no návod je už v predchádzajúcich
príspevkoch, takže tu uvediem len to, čo je bezpodmienečne potrebné:
npm i @bitwarden/cli
npx bw login
Dešifrovanie #
Záloha je uložená v zašifrovanej forme aj v repozitári. Heslo je uložené v GitHub secrets a ak dôjde k napadnutiu vášho účtu, samozrejme ho možno extrahovať, ale hej – 2FA by ste mali mať uložené na inom mieste/zariadení tak či tak. Na dešifrovanie dát pre skutočné použitie spustite nasledovné:
openssl aes-256-cbc -d -a -pbkdf2 -in personal.json.enc -out personal.json
openssl aes-256-cbc -d -a -pbkdf2 -in organization.json.enc -out organization.json
Príjemné používanie!