1
0
Fork 1
Spiegel von https://github.com/dani-garcia/vaultwarden.git synchronisiert 2024-11-24 05:30:28 +01:00
vaultwarden/README.md

148 Zeilen
5 KiB
Markdown

2018-05-25 22:05:37 +02:00
This is Bitwarden server API implementation written in rust compatible with [upstream Bitwarden clients](https://bitwarden.com/#download)*, ideal for self-hosted deployment where running official resource-heavy service might not be ideal.
Image is based on [Rust implementation of Bitwarden API](https://github.com/dani-garcia/bitwarden_rs).
_*Note, that this project is not associated with the [Bitwarden](https://bitwarden.com/) project nor 8bit Solutions LLC._
## Features
Basically full implementation of Bitwarden API is provided including:
* Basic single user functionality
* Organizations support
* Attachments
* Vault API support
* Serving the static files for Vault interface
* Website icons API
2018-05-25 17:15:31 +02:00
## Docker image usage
### Starting a container
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
The persistent data is stored under /data inside the container, so the only requirement for persistent deployment using Docker is to mount persistent volume at the path:
```
docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 mprasil/bitwarden:latest
```
2018-05-25 17:15:31 +02:00
This will preserve any persistent data under `/bw-data/`, you can adapt the path to whatever suits you.
2018-05-25 17:15:31 +02:00
The service will be exposed on port 80.
2018-05-25 17:15:31 +02:00
### Updating the bitwarden image
2018-05-25 17:15:31 +02:00
Updating is straightforward, you just make sure to preserve the mounted volume. If you used the bind-mounted path as in the example above, you just need to `pull` the latest image, `stop` and `rm` the current container and then start a new one the same way as before:
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
```sh
# Pull the latest version
docker pull mprasil/bitwarden:latest
# Stop and remove the old container
docker stop bitwarden
docker rm bitwarden
2018-05-25 17:15:31 +02:00
# Start new container with the data mounted
docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 mprasil/bitwarden:latest
```
2018-05-25 17:15:31 +02:00
In case you didn't bind mount the volume for persistent data, you need an intermediate step where you preserve the data with an intermediate container:
```sh
# Pull the latest version
docker pull mprasil/bitwarden:latest
# Create intermediate container to preserve data
docker run --volumes-from bitwarden --name bitwarden_data busybox true
# Stop and remove the old container
docker stop bitwarden
docker rm bitwarden
# Start new container with the data mounted
docker run -d --volumes-from bitwarden_data --name bitwarden -p 80:80 mprasil/bitwarden:latest
# Optionally remove the intermediate container
docker rm bitwarden_data
# Alternatively you can keep data container around for future updates in which case you can skip last step.
2018-02-10 01:00:55 +01:00
```
2018-05-25 17:15:31 +02:00
## Configuring bitwarden service
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
### Changing persistent data location
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
#### /data prefix:
By default all persistent data is saved under `/data`, you can override this path by setting the `DATA_FOLDER` env variable:
2018-02-10 01:00:55 +01:00
```sh
2018-05-25 17:15:31 +02:00
docker run -d --name bitwarden \
-e DATA_FOLDER=/persistent \
-v /bw-data/:/persistent/ \
-p 80:80 \
mprasil/bitwarden:latest
2018-02-10 01:00:55 +01:00
```
2018-05-25 17:15:31 +02:00
Notice, that you need to adapt your volume mount accordingly.
2018-05-25 17:15:31 +02:00
#### database name and location
2018-05-25 17:15:31 +02:00
Default is `$DATA_FOLDER/db.sqlite3`, you can change the path specifically for database using `DATABASE_URL` variable:
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
```sh
docker run -d --name bitwarden \
-e DATABASE_URL=/database/bitwarden.sqlite3 \
-v /bw-data/:/data/ \
-v /bw-database/:/database/ \
-p 80:80 \
mprasil/bitwarden:latest
2018-02-10 01:00:55 +01:00
```
2018-05-25 17:15:31 +02:00
Note, that you need to remember to mount the volume for both database and other persistent data if they are different.
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
#### attachments location
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
Default is `$DATA_FOLDER/attachments`, you can change the path using `ATTACHMENTS_FOLDER` variable:
2018-02-10 01:00:55 +01:00
```sh
2018-05-25 17:15:31 +02:00
docker run -d --name bitwarden \
-e ATTACHMENTS_FOLDER=/attachments \
-v /bw-data/:/data/ \
-v /bw-attachments/:/attachments/ \
-p 80:80 \
mprasil/bitwarden:latest
2018-02-10 01:00:55 +01:00
```
2018-05-25 17:15:31 +02:00
Note, that you need to remember to mount the volume for both attachments and other persistent data if they are different.
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
#### icons cache
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
Default is `$DATA_FOLDER/icon_cache`, you can change the path using `ICON_CACHE_FOLDER` variable:
2018-02-10 01:00:55 +01:00
2018-05-25 17:15:31 +02:00
```sh
docker run -d --name bitwarden \
-e ICON_CACHE_FOLDER=/icon_cache \
-v /bw-data/:/data/ \
-v /icon_cache/ \
-p 80:80 \
mprasil/bitwarden:latest
2018-02-10 01:00:55 +01:00
```
2018-05-25 17:15:31 +02:00
Note, that in the above example we don't mount the volume locally, which means it won't be persisted during the upgrade unless you use intermediate data container using `--volumes-from`. This will impact performance as bitwarden will have to re-dowload the icons on restart, but might save you from having stale icons in cache as they are not automatically cleaned.
### Other configuration
Though this is unlikely to be required in small deployment, you can fine-tune some other settings like number of workers using environment variables that are processed by [Rocket](https://rocket.rs), please see details in [documentation](https://rocket.rs/guide/configuration/#environment-variables).
## Building your own image
Clone the repository, then from the root of the repository run:
```sh
# Build the docker image:
docker build -t bitwarden_rs .
2018-02-10 01:00:55 +01:00
```
2018-05-25 17:15:31 +02:00
## Building binary
For building binary outside the Docker environment and running it locally without docker, please see [build instructions](BUILD.md).