mirror of
https://github.com/ViViDboarder/bitwarden_rs.git
synced 2024-11-05 04:46:36 +00:00
103 lines
3.4 KiB
Markdown
103 lines
3.4 KiB
Markdown
|
|
# 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/).
|
|
|
|
*(Note: This project is not associated with the [Bitwarden](https://bitwarden.com/) project nor 8bit Solutions LLC.)*
|
|
|
|
# Build/Run
|
|
This project can be built and deployed in two ways:
|
|
|
|
## 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 .
|
|
|
|
# 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.
|
|
|
|
Modify `web-vault/settings.Production.json` to look like this:
|
|
```json
|
|
{
|
|
"appSettings": {
|
|
"apiUri": "/api",
|
|
"identityUri": "/identity",
|
|
"iconsUri": "/icons",
|
|
"stripeKey": "",
|
|
"braintreeKey": ""
|
|
}
|
|
}
|
|
```
|
|
|
|
Then, run the following from the `web-vault` directory:
|
|
```sh
|
|
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)
|
|
Install diesel-cli with cargo:
|
|
```sh
|
|
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:
|
|
```sh
|
|
diesel migration redo
|
|
|
|
# This step should be done automatically when using diesel-cli > 1.3.0
|
|
# diesel print-schema > src/db/schema.rs
|
|
```
|