Bitwarden (Vaultwarden) und die Api

donnerwolke

Cadet 4th Year
Registriert
Aug. 2013
Beiträge
75
Hallo miteinander,

ich nutze seit einigen Tagen Vaultwarden (ein Bitwarden Clone) als Docker in Verbindung mit einem ReverseProxy.
Der ReverseProxy läuft ebenfalls als Docker, damit ich die GUI nutzen kann, weil ich mit der Konfiguration sonst nicht ganz zurecht komme.

Vor ein paar Tagen habe ich meine KeePass Passwörter innerhalb einer Organisation importiert. Der Sync schien zu funktionieren.
Gestern Abend habe ich dann angefangen meinen Privaten Tresor mit Kennwörtern zu füllen.
Anschließend habe ich mein iPhone in die Hand genommen, die App Bitwarden installiert und wollte dort ebenfalls den Sync einrichten. Eingeloggt stellte ich dann fest, dass sich die Passwörter aus meinem Tresor nicht synchronisieren lassen.

Nach einem Blick in die Log stellte ich dann schnell fest, es beim Aufruf der Api zu einem "Internal Server Error 500" kommt.
Habe nun die halbe Nacht damit verbracht rumzuprobieren, aber bin nicht weiter gekommen.

Nun wende ich mich an euch. Kennt jemand das Problem und oder kann mich dabei unterstützen?

Nachfolgend meine Konfiguration:

Vaultwarden läuft auf einem Host mit der IP: 10.0.1.125
Die Datenbank dahinter läuft auf einem Host mit der IP: 10.0.1.118
Der ProxyReverse läuft auf einem Host mit der IP: 10.0.1.132

Der Aufruf passiert immer per HTTPS.

Meine Docker Konfiguration:
Code:
version: '3.7'

services:

  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      - ADMIN_TOKEN=$(ADMINTOKEN)
      - DATABASE_URL=mysql://vaultwarden:$(PASSWD)@10.0.1.118/vaultwarden
      - LOG_LEVEL=info
      - TZ=Europe/Berlin
      - WEBSOCKET_ENABLED=true
      - SIGNUPS_ALLOWED=false
      - SIGNUPS_VERIFY=true
      - SHOW_PASSWORD_HINT=false
      - INVITATIONS_ALLOWED=false
      - SMTP_FROM_NAME=Vaultwarden
      - SMTP_HOST=mail.your-server.de
      - SMTP_FROM=noreply@domain.de
      - SMTP_PORT=587
      - SMTP_SECURITY=starttls
      - SMTP_USERNAME=noreply@domain.de
      - SMTP_PASSWORD=$(PASSWD)
    ports:
      - 92:80
      - 442:443
    volumes:
      - /docker/vaultwarden:/data/

Mein ReverseProxy:
2022-08-27 11_45_36-Window.png 2022-08-27 11_45_36-Window.png2022-08-27 11_46_39-Window.png

Die Log meines Dockers, gelesen mit Dozzle:
Code:
today at 11:49:00Container started
today at 11:48:56[2022-08-27 11:48:56.112][vaultwarden][INFO] Vaultwarden process exited!
today at 11:49:05/--------------------------------------------------------------------\
today at 11:49:05|                        Starting Vaultwarden                        |
today at 11:49:05|                           Version 1.25.2                           |
today at 11:49:05|--------------------------------------------------------------------|
today at 11:49:05| This is an *unofficial* Bitwarden implementation, DO NOT use the   |
today at 11:49:05| official channels to report bugs/features, regardless of client.   |
today at 11:49:05| Send usage/configuration questions or feature requests to:         |
today at 11:49:05|   https://vaultwarden.discourse.group/                             |
today at 11:49:05| Report suspected bugs/issues in the software itself at:            |
today at 11:49:05|   https://github.com/dani-garcia/vaultwarden/issues/new            |
today at 11:49:05\--------------------------------------------------------------------/
today at 11:49:05
today at 11:49:05[INFO] No .env file found.
today at 11:49:05
today at 11:49:05[WARNING] The following environment variables are being overriden by the config file,
today at 11:49:05[WARNING] please use the admin panel to make changes to them:
today at 11:49:05[WARNING] SIGNUPS_ALLOWED, SIGNUPS_VERIFY, INVITATIONS_ALLOWED, SHOW_PASSWORD_HINT, ADMIN_TOKEN, SMTP_HOST, SMTP_SECURITY, SMTP_PORT, SMTP_FROM, SMTP_FROM_NAME, SMTP_USERNAME, SMTP_PASSWORD
today at 11:49:05
today at 11:49:05[2022-08-27 11:49:05.538][start][INFO] Rocket has launched from http://0.0.0.0:80
today at 11:49:17[2022-08-27 11:49:17.581][request][INFO] POST /api/accounts/prelogin
today at 11:49:17[2022-08-27 11:49:17.582][response][INFO] (prelogin) POST /api/accounts/prelogin => 200 OK
today at 11:49:17[2022-08-27 11:49:17.635][request][INFO] POST /identity/connect/token
today at 11:49:17[2022-08-27 11:49:17.672][vaultwarden::api::identity][INFO] User $(MEINEMAIL) logged in successfully. IP: $(MEINE-EXTERNE-IP)
today at 11:49:17[2022-08-27 11:49:17.672][response][INFO] (login) POST /identity/connect/token => 200 OK
today at 11:49:17[2022-08-27 11:49:17.733][request][INFO] POST /identity/connect/token
today at 11:49:17[2022-08-27 11:49:17.735][response][INFO] (login) POST /identity/connect/token => 200 OK
today at 11:49:17[2022-08-27 11:49:17.773][request][INFO] GET /api/sync?excludeDomains=true
today at 11:49:17[2022-08-27 11:49:17.783][panic][ERROR] thread 'rocket-worker-thread' panicked at 'Error loading attachments: DatabaseError(__Unknown, "Commands out of sync; you can't run this command now")': src/db/models/attachment.rs:196
today at 11:49:17   0: vaultwarden::init_logging::{{closure}}
today at 11:49:17   1: std::panicking::rust_panic_with_hook
today at 11:49:17   2: std::panicking::begin_panic_handler::{{closure}}
today at 11:49:17   3: std::sys_common::backtrace::__rust_end_short_backtrace
today at 11:49:17   4: rust_begin_unwind
today at 11:49:17   5: core::panicking::panic_fmt
today at 11:49:17   6: core::result::unwrap_failed
today at 11:49:17   7: tokio::runtime::enter::exit
today at 11:49:17   8: tokio::runtime::thread_pool::worker::block_in_place
today at 11:49:17   9: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
today at 11:49:17  10: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
today at 11:49:17  11: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
today at 11:49:17  12: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
today at 11:49:17  13: tokio::runtime::task::harness::Harness<T,S>::poll
today at 11:49:17  14: std::thread::local::LocalKey<T>::with
today at 11:49:17  15: tokio::runtime::thread_pool::worker::Context::run_task
today at 11:49:17  16: tokio::runtime::thread_pool::worker::Context::run
today at 11:49:17  17: tokio::macros::scoped_tls::ScopedKey<T>::set
today at 11:49:17  18: tokio::runtime::thread_pool::worker::run
today at 11:49:17  19: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
today at 11:49:17  20: tokio::runtime::task::harness::Harness<T,S>::poll
today at 11:49:17  21: tokio::runtime::blocking::pool::Inner::run
today at 11:49:17  22: std::sys_common::backtrace::__rust_begin_short_backtrace
today at 11:49:17  23: core::ops::function::FnOnce::call_once{{vtable.shim}}
today at 11:49:17  24: std::sys::unix::thread::Thread::new::thread_start
today at 11:49:17  25: start_thread
today at 11:49:17  26: clone
today at 11:49:17
today at 11:49:17[2022-08-27 11:49:17.783][_][ERROR] Handler sync panicked.
today at 11:49:17[2022-08-27 11:49:17.783][_][WARN] A panic is treated as an internal server error.
today at 11:49:17[2022-08-27 11:49:17.783][_][WARN] No 500 catcher registered. Using Rocket default.
today at 11:49:17[2022-08-27 11:49:17.783][response][INFO] (sync) GET /api/sync?<data..> => 500 Internal Server Error

Was habe ich gemacht? Ich habe den Docker gestartet und mich anschließend per Browser eingelogged.
Die Übersicht ist leer. Keine Passwörter mehr, keine Organisationen sichtbar.
Im Admininterface sieht man aber, dass ich zwei Organisationen und mein Benutzer 117 Passwörter besitzt.

Könnt ihr mich unterstützen und mir Tipps oder einen Denkanstoß geben? :)

Vielen Dank und beste Grüße.
 

Anhänge

  • 2022-08-27 11_46_06-Window.png
    2022-08-27 11_46_06-Window.png
    12,7 KB · Aufrufe: 271
Zuletzt bearbeitet:
Ich nutze auch vaultwarden und nginx als reverse proxy.
Bei Nginx hab ich für vaultwarden websockets deaktiviert und HSTS aktiviert. Vielleicht hilft dir das.
 
Ich probiere es gerade mal aus. Danke dir.
Ergänzung ()

Habs gerade mal deaktiviert und so eingestellt, wie du @Dango. es geschrieben hast. Habe danach den Docker gestoppt und neu gestartet. Dies scheint aber keine Verbesserung zu bringen.
Wofür wird der Websocket eigentlich gebraucht und müsste ich diesen anders konfigurieren als ich es bisher getan habe?

PS: Ich habe übrigens die ufw FW mal deaktiviert, nicht dass diese der Grund sein sollte.
 
Yuuri schrieb:
Sieh dir mal https://github.com/dani-garcia/vaultwarden/issues/2484 an. Scheint wohl ein MariaDB Bug zu sein. Ich persönlich nutz die integrierte SQLite DB und hab damit keinerlei Probleme.
Der Fehler oben ist ein MariaDB Bug, das stimmt. Die Seite habe ist gestern Abend auch schon gesehen. Denkst du, dass das Problem mit der Api daher kommt? Ich habe beides eigentlich differenziert von einander behandelt.

Darf ich fragen wie viele Passwörter du so hast? Ich habe meine KeePass DB importiert und komme insgesamt mit allem was ich habe auf ca. 1100 Passwörtern.

henfri schrieb:
Ich würde Mal nach dem Fehler im Log googeln.
Das mache ich ehrlich gesagt schon seit gestern Abend. Heute Nacht um halb 3 habe ich dann aufgegeben.
 
donnerwolke schrieb:
Denkst du, dass das Problem mit der Api daher kommt?
Klar, die Daten müssen ja schließlich irgendwo abgelegt werden und wenn die DB nen Bug hat, kommen die Daten halt nicht oder falsch rein oder raus. Deine Fehlermeldung bezieht sich ja speziell auf die DB. Wenn es ein Vaultwarden Problem wäre, müsste sich das Problem auch anderweitig zeigen (bspw. mit der integrierten SQLite oder einer externen Postgres-DB).
donnerwolke schrieb:
Darf ich fragen wie viele Passwörter du so hast?
In der DB sind aktuell 1056 Einträge mit 40 Attachments. Ein Kumpel nutzt es auch noch mit.

Eine Sache noch: Nutz pro Service am besten immer eine eigene DB in einem eigenen Container und teil diese nicht, wie man es bei einer lokalen Installation machen würde. Mit deiner Shared DB hast du nämlich das Problem, dass du sie nicht unabhängig voneinander updaten kannst. Wenn eine Anwendung demnächst MariaDB 10.10 voraussetzt und eine andere Anwendung nicht mit 10.10 läuft (wegen $Bug o.ä.), stehst du vor einem Problem und kannst eine Anwendung nicht nutzen. Auch gibt es keine Probleme beim Backup oder einem Serverwechsel, wenn du die Daten mal umziehen willst oder oder oder ..., weil die Anwendung isoliert für sich steht und nicht auf ne externe Abhängigkeit angewiesen ist. Weiterhin hat nur die Anwendung exklusiven Zugriff, hast also weniger potentielle Probleme im Umgang.
 
  • Gefällt mir
Reaktionen: donnerwolke
Jungs ich fasse es einfach nicht. :D

Ich habe vorhin kurzerhand ein Backup von meinen Datenbanken und dem mariadb Server gemacht um dann den MariaDB-Server auf die neueste Version zu updaten.
Meine Restlichen Dienste laufen alle aber was noch viel wichtiger ist: Nachdem ich den Docker dann noch mal neu gestartet habe habe ich mich in Bitwarden eingeloggt und habe auf einmal alle Passwörter und auch die Organisationen gesehen.

@Yuuri dein Link hat mir, obwohl ich es mir gestern Abend schon mal angeguckt habe, geholfen. Mein MariaDB Server war noch auf der 10.3.xx. Ich habe gerade eben das Update auf die Version 10.9.xx gemacht.
Auf der Seite Stand, dass das Problem wohl mit der 10.5.xx behoben sein soll.

Danke ausserdem für den Tip mit den Datenbanken. Ja, ich stehe diesbezüglich ganz bei dir was die Versionen betrifft. Denn das Update hätte jetzt auch nach hinten losgehen können.

Zusammenfassend kann ich also angeben, dass ein Update meines MariaDB-Servers geholfen hat. Ich werde das ganze jetzt noch ein wenig prüfen und dann weitere Passwörter auch mit Anhängen einpflegen. Denn Anhänge habe ich bisher noch keine.

Danke euch vielmals Jungs! :)
 
donnerwolke schrieb:
und dann weitere Passwörter auch mit Anhängen einpflegen. Denn Anhänge habe ich bisher noch keine.
Da bitte drauf achten, dass man im Nginx Reverse Proxy noch "client_max_body_size 100M;" (Größe vorher ggf. noch anpassen) angeben muss, ich weiß nicht wie das der Proxy Manager handhabt, aber wahrscheinlich muss das noch in dem custom Block mit rein, sonst steht man da beim Upload recht schnell vor einem HTTP Fehler.
 
Malaclypse17 schrieb:
Da bitte drauf achten, dass man im Nginx Reverse Proxy noch "client_max_body_size 100M;" (Größe vorher ggf. noch anpassen) angeben muss, ich weiß nicht wie das der Proxy Manager handhabt, aber wahrscheinlich muss das noch in dem custom Block mit rein, sonst steht man da beim Upload recht schnell vor einem HTTP Fehler.
Darf ich fragen wofür diese Option genau ist? Geht es hierbei um die Größe der Anhänge?

Ich habe nun auf jedenfall alles konfiguriert :)
2FA ist auch aktiviert
Aufruf eh nur per HTTPS
Anhänge kann ich bisher auch hinzufügen
1661602403621.png


Ich danke euch für eure Hilfe und wünsche ein schönes Wochenende! :)
 
Zurück
Oben