backup-services/bitwarden
Daniel Legt 54a9b3ec5f * Fixed Program Names 2024-01-19 01:23:46 +02:00
..
README.md Readme and License 2024-01-18 15:15:36 +01:00
bitwarden_backup.sh * Fixed Program Names 2024-01-19 01:23:46 +02:00
bitwarden_backup_password_decrypt.example.sh Complete Restructure and gitea 2024-01-18 19:08:49 +02:00
config.example.sh Actually Runnable .sh 2024-01-18 21:28:31 +02:00
required_programs.txt Complete Restructure and gitea 2024-01-18 19:08:49 +02:00

README.md

About

This script has been written to backup a vaultwarden docker-compose instance, this is how I run my own service on my own server, this backup script will target the data folder and of course will also use sqlite to create a .backup of the db.sqlite3 file, to ensure safety.

Requirements

gdrive

gdrive is a command line application for interacting with Google Drive.

Overview

Environment: Docker Compose

Docker Compose File:

version: '3'

services:
  bitwarden:
    image: vaultwarden/server:latest
    ports:
      - 127.0.0.1:90:80
      - 127.0.0.1:91:3012
    user: "${UID}:${GID}"
    volumes:
      - ./data:/data
    restart: unless-stopped
    environment:
      WEBSOCKET_ENABLED: 'true'
      SMTP_HOST: "smtp.gmail.com"
      SMTP_FROM: "xxx@local.lan"
      SMTP_PORT: 587
      SMTP_SECURITY: "starttls"
      SMTP_USERNAME: "xxx@local.lan"
      SMTP_PASSWORD: "xxx"
      DOMAIN: "https://pass.yourdomain.lan"

Directory Structure

/path/to/your/service
├── data
│   ├── attachments
│   ├── db.sqlite3 # Your important database
│   ├── db.sqlite3-shm
│   ├── db.sqlite3-wal
│   ├── icon_cache
│   ├── rsa_key.pem
│   ├── rsa_key.pub.pem
│   ├── sends
│   └── tmp
└── docker-compose.yaml

Restoration Procedure

Simply unzip the backup file, plop the docker-compose with the correct parameters into the same folder and run it, it should pick right back where it was, but in case the database did get corrupt or broken because the backup was running during an operation, simply remote the db.sqlite3-sh and db.sqlite3-wa files, and replace the db.sqplite3 with the one from the zip's top-level, this should work just fine.

Worst case scenario, restore the database from a different point and it will definitely work.