docker | ||
libs/jsonwebtoken | ||
migrations | ||
src | ||
.dockerignore | ||
.env | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
diesel.toml | ||
Dockerfile | ||
LICENSE.txt | ||
README.md | ||
rust-toolchain |
Bitwarden_RS
This project is an unofficial implementation of the Bitwarden Core Server written in Rust.
(Note: This project is not associated with the Bitwarden project nor 8bit Solutions LLC.)
Build/Run
This project can be built and deployed in two ways:
Docker Setup (Easy)
Install Docker to your system and then, from the project root, run:
# Build the docker image:
docker build -t bitwarden_rs .
# Run the docker image with a docker volume:
docker run --name bitwarden_rs -t --rm -v bw_data:/data -p 80:80 bitwarden_rs
Then visit http://localhost:80
Manual Setup (Advanced)
Dependencies
Rust nightly
(strongly recommended to use rustup)OpenSSL
(should be available in path, install through your system's package manager or use the prebuilt binaries)NodeJS
(required to build the web-vault, (install through your system's package manager or use the prebuilt binaries)
Install the web-vault
Download the latest official release from the releases page and extract it.
Modify web-vault/settings.Production.json
to look like this:
{
"appSettings": {
"apiUri": "/api",
"identityUri": "/identity",
"iconsUri": "/icons",
"stripeKey": "",
"braintreeKey": ""
}
}
Then, run the following from the web-vault
directory:
npm install
npx gulp dist:selfHosted
Finally copy the contents of the web-vault/dist
folder into the bitwarden_rs/web-vault
folder.
Running
cargo run
Then visit http://localhost:80
How to recreate database schemas (for developers)
Install diesel-cli with cargo:
cargo install diesel_cli --no-default-features --features sqlite-bundled
Make sure that the correct path to the database is in the .env
file.
If you want to modify the schemas, create a new migration with:
diesel migration generate <name>
Modify the *.sql files, making sure that any changes are reverted in the down.sql file.
Apply the migrations and save the generated schemas as follows:
diesel migration redo
# This step should be done automatically when using diesel-cli > 1.3.0
# diesel print-schema > src/db/schema.rs