What is Bitwarden?
Bitwarden is a free and open-source password management service that stores sensitive information such as website credentials in an encrypted vault. The Bitwarden platform offers a variety of client applications including a web interface, desktop applications, browser extensions, mobile apps, and a CLI. Bitwarden offers a cloud-hosted service as well as the ability to deploy the solution on-premises. - https://en.wikipedia.org/wiki/Bitwarden
Install Bitwarden/Vaultwarden
Log into the Linux device
Run the following commands in a terminal window
# update software repositories sudo apt update # install available software updates sudo apt upgrade -y # install prerequisites sudo apt install git curl build-essential pkg-config libssl-dev openssl libssl1.1 libmariadb-dev-compat libmariadb-dev -y # add nodejs software repository curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - # install nodejs sudo apt install nodejs -y # install rust, enter 1 at the prompt curl https://sh.rustup.rs -sSf | sudo sh # configure the shell source $HOME/.cargo/env # clone vaultwarden from git git clone https://github.com/dani-garcia/vaultwarden.git ./vaultwarden # cd into the new directory cd vaultwarden/ # checkout latest version git checkout "$(git tag --sort=v:refname | tail -n1)" # build vaultwarden with mysql support cargo build --features mysql,sqlite --release # cd back one directory cd .. # clone web from git git clone https://github.com/bitwarden/web.git ./web # cd into the new web cd web/ # checkout the latest version git checkout "$(git tag --sort=v:refname | tail -n1)" # update submodule git submodule update --init --recursive # download web patch wget https://raw.githubusercontent.com/dani-garcia/bw_web_builds/master/patches/$(git tag --sort=v:refname | tail -n1).patch # apply patch git apply $(git tag --sort=v:refname | tail -n1).patch --verbose # clean npm cache npm cache clean --force # initialize npm npm run sub:init # install npm dependencies npm install # fix npm vulnerabilities npm audit fix # build web vault npm run dist:bit:selfhost # copy the build directory into vaultwarden/web-vault cp -a build ../vaultwarden/target/release/web-vault # cd into vaultwarden cd ../vaultwarden/target/release/ # create a data directory mkdir data # run vaultwarden ./vaultwarden
Open a web browser and navigate to https://DNSorIP:8000
Click the Create Account button
Complete the form by entering an Email Address, Name, Master Password and Password Hint (optional) > Click Submit
Login with the account created in the last step
Welcome to your self-hosted Bitwarden password vault
Run Bitwarden/Vaultwarden as a Service (Optional, but recommended)
Press CTRL + C to kill the running Vaultwarden process
Continue with the following steps to run Vaultwarden as a service
# cd to vaultwarden/target/release cd ~/vaultwarden/target/release # copy the .env template sudo cp ../../.env.template /etc/vaultwarden.env # copy vaultwarden executable sudo cp vaultwarden /usr/bin/vaultwarden # make vaultwarden executable sudo chmod +x /usr/bin/vaultwarden # create vaultwarden user sudo useradd -m -d /var/lib/vaultwarden vaultwarden # copy existing data directory sudo cp -R data /var/lib/vaultwarden/ # copy web-vault directory sudo cp -R web-vault /var/lib/vaultwarden/ # set ownership permissions sudo chown -R vaultwarden:vaultwarden /var/lib/vaultwarden # create service file sudo nano /etc/systemd/system/vaultwarden.service
Paste the following configuration into vaultwarden.service
[Unit]
Description=Vaultwarden Server
# Only sqlite
After=network.target
[Service]
User=vaultwarden
Group=vaultwarden
EnvironmentFile=/etc/vaultwarden.env
ExecStart=/usr/bin/vaultwarden
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
WorkingDirectory=/var/lib/vaultwarden
ReadWriteDirectories=/var/lib/vaultwarden
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
Press CTRL+O, Enter, CTRL+X to write the changes to vaultwarden.service
Continue with the following commands to enable the site and start vaultwarden:
# reload systemd services sudo systemctl daemon-reload # start vaultwarden service on boot and now sudo systemctl enable vaultwarden --now
Refresh the open web browser to verify Bitwarden is accessible