docs.md 2.6 KB


title: Bitwarden

1. Prepare the environment

1.1 Create custom webapp called warden in the control panel 1.2 Configure Ruby 2.4 by editing ~/.bash_aliases and adding these aliases

alias ruby=ruby2.4
alias gem=gem2.4

1.3 Install the bundle gem

gem install bundle

2. Install Bitwarden Ruby into the directory

cd ~/webapps
clone https://github.com/jcs/bitwarden-ruby.git warden
cd warden
bundle install

3. Start / Stop / Restart and Cron scripts

3.1 Start script where $PORT is the port of the custom webapp

#!/bin/sh
pgrep -f "ruby2.4 /home/tanshu/gems/bin/rackup -p $PORT config.ru" > /dev/null 2>&1 && exit 0
mkdir -p /home/tanshu/webapps/warden/run
cd /home/tanshu/webapps/warden
nohup env RACK_ENV=production bundle exec rackup -p $PORT config.ru > /dev/null 2>&1 &
sleep 3
pgrep -f "ruby2.4 /home/tanshu/gems/bin/rackup -p $PORT config.ru" > /home/tanshu/webapps/warden/run/ruby.pid

3.2 Stop script where $PORT is the port of the custom webapp

#!/bin/sh
/usr/bin/pkill -f "ruby2.4 /home/tanshu/gems/bin/rackup -p $PORT config.ru" && rm -f /home/tanshu/webapps/warden/run/ruby.pid

3.3 Restart script

#!/bin/bash
$HOME/webapps/warden/bin/stop
sleep 3
$HOME/webapps/warden/bin/start

3.4 Edit crontab using export VISUAL=nano; crontab -e and add the following line

*/20 * * * * ~/webapps/warden/bin/start

4. Backup your database

Install gdrive

Install gdrive to backup the database to google account in case of data loss at webfaction Go to https://github.com/prasmussen/gdrive and download gdrive-linux-x64 in ~/bin/

wget -o ~/bin/gdrive $URL_FOR_GDRIVE_LINUX_X64_BINARY

Make it executable chmod +x ~/bin/gdrive

Setup local directory for upload

mkdir -p ~/Data/warden
cd ~/Data/warden
ln -s ~/webapps/warden/db/production.sqlite3 production.sqlite3

Configure Google Drive

Link your gdrive to the account by running gdrive list and following the instructions.

Create a folder called Bitwarden and get its id by running gdrive list.

Create upload script named bw.sh in the home directory and make it executable chmod +x ~/bw.sh

#!/usr/bin/env bash
cd ~/Data/warden
if sha512sum --status --check production.sha512sum;
then
  echo "File already uploaded. No update needed"
else
  echo "Files are different. Uploading"
  ~/bin/gdrive upload --parent $FOLDER_ID --name production_$(date +%F-%H:%M).sqlite3 ~/Data/warden/production.sqlite3
  sha512sum production.sqlite3 > production.sha512sum
fi

Automate Backups

Edit crontab using export VISUAL=nano; crontab -e and add the following line

0 1 * * * ~/bw.sh