bitwarden_rs/README.md

103 lines
3.4 KiB
Markdown
Raw Normal View History

# Bitwarden_RS
This project is an unofficial implementation of the [Bitwarden Core Server](https://github.com/bitwarden/core) written in [Rust](https://www.rust-lang.org/).
2018-02-10 00:00:55 +00:00
*(Note: This project is not associated with the [Bitwarden](https://bitwarden.com/) project nor 8bit Solutions LLC.)*
2018-02-10 00:00:55 +00:00
# Build/Run
This project can be built and deployed in two ways:
2018-02-10 00:00:55 +00:00
## Docker Setup (Easy)
Install [Docker](https://www.docker.com/) to your system and then, from the project root, run:
```sh
# Build the docker image:
docker build -t bitwarden_rs .
2018-02-10 00:00:55 +00:00
# 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](http://localhost:80)
## Manual Setup (Advanced)
### Dependencies
- `Rust nightly` (strongly recommended to use [rustup](https://rustup.rs/))
- `OpenSSL` (should be available in path, install through your system's package manager or use the [prebuilt binaries](https://wiki.openssl.org/index.php/Binaries))
- `NodeJS` (required to build the web-vault, (install through your system's package manager or use the [prebuilt binaries](https://nodejs.org/en/download/))
### Install the web-vault
Download the latest official release from the [releases page](https://github.com/bitwarden/web/releases) and extract it.
2018-02-10 00:00:55 +00:00
2018-02-17 17:48:42 +00:00
Modify `web-vault/settings.Production.json` to look like this:
2018-02-10 00:00:55 +00:00
```json
{
"appSettings": {
"apiUri": "/api",
"identityUri": "/identity",
"iconsUri": "/icons",
"stripeKey": "",
"braintreeKey": ""
}
}
```
Then, run the following from the `web-vault` directory:
```sh
2018-02-10 00:00:55 +00:00
npm install
npx gulp dist:selfHosted
```
Finally copy the contents of the `web-vault/dist` folder into the `bitwarden_rs/web-vault` folder.
### Running
```sh
cargo run
```
Then visit [http://localhost:80](http://localhost:80)
# Configuration
The available configuration options are documented in the default `.env` file, and they can be modified by uncommenting the desired options in that file or by setting their respective environment variables.
Note: the environment variables override the values set in the `.env` file.
## Disabling user registrations
To disable user registrations, you can uncomment the `SIGNUPS_ALLOWED` line in the `.env` file and change the value to `false`.
You could also set the `SIGNUPS_ALLOWED` environment variable. To do that when using Docker, add the following line to the end of the `docker run` command:
```
-e SIGNUPS_ALLOWED=false
```
## Enabling HTTPS
To enable HTTPS, you need to configure the `ROCKET_TLS` option, the same way as `SIGNUPS_ALLOWED`.
The values to the option must follow the format:
```
ROCKET_TLS={certs="/path/to/certs.pem",key="/path/to/key.pem"}
```
Where:
- certs: a path to a certificate chain in PEM format
- key: a path to a private key file in PEM format for the certificate in certs
## How to recreate database schemas (for developers)
2018-02-10 00:00:55 +00:00
Install diesel-cli with cargo:
```sh
cargo install diesel_cli --no-default-features --features sqlite-bundled
2018-02-10 00:00:55 +00:00
```
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.
2018-02-10 00:00:55 +00:00
Apply the migrations and save the generated schemas as follows:
```sh
2018-02-10 00:00:55 +00:00
diesel migration redo
# This step should be done automatically when using diesel-cli > 1.3.0
# diesel print-schema > src/db/schema.rs
2018-02-10 00:00:55 +00:00
```