Skip to content

Vaultwarden auf Debian Bookworm 12 installieren!

Angeheftet Linux
  • Das ist eine aktualisierte Anleitung des folgenden Beitrages.

    Was ist Vaultwarden?

    Vaultwarden nutzt die Server API von Bitwarden in einer eigenen Serverentwicklung geschrieben in Rust usw.

    Alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients*, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal.

    Plan

    • Cloud Server von Hetzner aufsetzen
    • Vaultwarden aufsetzen
    • Ein paar sinnvolle Tools nachinstallieren

    1. Server aufsetzen

    1.1 Installation

    Ich setze ein wenig Wissen hier voraus, etwas ausführlicher findet ihr das Ganze in o.g. Beitrag.

    1.1.1 Standort

    Bei Hetzner hat man mittlerweile die Auswahl zwischen einigen Standorten.

    269f5184-e97c-4c75-9ec4-4a49b00b562f-grafik.png

    Ob ihr Euch jetzt einen x86 oder einen Arm64 auswählt, das müsst Ihr selber entscheiden. @Nico hat ein Debian Paket gebaut, das man auf x86 installieren kann. Darin ist noch keine Arm64 Unterstützung enthalten. Dafür gibt es aber ein Testpaket und es wird sicherlich demnächst auch eine direkte Arm64 Unterstützung in seinem Paket geben.

    Seit 02.05.2023 mit Arm64 Unterstützung incl. Debian Bookworm 🙂

    Solltet Ihr Arm64 wählen wollen, dann müsst ihr momentan als Standort Falkenstein wählen.

    1.1.2 Image

    Wir benötigen als Image zwingend Debian Das Paket vom @Nico läßt sich auch auf Ubuntu installieren. Ich favorisiere für Server im Internet aber Debian.

    513df87d-e80b-4ca8-8a58-5aff0bb2697f-grafik.png

    1.1.3 Typ

    67af8be0-6c41-4b0c-9b8d-4abb92ff5b7e-grafik.png

    Wir wählen die kleinste virtuelle Maschine, den CAX 11

    1.1.4 Networking

    aaf69478-f7b7-4f03-a8de-916c36ff544c-grafik.png

    Vorausgesetzt ihr habt eine vernünftige Ipv6 Anbindung, dann kann man die öffentliche Ipv4 Adresse weglassen und spart etwas Geld. Seit einiger Zeit muss man diese Ipv4 Adressen bei Hetzner extra bezahlen. Hier im Beispiel gehe ich von einer IPv6 only Umgebung aus.

    Eine Ipv6 Einrichtung sollte man nur dann einrichten, wenn man auch eine vernünftige IPv6 Umgebung zu Hause usw. auch hat. Sonst wird die Kommunikation mit dem Server etwas schwierig 😉

    Die restlichen Punkte je nachdem was ihr braucht. Auf Kostenpflichtig erstellen klicken.

    Der erste Login

    IP kopieren und mittels SSH connecten

    ssh root@<IPv6>
    

    Die Abfrage

    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    

    mit yes beantworten und man ist drin 😉

    1.2 Upgrade auf Debian Bookworm 12

    Aktuell (Stand: 03.05.2023) kann man noch kein Debian 12 bei Hetzner auswählen.

    Debian Bookworm ist noch nicht für den produktiven Einsatz gedacht, der Release ist am 10. Juni 2023!

    Das ist aber auch kein Problem, ziehen wir die Debian 11 Installation mal eben auf Debian 12 hoch. Wir schauen nach ob alles aktuell ist.

    apt update && apt upgrade
    

    Danach die Paketliste auf Bookworm umbauen

    deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
    # deb-src http://deb.debian.org/debian bookworm main contrib non-free
    
    deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
    # deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free
    
    # deb http://deb.debian.org/debian bookworm-backports main contrib non-free
    # deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free
    
    deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
    # deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free
    

    Wir entfernen die zwei Hetzner Source Listen. Aktuell auch kein Bookworm vorhanden. Wenn Bookworm bei Hetzner verfügbar ist, könnt ihr die ja wieder einbauen.

    mv hetzner-mirror.list /root
    mv hetzner-security-updates.list /root
    

    Jetzt nochmal

    apt update && apt upgrade
    

    Wenn ich mich recht erinnere kommen jetzt so ca. 330 Pakete. Alle installieren, danach die Kiste einmal neustarten.

    Danach sind wir auf Debian Bookworm 12

    root@:~# cat /etc/debian_version 
    12.0
    

    2. Vaultwarden

    Für dieses Projekt benutzen wir Vaultwarden. Vaultwarden ist eine Rust Implementation der Bitwarden Server API.

    2.1 Installation Vaultwarden

    @Nico's Anleitung für die Installation.

    Vaultwarden repository for Debian 10, 11 and 12 and Ubuntu 20.04 and 22.04
    -------------------------------------------
    
    Public repository. Feel free to use!
    
    # Installation
    1. wget -O /etc/apt/trusted.gpg.d/bananian-keyring.gpg https://bitwarden-deb.tech-network.de/bananian-keyring.gpg
    2. Important: Please make sure that you use the correct repository for your distribution:
    
    Debian 10 (buster), 11 (bullseye) and Ubuntu 20.04:
    echo "deb http://bitwarden-deb.tech-network.de buster main" > /etc/apt/sources.list.d/vaultwarden.list
    
    Debian 12 (bookworm) and Ubuntu 22.04:
    echo "deb http://bitwarden-deb.tech-network.de bookworm main" > /etc/apt/sources.list.d/vaultwarden.list
    
    3. apt-get update
    4. apt-get install vaultwarden
    
    # Configuration
    - Vaultwarden config file is located at /etc/vaultwarden (config.env)
    - Sample Apache configuration can be found here: https://bitwarden-deb.tech-network.de/Apache-VirtualHost.example.conf
    - Sample Nginx configuration can be found here: https://bitwarden-deb.tech-network.de/Nginx-VirtualHost.example.conf
    
    # Systemd service
    - Enable: systemctl enable vaultwarden.service
    - Start: systemctl start vaultwarden.service
    - Status: systemctl status vaultwarden.service
    - ...
    
    Sources and Credits:
    https://github.com/dani-garcia/vaultwarden
    
    Eine ausführliche deutschsprachige Installationsanleitung gibt es hier:
    https://linux-nerds.org/topic/977/bitwarden_rs-auf-einem-debian-buster-10-server-installieren
    

    Installation @nico's Debian Paket

    Bitte @nico's Anleitung folgen

    Installation Arm64 Testpaket

    Da wir ja hier die Arm64 Version installieren wollen, benutzen wir folgendes Testpaket.

    Seit heute (02.05.2023) ist das Arm64 Paket ganz normal zu installieren. Es wird kein Testpaket mehr gebraucht.

    Wer das installiert hatte, bitte

    apt remove vaultwarden
    apt install vaultwarden
    

    ausführen.

    2.2 NGINX

    Wenn wir was ausliefern wollen, brauchen wir NGINX oder Apache2. Ich nutze nur NGINX. @Nico hat hier diese Beispieldatei.

    server {
        listen 80;
        server_name vaultwarden.example.com;
    
        # Redirect to https
        location / {
            return 301 https://$host$request_uri;
        }
    }
    
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name vaultwarden.example.com;
    
        client_max_body_size 128M;
    
        # TLS
        # Please generate a secure TLS configuration with the Mozilla SSL Configuration Generator: https://ssl-config.mozilla.org/
        ssl_certificate /etc/ssl/certs/vaultwarden-fullchain.crt;
        ssl_certificate_key /etc/ssl/private/vaultwarden.key
    
        # HSTS
        add_header Strict-Transport-Security "max-age=63072000; preload";
    
        # Reverse Proxy
        resolver 127.0.0.1 valid=300s;
        resolver_timeout 5s;
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    
        location /notifications/hub {
            proxy_pass http://127.0.0.1:3012;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    
        location /notifications/hub/negotiate {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://127.0.0.1:8000;
        }
    }
    

    Aber vorher müssen wir das mal installieren. Ich nutze eigentlich immer nur die Stable Pakete von NGINX direkt, die gibt es aber noch nicht für Bookworm, also aus dem Debian Repo.

    apt install nginx
    

    Danach die Datei /etc/nginx/sites-enabled/default mit der Beispieldatei füllen.

    2.3 Letsencrypt

    Für die Installation bitte diesen Beitrag lesen.

    Wenn wir jetzt alles richtig gemacht haben, sollte der Vaultwarden laufen und erreichbar sein. Vorher nochmal die Dienste neustarten.

    systemctl restart nginx
    sytemctl restart vaultwarden
    

    3. Anwendung Vaultwarden

    Nach Eingabe der Domain in einen Browser sieht man folgendes

    cd1f64fb-a463-45ee-9903-985561bf04cb-grafik.png

    Bei einer Neuinstallation muss man sich jetzt Anmelden und ein Konto erstellen. Hat man vorher seine Daten exportiert, in einer alten Installation, kann man dann nach dem erfolgreichen Login diese Daten ganz einfach wiederherstellen.

    Für weitere wichtige Konfigurationsmöglichkeiten bitte hier weiterlesen.

    4. Zusatztools

    Sicherheit auf Servern ist ein sehr weites Gebiet mit vielen verschiedenen Meinungen. Wichtig für mich ist, kein Rootlogim mit Passwörtern, nur mit SSH Keys.

    Danach halte ich es noch mit

    • iptables
    • fail2ban

    Damit sollte der Server recht gut abgesichert sein. Und wenn doch mal einer reinkommen sollte, kann er mit den Daten im Vaultwarden nichts anfangen, die sind alle verschlüsselt.

    Achtet auf gute Passwörter!

    Viel Spaß mit Eurem eigenen Passwort-Safe!

  • FrankMF FrankM hat dieses Thema am angepinnt
  • Hi!

    Nach der Installation bekomme ich beim Starten folgende Fehlermeldung, da Deb12 nicht mehr mit OpenSSL1.1 sondern Version 3 ausgeliefert wird:

    vaultwarden
    vaultwarden: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

    ls /usr/lib/x86_64-linux-gnu/libssl*
    -rw-r--r-- 1 root root 1230436 May 30 18:12 /usr/lib/x86_64-linux-gnu/libssl.a
    lrwxrwxrwx 1 root root 11 May 30 18:12 /usr/lib/x86_64-linux-gnu/libssl.so -> libssl.so.3
    -rw-r--r-- 1 root root 692256 May 30 18:12 /usr/lib/x86_64-linux-gnu/libssl.so.3

    gibt es hier schon eine Lösung?

  • Hallo @itn

    du verwendest offenbar noch das "buster" Repository. Vermutlich hast du dein Debian 11 auf 12 aktualisiert?
    In diesem Fall muss auch das Vaultwarden Repository angepasst werden.

    Falls du noch eine "/etc/apt/sources.list.d/bitwarden.list" hast, lösch diese bitte. Anschließend folgendes als root ausführen:

    echo "deb http://bitwarden-deb.tech-network.de bookworm main" > /etc/apt/sources.list.d/vaultwarden.list
    

    Danach vaultwarden (neu) installieren (ggfs. vorher entfernen mittels apt-get remove vaultwarden):

    apt-get install vaultwarden
    

    Siehe auch https://bitwarden-deb.tech-network.de/

    Viel Erfolg und beste Grüße
    Nico

  • Hallo @itn

    du verwendest offenbar noch das "buster" Repository. Vermutlich hast du dein Debian 11 auf 12 aktualisiert?
    In diesem Fall muss auch das Vaultwarden Repository angepasst werden.

    Falls du noch eine "/etc/apt/sources.list.d/bitwarden.list" hast, lösch diese bitte. Anschließend folgendes als root ausführen:

    echo "deb http://bitwarden-deb.tech-network.de bookworm main" > /etc/apt/sources.list.d/vaultwarden.list
    

    Danach vaultwarden (neu) installieren (ggfs. vorher entfernen mittels apt-get remove vaultwarden):

    apt-get install vaultwarden
    

    Siehe auch https://bitwarden-deb.tech-network.de/

    Viel Erfolg und beste Grüße
    Nico

    Hi @Nico !

    Danke für deine Unterstützung!
    Nein, das ist leider nicht der Fall. Es ist ein neu aufgesetztes Deb12.1

    cat /etc/apt/sources.list.d/vaultwarden.list
    deb http://bitwarden-deb.tech-network.de bookworm main

    apt-cache policy vaultwarden
    vaultwarden:
    Installiert: 1.29.1-1-bookworm
    Installationskandidat: 1.29.1-1-bookworm
    Versionstabelle:
    *** 1.29.1-1-bookworm 500
    500 http://bitwarden-deb.tech-network.de bookworm/main amd64 Packages
    100 /var/lib/dpkg/status

  • Hallo @itn

    Vielen Dank für den Hinweis. Ich habe den Fehler gefunden, einen Patch geschrieben und diesen erfolgreich getestet.

    Edit:
    Update ist online. Sorry für die Probleme!

    Beste Grüße
    Nico

  • Vielen lieben Dank Nico!
    Jetzt läuft vaultwarden.

  • Forgejo Installation mit Restic nach Hetzner S3 sichern

    Restic restic linux forgejo
    2
    2
    0 Stimmen
    2 Beiträge
    170 Aufrufe
    FrankMF
    Ich habe ja im obigen Beispiel, den gesamten Ordner von der Postgres Installation gesichert. backup_pfad_postgres="/home/pguser/db-data" Ich habe dann mal ein wenig in der Dokumentation gelesen und das hier gefunden. https://www.postgresql.org/docs/current/app-pgdump.html Einfach den Ordner zu sichern, ist ja bei jeder Datenbank ein gewisses Risiko. Die Konsistenz der Daten ist nicht gesichert. Darum gibt es bei den Datenbanken auch immer Tools, mit denen man die Daten sichern kann. In der Doku steht folgendes. pg_dump — extract a PostgreSQL database into a script file or other archive file Aber wichtiger ist das hier. pg_dump is a utility for backing up a PostgreSQL database. It makes consistent backups even if the database is being used concurrently. pg_dump does not block other users accessing the database (readers or writers). Das macht also konsistente Backups. Wichtig noch zu wissen ist folgendes. pg_dump only dumps a single database. To back up an entire cluster, or to back up global objects that are common to all databases in a cluster (such as roles and tablespaces), use pg_dumpall. Ok, das scheint gut geeignet zu sein, um die Datenbank zu sichern. Aber, wie? Auf meinen Eingangsbeitrag kam es zu folgendem Dialog auf Mastodon. https://nrw.social/deck/@nebucatnetzer@social.linux.pizza/114132208440509237 Das war der Anstoß sich mit dem Thema zu beschäftigen. Und ich hatte dann folgende Lösung. podman exec -it postgres pg_dump -U postgres -f /var/lib/postgresql/data/dump.txt Ok, was mache ich hier? Wir führen einen Befehl vom Host aus gesehen, im Container aus. podman exec -it postgres Der Teil führt den folgenden Befehl im Container aus. pg_dump -U postgres -f /var/lib/postgresql/data/dump.txt pg_dump - Das Tool fürs Backup -U postgres - Der Befehl wird als User postgres ausgeführt -f /var/lib/postgresql/data/dump.txt - Das Dump File wird im Data Ordner abgelegt, den haben wir ja persistent auf dem Host. Somit kann ich das jetzt einfach in mein Backup Script einbauen und brauchen nicht mehr den ganzen Ordner zu kopieren, sondern nur noch das Dump File. Ich werde diese Änderungen in das obige Script einbauen.
  • Debian Bookworm 12.7 released

    Linux debian linux
    1
    0 Stimmen
    1 Beiträge
    139 Aufrufe
    Niemand hat geantwortet
  • Debian 12 Bookworm - Release 12.1

    Linux debian linux
    1
    0 Stimmen
    1 Beiträge
    127 Aufrufe
    Niemand hat geantwortet
  • Debian Buster 10.1 released

    Linux debian linux
    1
    0 Stimmen
    1 Beiträge
    285 Aufrufe
    Niemand hat geantwortet
  • VS Code - entferntes Verzeichnis einbinden

    Linux vscode linux
    2
    0 Stimmen
    2 Beiträge
    429 Aufrufe
    FrankMF
    Mein kleines Projekt liegt auch noch auf gitlab.com. Man kann prima die beiden Dienste (VSCode & gitlab.com) verknüpfen. Eine Änderung, ein commit und dann git push origin master Und die Änderungen sind oben. Aber, ich stecke da noch ganz am Anfang der Lernkurve
  • Debian 10 - Terminal wechseln

    Linux linux
    2
    0 Stimmen
    2 Beiträge
    665 Aufrufe
    FrankMF
    Das eigentliche Problem scheint zu sein, das bei der Installation folgendes fehlte. root@debian:~# apt install gnome-terminal Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden zusätzlichen Pakete werden installiert: gnome-terminal-data nautilus-extension-gnome-terminal Die folgenden NEUEN Pakete werden installiert: gnome-terminal gnome-terminal-data nautilus-extension-gnome-terminal 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 2.867 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 9.971 kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n] Nach der Deinstallation von tilix ist jetzt alles wieder so, wie ich es gewohnt bin
  • Wireguard

    Verschoben Wireguard linux rockpro64 wireguard
    4
    0 Stimmen
    4 Beiträge
    911 Aufrufe
    FrankMF
    Etwas schnellerer Weg den Tunnel aufzubauen, Voraussetzung wireguard modul installiert Keys erzeugt Danach dann einfach ip link add wg0 type wireguard wg setconf wg0 /etc/wireguard/wg0.conf Datei /etc/wireguard/wg0.conf [Interface] PrivateKey = <Private Key> ListenPort = 60563 [Peer] PublicKey = <Public Key Ziel> Endpoint = <IPv4 Adresse Zielrechner>:58380 AllowedIPs = 10.10.0.1/32 Die Rechte der Dateien von wireguard müssen eingeschränkt werden. sudo chmod 0600 /etc/wireguard/wg0.conf Das ganze per rc.local beim Booten laden. Datei /root/wireguard_start.sh ############################################################################################### # Autor: Frank Mankel # Startup-Script # Wireguard # Kontakt: frank.mankel@gmail.com # ############################################################################################### ip link add wg0 type wireguard ip address add dev wg0 10.10.0.1/8 wg setconf wg0 /etc/wireguard/wg0.conf ip link set up dev wg0 Danach Datei ausführbar machen chmod +x /root/wireguard_start.sh In rc.local /root/wireguard_start.sh eintragen - Fertig!
  • SSH Login ohne Passwort

    Angeheftet Linux linux
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    FrankMF
    Wie ihr ja wisst, benutze ich das Forum hier auch gerne als Notizbuch Also mal wieder was hier notieren. Mein Windows Systemadmin sagte mir heute, das es auch folgendes gibt # ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): /tmp/ed Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /tmp/ed Your public key has been saved in /tmp/ed.pub The key fingerprint is: SHA256:D33HCTW7Dy0p5kQdFTkPudx1PQh0EHFgkBvxy8KwhGM root@frank-ms7c92 The key's randomart image is: +--[ED25519 256]--+ | o=O*o=+=| | . oo o+oB+| | E o o.o.o+*| | . o +o...oo=o| | .So.o= O .| | o.= o + | | . . .| | | | | +----[SHA256]-----+ Der Key liegt nur in /tmp kopieren lohnt also nicht Ob das jetzt die Zukunft ist, kann ich nicht beantworten. Ich wollte es aber hier mal festhalten, weil es wohl mittlerweile auch von vielen Projekten benutzt wird. https://en.wikipedia.org/wiki/Ssh-keygen