Hoste dein eigenen Password Safe! | Vaultwarden

Hoste dein eigenen Password Safe! | Vaultwarden

Übsersicht

Wir installieren heute Vaultwarden als Docker Container mit einer PostgreSQL Datenbank.

Ein passendes Video zum Beitrag hier: https://youtu.be/Nere_rZK8Ko


Docker Compose & Env

Compose-File

Das Compose File sieht final so aus.

services:
  postgres:
    image: postgres
    container_name: vaultwarden-postgres
    environment:
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - vaultwarden-pgsql:/var/lib/postgresql/data
    restart: on-failure
    networks:
      - vaultwarden-internal
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden-main
    environment:
      - DATABASE_URL=${VAULTWARDEN_DATABASE_URL}
      - ADMIN_TOKEN=${VAULTWARDE_ADMIN_TOKEN}
      - WEBSOCKET_ENABLED=true
      - DOMAIN=https://pass.example.com
      #- SIGNUPS_ALLOWED=false #wird nach der Account erstellung aktiviert
    volumes:
      - vaultwarden-data:/data
    networks:
      - vaultwarden-internal
      - reverse-proxy
volumes:
  vaultwarden-data: null
  vaultwarden-pgsql: null
networks:
  vaultwarden-internal: null
  reverse-proxy:
    external: true

Env-File

Environment Variablen brauchen wir relativ wenig.

POSTGRES_PASSWORD='<pass>'

VAULTWARDE_ADMIN_TOKEN='<created Argon2 key'>
VAULTWARDEN_DATABASE_URL='postgresql://vaultwarden:<VaultwardenPGUSERPass>@postgres:5432/vaultwarden'

Postgres Password

Das Postgres Password kann nach belieben vergeben werden. Das Passwort wird an keiner weiteren Stelle benötigt, da es sich hierbei um das Haupt-Postgres Password handelt.

Vaultwarden Admin Token

Den Admin Token benötigen wir später, um auf die Adminoberfläche von Vaultwarden zu kommen. Dort können einige Einstellungen vorgenommen werden.

Um Sich einen Argon2 Key zu generieren, brauchen wir nur einen Linux Host.

echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
# Output: $argon2id$v=19$m=65540,t=3,p=4$bXBGMENBZUVzT3VUSFErTzQzK25Jck1BN2Z0amFuWjdSdVlIQVZqYzAzYz0$T9m73OdD2mz9+aJKLuOAdbvoARdaKxtOZ+jZcSL9/N0

Den Key könnt ihr dann kopieren und bei der Variable eintragen.

Database URL

In der Datenkbank URL müsst ihr lediglich das Password anpassen. Dies wird das Passwort für den Vaultwarden User in Postgres zum Verwalten der Datenbank. In Postgres vergeben wir dies erst zu einem späteren Zeitpunkt, also könnt ihr euch das hier schonmal ausdenken.

Bitte beachtet, dass einige Sonderzeichen mit Prozente Encoded werden müssen!

!

#

$

%

&

'

(

)

*

+

,

/

:

;

=

?

@

[

]

%21

%23

%24

%25

%26

%27

%28

%29

%2A

%2B

%2C

%2F

%3A

%3B

%3D

%3F

%40

%5B

%5D


Inititaler Start

Beim ersten starten müssen wir im PostgreSQL Container nun den Vaultwarden User, die Vaultwarden DB und die Berechtigungen entsprechend setzen, damit Vaultwarden auf die Datenbank zugreifen kann.

  1. Als erstes muss der Postgres Container in einer interaktiven Session gestartet werden
sudo docker compose up -d
sudo docker exec -it vaultwarden-postgres /bin/bash

  1. Nun gehen wir in die Postgres CLI
psql -U postgres

  1. Jetzt erstellen wir den User
CREATE DATABASE vaultwarden;

  1. Jetzt fehlt nur noch die Datenbank und rechtevergabe
CREATE USER vaultwarden WITH ENCRYPTED PASSWORD 'yourpassword';
GRANT ALL ON DATABASE vaultwarden TO vaultwarden;
GRANT all privileges ON database vaultwarden TO vaultwarden;

#switch to vaultwarden user
\c vaultwarden postgres

#give public access
GRANT ALL ON SCHEMA public TO vaultwarden;

Anschließend können die Container zur Sicherheit nochmal neu gestartet werden, ansonsten sollte Vaultwarden nun funktionieren.

Weitere Infos zu PostgreSQL & Vaultwarden


Einrichtung

Zugriff per https

Da wir Vaultwarden gerne sicher per HTTPS und mit gültigem SSL Zertifikat erreichen wollen, kommt nun wieder der Proxy Manager zum Einsatz.

Wir erstellen nun zuerst einen neuen Proxy Host für Vaultwarden, um auf die Weboberfläche zugreifen zu können.

add Proxy Host
create new proxy host
ssl cert
ssl Cert

Account erstellen

Als nächstes erstellen wir uns einen neuen Account in Vaultwarden. 

create account
new account

Nachdem wir das gemacht haben, können wir die Container noch einmal stoppen, um zukünftig das erstellen von weiteren Accounts zu untersagen.

uncomment variable
deactivate new signups

Adminoberfläche

Einstellungen für bspw. den Versand von Mails etc. könnt ihr über die Adminoberfläche vornehmen. Dort kommt ihr hin, wenn ihr zu der URL https://<eure-vault-domain>/admin navigiert.

BILD


Extensions & Programme

Um mit jedem Gerät auf eure Vaultwarden Instanz zugreifen zu können, könnt ihr auf die Bitwarden Porgramme und Extensions zurückgreifen.

https://bitwarden.com/download/

Hier findet ihr für eigentlich jedes Gerät das passende Programm.

Außerhalb des Heimnetzwerks

In einem späteren Beitrag werden wir uns noch den zugriff auf das Heimnetz von Unterwegs ansehen. Dies ist aber bei Vaultwarden nur bedingt nötig.

Die Smartphone App cached immer ihren aktuellen Stand, so dass ihr Unterwegs auf alle bestehenden Passwörter jederzeit zugreifen könnt!