diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..722d5e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode diff --git a/Building-your-own-docker-image.md b/Building-your-own-docker-image.md index 774e61a..446015c 100644 --- a/Building-your-own-docker-image.md +++ b/Building-your-own-docker-image.md @@ -1,28 +1,43 @@ Clone the repository, then from the root of the repository run to build with default sqlite backend: +## Recommended way to build + +Please read the documentation provided in the docker directory for the latest information on how to build Vaultwarden locally.
+This can be done via docker or podman. See: https://github.com/dani-garcia/vaultwarden/tree/main/docker + + +## Simple ways to build + ```sh -# Build the docker image: -docker build -t vaultwarden . +# Build the docker image with all databases supported: +docker buildx build -t vaultwarden . ``` -To build with MySQL backend run: -```sh +To build with SQLite backend only run: +```bash # Build the docker image: -docker build -t vaultwarden --build-arg DB=mysql . -``` +docker buildx build -t vaultwarden --build-arg DB=sqlite . +``` -To build with Postgresql backend run: -```sh + +To build with MySQL backend only run: +```bash # Build the docker image: -docker build -t vaultwarden --build-arg DB=postgresql . -``` +docker buildx build -t vaultwarden --build-arg DB=mysql . +``` + +To build with Postgresql backend only run: +```bash +# Build the docker image: +docker buildx build -t vaultwarden --build-arg DB=postgresql . +``` + in docker-compose.yml it looks like -```... +```yaml vaultwarden: - # image: vaultwarden/server-postgresql:latest image: vaultwarden - build: + build: context: vaultwarden - args: + args: DB: postgresql ``` diff --git a/Pre-built-binaries.md b/Pre-built-binaries.md index 4e5669e..a4325c1 100644 --- a/Pre-built-binaries.md +++ b/Pre-built-binaries.md @@ -3,17 +3,17 @@ Vaultwarden doesn't currently provide standalone binaries as a separate download ## Extracting binaries with Docker installed Assuming you want to extract binaries for the platform you're running on: -``` -docker pull vaultwarden/server:alpine -docker create --name vw vaultwarden/server:alpine +```bash +docker pull docker.io/vaultwarden/server:latest-alpine +docker create --name vw docker.io/vaultwarden/server:latest-alpine docker cp vw:/vaultwarden . docker cp vw:/web-vault . docker rm vw ``` If you want binaries for a different platform (for example, you only have Docker installed on your x86-64 machine, but you want to run vaultwarden on a Raspberry Pi), add the `--platform` option to the `docker pull` command: -``` -docker pull --platform linux/arm/v7 vaultwarden/server:alpine +```bash +docker pull --platform linux/arm/v7 docker.io/vaultwarden/server:latest-alpine # Run remaining commands as above. # Note that the `docker create` command may print a message like: # WARNING: The requested image's platform (linux/arm/v7) does not match the detected host platform (linux/amd64) @@ -24,14 +24,14 @@ docker pull --platform linux/arm/v7 vaultwarden/server:alpine ## Extracting binaries without Docker installed If you can't or don't want to install Docker, you can use the [docker-image-extract](https://github.com/jjlin/docker-image-extract) script to pull and extract a Docker image. For example, to pull and extract the x86-64 image: -``` +```bash $ mkdir vw-image $ cd vw-image $ wget https://raw.githubusercontent.com/jjlin/docker-image-extract/main/docker-image-extract $ chmod +x docker-image-extract -$ ./docker-image-extract vaultwarden/server:alpine +$ ./docker-image-extract docker.io/vaultwarden/server:latest-alpine Getting API token... -Getting image manifest for vaultwarden/server:alpine... +Getting image manifest for docker.io/vaultwarden/server:latest-alpine... Downloading layer 801bfaa63ef2094d770c809815b9e2b9c1194728e5e754ef7bc764030e140cea... Extracting layer... Downloading layer c6d331ed95271d8005dea195449ab4ef943017dc97ab134a4426faf441ae4fa6... @@ -56,6 +56,6 @@ drwx------ 8 user user 4096 Feb 6 21:46 output/web-vault/ To pull and extract an image for another platform: -* ARMv6: `./docker-image-extract -p linux/arm/v6 vaultwarden/server:alpine` -* ARMv7: `./docker-image-extract -p linux/arm/v7 vaultwarden/server:alpine` -* ARMv8 / AArch64: `./docker-image-extract -p linux/arm64 vaultwarden/server:alpine` \ No newline at end of file +* ARMv6: `./docker-image-extract -p linux/arm/v6 docker.io/vaultwarden/server:latest-alpine` +* ARMv7: `./docker-image-extract -p linux/arm/v7 docker.io/vaultwarden/server:latest-alpine` +* ARMv8 / AArch64: `./docker-image-extract -p linux/arm64 docker.io/vaultwarden/server:latest-alpine` diff --git a/Which-container-image-to-use.md b/Which-container-image-to-use.md index 42048d6..f47eb08 100644 --- a/Which-container-image-to-use.md +++ b/Which-container-image-to-use.md @@ -1,9 +1,17 @@ -`vaultwarden` provides a single Docker image ([`vaultwarden/server`](https://hub.docker.com/r/vaultwarden/server)) with unified support for SQLite, MySQL, and PostgreSQL database backends, as of version 1.17.0. Prior to that version, there were separate images for each database backend (see [Historical images](#historical-images)). +Vaultwarden provides a single Docker image with unified support for SQLite, MySQL, and PostgreSQL database backends, as of version 1.17.0. Prior to that version, there were separate images for each database backend (see [Historical images](#historical-images)). The `vaultwarden/server` image is also multi-arch, meaning it supports multiple CPU architectures under a single image name. Assuming you're running one of the supported architectures, simply pulling `vaultwarden/server` should automatically yield the appropriate arch-specific image for your environment. If you are using an ARMv6 board, such as Raspberry Pi 1 and Zero, you must be running Docker 20.10.0 or later for this to work (see [moby/moby#41017](https://github.com/moby/moby/issues/41017)). The SQLite backend is the most widely used/tested, and recommended for most users unless there is a specific need to use a different database backend. +### Container Registries + +Official build images are available on 3 different container registries. + +- GitHub: [ghcr.io/dani-garcia/vaultwarden](https://github.com/dani-garcia/vaultwarden/pkgs/container/vaultwarden) +- Docker Hub: [docker.io/vaultwarden/server](https://hub.docker.com/r/vaultwarden/server) +- Quay: [quay.io/vaultwarden/server](https://quay.io/repository/vaultwarden/server) + ### Image tags The `vaultwarden/server` image has several tags, each of which represents some variant or property (e.g., specific version) of the image. @@ -12,23 +20,23 @@ The `vaultwarden/server` image has several tags, each of which represents some v * `testing` -- Tracks the latest commits to the source repository. This tag is recommended for users who want early access to the newest features, enhancements, or bug fixes. The testing version is generally pretty stable, but occasional issues are unavoidable. -* `x.y.z` (e.g., `1.29.2`) -- Represents a specific released version. +* `x.y.z` (e.g., `1.30.0`) -- Represents a specific released version. -* `alpine` -- this image is functionally the same as `latest`, but Alpine-based rather than Debian-based, resulting in a slimmer image and newer base applications. Therefore, `latest` vs. `alpine` is mostly a matter of preference. +* `latest-alpine` -- this image is functionally the same as `latest`, but Alpine-based rather than Debian-based, resulting in a slimmer image and newer base applications. Therefore, `latest` vs. `latest-alpine` is mostly a matter of preference. -* `x.y.z-alpine` (e.g., `1.29.2-alpine`) -- Similar to `alpine`, but represents a specific released version. +* `x.y.z-alpine` (e.g., `1.30.0-alpine`) -- Similar to `latest-alpine`, but represents a specific released version. ## Image updates -Occasionally, the upstream Bitwarden project (i.e., Bitwarden Inc.) makes backward-incompatible changes to the clients that require matching changes to the server implementation. vaultwarden generally pushes out a new release promptly to handle these changes. +Occasionally, the upstream Bitwarden project (i.e., Bitwarden Inc.) makes backward-incompatible changes to the clients that require matching changes to the server implementation. Vaultwarden generally pushes out a new release promptly to handle these changes. -However, since upstream controls the release of the clients, and mobile apps and browser extensions typically auto-update on their own, it's important for vaultwarden users to keep up-to-date with the latest vaultwarden release. Otherwise, incompatible client and server versions can lead to sudden breakage or misbehavior. +However, since upstream controls the release of the clients, and mobile apps and browser extensions typically auto-update on their own, it's important for Vaultwarden users to keep up-to-date with the latest Vaultwarden release. Otherwise, incompatible client and server versions can lead to sudden breakage or misbehavior. -The web vault is the only exception; as it's bundled with the vaultwarden image, the web vault version is always properly matched to the vaultwarden server version. If you only use the web vault as the client (unlikely), then you don't need to worry about these compatibility issues. +The web vault is the only exception; as it's bundled with the Vaultwarden image, the web vault version is always properly matched to the Vaultwarden server version. If you only use the web vault as the client (unlikely), then you don't need to worry about these compatibility issues. ## Historical images -Prior to the addition of multidb support in version 1.17.0, MySQL and PostgreSQL support was only included in separate database-specific images. You can still find these in Docker Hub, and they are still updated for now. However, the database-specific images will be removed in the future, so you should transition to using the unified `vaultwarden/server` image. +Prior to the addition of multi-database support in version 1.17.0, MySQL and PostgreSQL support was only included in separate database-specific images. You can still find these in Docker Hub, and they are still updated for now. However, the database-specific images will be removed in the future, so you should transition to using the unified `vaultwarden/server` image. * [`bitwardenrs/server-mysql`](https://hub.docker.com/r/bitwardenrs/server-mysql) - Debian-based `vaultwarden` image that includes support for MySQL only (not SQLite or PostgreSQL). * [`bitwardenrs/server-postgresql`](https://hub.docker.com/r/bitwardenrs/server-postgresql) - Debian-based `vaultwarden` image that includes support for PostgreSQL only (not SQLite or MySQL). @@ -37,7 +45,7 @@ Prior to the addition of multidb support in version 1.17.0, MySQL and PostgreSQL Prior to the addition of multi-arch image support in version 1.16.0, all arch-specific images had individual arch-specific tags. As of 2021-01-14, these tags have been removed, since many users still ended up pulling these old tags due to following outdated tutorials or not reading the release notes. -* `raspberry` - Armv7hf image that should run on Raspberry Pi 2 or newer and possibly on any other compatible boards. This image won't run on Raspberry Pi 1 or Raspberry Pi Zero as those use armv6 CPU. +* `raspberry` - armv7hf image that should run on Raspberry Pi 2 or newer and possibly on any other compatible boards. This image won't run on Raspberry Pi 1 or Raspberry Pi Zero as those use armv6 CPU. * `armv6` - Armv6 image for Raspberry Pi 1 and Raspberry Pi Zero. @@ -48,11 +56,11 @@ Prior to the addition of multi-arch image support in version 1.16.0, all arch-sp ## Reported compatibility table Please add your details here, if you're running the image on a hardware that is not already in the table. +Note that some images mentioned here are no longer tagged like mentioned bellow. | Hardware used | OS | Docker architecture reported | Image used | Status | Notes | |----------------------|--------------|---------------------------------|---------------------|--------|-------| | Regular 64bit server | Ubuntu 18.04 | x86_64 | `vaultwarden/server` | OK | | -| O-Droid HC2 | Armbian | arm7l (arm32) | `registry.lollipopcloud.solutions/arm32v7/bitwarden` (see notes) | OK | Unofficial image built from upstream sources ; `vaultwarden/server:raspberry` is the official equivalent image | | Raspberry Pi Zero W | Raspbian (4.14.98+) | linux/arm (armv6l) | `vaultwarden/server:armv6` | OK | | | Raspberry Pi Zero W | Raspbian (4.19.66+) | linux/arm (armv6l) | `vaultwarden/server:latest` (Multiarch) | OK | Only when using the docker experimental feature 'docker pull --platform=linux/arm/v6'. Otherwise the wrong image will be selected (https://github.com/dani-garcia/vaultwarden/issues/1064) | | Raspberry Pi 1 B | Raspbian (4.19.97+) | linux/arm (armv6l) | `vaultwarden/server:armv6` | OK | |