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.
- 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
- Nun gehen wir in die Postgres CLI
psql -U postgres
- Jetzt erstellen wir den User
CREATE DATABASE vaultwarden;
- 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.
Account erstellen
Als nächstes erstellen wir uns einen neuen Account in Vaultwarden.
Nachdem wir das gemacht haben, können wir die Container noch einmal stoppen, um zukünftig das erstellen von weiteren Accounts zu untersagen.
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!