Lightweight self-hosted version of Bitwarden
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Miroslav Prasil 0260667f7a
Use proper toolchain in Dockerfile
7 years ago
docker Move settings out of web-vault 7 years ago
libs/jsonwebtoken Updated dependencies and removed some warnings from jsonwebtoken 7 years ago
migrations Improved two factor auth 7 years ago
src Updated global domains file 7 years ago
.dockerignore Fixed docker build and implemented automatic creation of JWT signing keys on platforms with OpenSSL (it needs to be on the PATH) 7 years ago
.env Improved configuration and documented options. Implemented option to disable web vault and to disable the use of bitwarden's official icon servers 7 years ago
.gitignore Move settings out of web-vault 7 years ago
Cargo.lock Updated dependencies and created 'rust-toolchain', to mark a working nightly to rustup users, and hopefully avoid some nightly breakage. 7 years ago
Cargo.toml Updated dependencies and created 'rust-toolchain', to mark a working nightly to rustup users, and hopefully avoid some nightly breakage. 7 years ago
Dockerfile Use proper toolchain in Dockerfile 7 years ago
LICENSE.txt Upload and download attachments, and added License file 7 years ago
README.md Updated dependencies and created 'rust-toolchain', to mark a working nightly to rustup users, and hopefully avoid some nightly breakage. 7 years ago
diesel.toml Updated dependencies and created 'rust-toolchain', to mark a working nightly to rustup users, and hopefully avoid some nightly breakage. 7 years ago
rust-toolchain Updated dependencies and created 'rust-toolchain', to mark a working nightly to rustup users, and hopefully avoid some nightly breakage. 7 years ago

README.md

Easy setup (Docker)

Install Docker to your system and then, from the project root, run:

# Build the docker image:
docker build -t dani/bitwarden_rs .

# Run the docker image with a docker volume:
docker volume create bw_data
docker run --name bitwarden_rs -t --init --rm --mount source=bw_data,target=/data -p 8000:80 dani/bitwarden_rs

Other possible Docker options

To run the container in the background, add the -d parameter.

To check the logs when in background, run docker logs bitwarden_rs

To stop the container in background, run docker stop bitwarden_rs

To make sure the container is restarted automatically, add the --restart unless-stopped parameter

To run the image with a host bind, change the --mount parameter to:

--mount type=bind,source=<absolute_path>,target=/data

Where <absolute_path> is an absolute path in the hosts file system (e.g. C:\bitwarden\data)

How to compile bitwarden_rs

Install rust nightly, in Windows the recommended way is through rustup.

Install the openssl library, in Windows the best option is Microsoft's vcpkg, on other systems use their respective package managers.

Then run:

cargo run
# or
cargo build

How to install the web-vault locally

If you're using docker image, you can just update VAULT_VERSION variable in Dockerfile and rebuild the image.

Install node.js and either yarn or npm (usually included with node)

Clone the web-vault outside the project:

git clone https://github.com/bitwarden/web.git web-vault

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 dir:

# With yarn (recommended)
yarn
yarn gulp dist:selfHosted

# With npm
npm install
npx gulp dist:selfHosted

Finally copy the contents of the web-vault/dist folder into the bitwarden_rs/web-vault folder.

How to recreate database schemas

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