Vaultwaren is an alternative implementation of the bitwarden’s server api. It enables companies and individuals to generate, store and share passwords securely, regardless of location, browser or device.

Docker compose

Here is the docker compose file generated by Crane It.

version: "3.8"
volumes:
  vaultwarden-data: {}
services:
  vaultwarden: &vaultwarden
    container_name: vaultwarden
    image: vaultwarden/server:latest
    volumes:
      - vaultwarden-data:/data
    expose:
      - "80"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vaultwarden.rule=Host(`$CRANE_IT_EB_DOMAIN`)"
      - "traefik.http.routers.vaultwarden.entrypoints=websecure"
      - "traefik.http.routers.vaultwarden.tls.certresolver=myresolver"
      - "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
    ports: []

  traefik:
    image: "traefik:v2.9.5"
    container_name: traefik
    command:
      - "--log.level=INFO"
      - "--api.insecure=false"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
      - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.myresolver.acme.email=firenix.nex@gmail.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"

The docker compose file is quite simple if you ignore traefik and its related labels. Traefik allow us to use HTTPS.

Docker will pull the latest version of Vaultwarden, and map a volume to store passwords (and others stuff) directly on the server.