Bitwarden auf der Synology (Docker)

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Was meinst Du damit?

Werden Beispielsweise folgende URLs gleichbehandelt?
1. http://www.bar.com
2. http://foo.bar.com // andere Anwendung als bei 1.
3. http://www.bar.com:8080 // andere Anwendung als bei 1.
4. https://www.bar.com
5. https://foo.bar.com // andere Anwendung als bei 4.
6. https://www.bar.com:8443 // andere Anwendung als bei 4.
7. https://www.bar.com/foo1 // andere Anwendung als bei 4.; mittels Reverseproxy
8. https://www.bar.com/foo2 // andere Anwendung als bei 4 und 7.; mittels Reverseproxy

Von der URL muss mindestens Protokoll://Full-Qualified-Domain-Name:port gespeichert werden für eine halbwegs vernünftige Zuordnung (1-6).
Eigentlich müsste es sogar Protokoll://Full-Qualified-Domain-Name:port/Kontext sein, um auch Webseiten hinter Reverse-Proxies richtig zu bedienen (1-8).
 

Brudertac

Benutzer
Mitglied seit
03. Jun 2016
Beiträge
31
Punkte für Reaktionen
0
Punkte
6
Habs so im Detail noch nicht ausgetestet aber ganz speziell:

sub.domain.com wird gleich behandelt wie domain.com.

Und das ist schonmal nicht toll.
 

outlander4000

Benutzer
Mitglied seit
08. Jan 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo Community, ich möchte beitragen wie ich Schritt für Schritt Bitwarden auf der Synology zum Laufen gebracht habe.

https://help.bitwarden.com/article/install-on-premise/


Vorbereitungen:
1. Im gemeinsamen Ordner Docker einen Unterordner "bitwarden" anlegen

2. Sofern schon ein Zertifikat von Letsencrypt vorhanden ist, dieses um die Subdomain bitwarden.yourdomain.de erweitern. Ansonsten ein neues Zertifikat erstellen.

3. Bitwarden Installation Key und ID holen
https://bitwarden.com/host
Installation Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Installation Key: xxxxxxxxxxxxxxx

4. Mittels Putty über SSH und admin Konto an der Diskstation anmelden
sudo -i
nochmals Passwort eingeben
cd /volume1/docker/bitwarden
curl -s -o bitwarden.sh https://raw.githubusercontent.com/bitwarden/core/master/scripts/bitwarden.sh && sudo chmod u+x bitwarden.sh
./bitwarden.sh install

Eingaben während der Installation:
- Domain für Bitwarden Instanz: bitwarden.yourdomain.de
- Should letsencrypt create certificate? no
- enter installation ID
- enter installation key
- do you have certificate: yes
- use default ports: no
- enter HTTP Port: 81 (auf jeden Fall freie Ports verwenden!)
- enter HTTPS Port: 444
- behind reverse proxy: no
- push notifications: no
- Diffie Hellmann: no
- your certificate trusted: yes

5. hier erst mal stoppen und Verzeichnisse im neu erstellten Ordner "bwdata" erstellen:
/volume1/docker/bitwarden/bwdata/letsencrypt
/volume1/docker/bitwarden/bwdata/core/
/volume1/docker/bitwarden/bwdata/core/attachments
/volume1/docker/bitwarden/bwdata/mssql
/volume1/docker/bitwarden/bwdata/mssql/data
/volume1/docker/bitwarden/bwdata/mssql/backups

6. Nun das Letsencrypt Zertifikat von der Synology exportieren
Die Datei nach untem stehenden Muster umbenennen

chain.pem -> ca.crt

jetzt in das Verzeichnis /volume1/docker/bitwarden/bwdata/ssl/bitwarden.yourdomain.de hineinkopieren
sudo chmod u+x ca.crt


7. jetzt geht es in Putty weiter
./bitwarden.sh start
und final noch

./bitwarden.sh updateself
./bitwarden.sh update
./bitwarden.sh updatedb




ENJOY!!!
 

maxx922

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
Super! Vielen Dank!!!!
Werde mal in Kürze der Anleitung mal folgen und es ausprobieren.
Dickes Lob für die Mühe.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.379
Punkte für Reaktionen
1.195
Punkte
234

Hallo outlander4000 und herzlich willkommen hier im Forum! :)

Vielen Dank für den schönen Einstieg!
Vielleicht kannst du noch den Link entfernen und nur im Klartext schreiben (bzw. besser als Code), da er sonst im Sichtbaren eingekürzt ist und die Zeile nicht durch die User per Copy&Paste nutzbar ist.
Rich (BBCode):
curl -s -o bitwarden.sh https://raw.githubusercontent.com/bitwarden/core/master/scripts/bitwarden.sh && sudo chmod u+x bitwarden.sh



6. Nun das Letsencrypt Zertifikat von der Synology exportieren
Die Datei nach untem stehenden Muster umbenennen
chain.pem -> ca.crt
jetzt in das Verzeichnis /volume1/docker/bitwarden/bwdata/ssl/bitwarden.yourdomain.de hineinkopieren
sudo chmod u+x ca.crt

Damit startete mein nginx-Dockercontainer nicht (er kam mit den Zertifikaten nicht zurecht).
So hat es dann funktioniert (8nSjn5 hieß bei mir der Ordner mit dem entsprechenden Zertifikat):
Rich (BBCode):
cp /usr/syno/etc/certificate/_archive/8nSjn5/privkey.pem /volume1/docker/bitwarden/bwdata/ssl/bitwarden.domain.de/private.key
cp /usr/syno/etc/certificate/_archive/8nSjn5/cert.pem /volume1/docker/bitwarden/bwdata/ssl/bitwarden.domain.de/certificate.crt
cp /usr/syno/etc/certificate/_archive/8nSjn5/chain.pem /volume1/docker/bitwarden/bwdata/ssl/bitwarden.domain.de/ca.crt
(markierte Stellen anpassen)
 
Zuletzt bearbeitet:

outlander4000

Benutzer
Mitglied seit
08. Jan 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo Stephan,
ich hab es ändern und speichern können, allerdings scheinen meine Rechte als Anfänger begrenzt und das System macht es nicht sichtbar.

Gruß
Armin
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.379
Punkte für Reaktionen
1.195
Punkte
234
… Sobald ihr feststellt, dass Bitwarden zu Ressourcenintensiv ist, schaut euch mal das hier an: https://raw.githubusercontent.com/rtfpessoa/bitwarden-ruby/master/scripts/bitwarden.sh . Der installer ist von Bitwarden "geklaut" und angepasst auf die schlanke Lösung.

ist eine Bitwarden-Server-kompatible Ruby-Anwendung und statt fettem Datenbank-Server wird SQLLite verwendet. Sind bei Verwendung von nginx in Summe 4 Container in Summe mit weniger als 200MB Ram verbrauchen und bisher kaum Last erzeugen.

Läuft das bei dir? Ich habe es jetzt 3x neuinstalliert. Es läuft alles - auch schön ressourcensparend. Ich kann ein neues Konto anlegen (wird auch in die DB gespeichert), wenn ich mich aber einloggen möchte, kommt die Fehlermeldung:

"Errors have occurred
deviceidentifier cannot be blank"

Habt ihr einen Tipp, was ich tun kann?

Bildschirmfoto 2018-01-08 um 20.47.31.png
 

maxx922

Benutzer
Mitglied seit
14. Mai 2014
Beiträge
51
Punkte für Reaktionen
0
Punkte
6
Nochmals eine Frage zur Erreichbarkeit der Dockeranwendung auf dem NAS aus dem Webbrowser heraus.

Ist nach obiger Beschreibung dies nur innerhalb des lokalen Netzwerkes möglich? Ich gebe dann bei Bitwarden als Server meine definierte Domain (z.B. die Subdomain bitwarden.yourdomain.de) ein und kann im lokalen Netzwerk synchronisieren?

Oder kommt man so auch von "draussen" rein? Wenn ich die Hilfeseite von Bitwarden richtig verstehe, brauche ich in diesem Fall eine feste, registrierte Domain (mit statischer IP), die auf das NAS verzweigt...oder habe ich das falsch verstanden.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
@geimist: ich hab meine Versuche abgebrochen; Ich komme gerade einfach nicht zum basteln.

Update: ich hab es jetzt doch nochmal versucht und bekomme keinen Account angelegt:Errors have occurred: masterpasswordhash cannot be blank"

Ist ein Bug in dem Ruby-Port: https://github.com/jcs/bitwarden-ruby/issues/13
Die .net/msserver Variante ist mir einfach zu "fett" für reines Passwort-Management...
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.379
Punkte für Reaktionen
1.195
Punkte
234
… Update: ich hab es jetzt doch nochmal versucht und bekomme keinen Account angelegt:Errors have occurred: masterpasswordhash cannot be blank"

Ist ein Bug in dem Ruby-Port: https://github.com/jcs/bitwarden-ruby/issues/13
Die .net/msserver Variante ist mir einfach zu "fett" für reines Passwort-Management...

Danke fürs Feedback. Die mssql-Lösung ist mir für diesen Zweck auch zu oversized. Die sqlite-Datenbank der schlanken Lösung liegt schön im Dockerverzeichnis und lässt sich zu dem bequem wegsichern.

Wie gesagt: Account anlegen klappt (auch die Browsererweiterung und iOS-App lässt sich connecten) und Logindaten über die Erweiterung speichern klappt auch. Nur nicht das Einloggen im Webfrontend.

Nochmals eine Frage zur Erreichbarkeit der Dockeranwendung auf dem NAS aus dem Webbrowser heraus.
Ist nach obiger Beschreibung dies nur innerhalb des lokalen Netzwerkes möglich? Ich gebe dann bei Bitwarden als Server meine definierte Domain (z.B. die Subdomain bitwarden.yourdomain.de) ein und kann im lokalen Netzwerk synchronisieren?

Oder kommt man so auch von "draussen" rein? Wenn ich die Hilfeseite von Bitwarden richtig verstehe, brauche ich in diesem Fall eine feste, registrierte Domain (mit statischer IP), die auf das NAS verzweigt...oder habe ich das falsch verstanden.

Das sollte genauso mit einer DDNS (z.B. die von Synology) funktionieren. Ob du von draußen auf Bitwarden zugreifen kannst, hängt davon ab, ob du den Port im Router auf die DS weitergeleitet hast. Ohne Weiterleitung kannst du es auch im Heimnetz mit der lokalen IP der DS und dem entsprechenden Port nutzen können.
 

outlander4000

Benutzer
Mitglied seit
08. Jan 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
wow - da sieht man den Profi! Das ist definitiv die bessere Lösung. Danke!

Ich bekomme die Bestätigungsmail nicht zum Laufen. Scheint ein generelles Problem zu sein. Hat schon jemand Erfolg zu vermelden?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.379
Punkte für Reaktionen
1.195
Punkte
234
Wer es benötigt, hier nochmal das angepasste Zertifikat-Kopierskipt von haydibe.

Anzupassen sind die Variablen domain und bitwarden_certs

Rich (BBCode):
#!/bin/bash
# domain certificate is valid for
    domain=bitwarden.domain.de

# bitwarden certificate folder
    bitwarden_certs=/volume1/docker/bitwarden/bwdata/ssl/${domain}

# targetname of the crt and key file in the certificate folder
    bitwarden_crt=certificate.crt
    bitwarden_cacrt=ca.crt
    bitwarden_key=private.key


# uid:gid used to change ownership in certificate folder
    uid=root
    gid=root

# name of the docker image to restart 
    image=bitwarden/nginx

for current_domain_cert in /usr/syno/etc/certificate/_archive/*; do
    if [ -d ${current_domain_cert} ] && [ -f ${current_domain_cert}/cert.pem ];then
        openssl x509 -in ${current_domain_cert}/cert.pem -text | grep DNS:${domain} > /dev/null 2>&1
        domain_found=$?
        if [ "${domain_found}" = "0" ]; then
            # time of last file change, seconds since Epoch
            last_change_cert_key=$(stat -c %Y ${current_domain_cert}/privkey.pem)
            if [ -f ${bitwarden_certs}/${bitwarden_key} ];then 
                last_change_bitwarden_cert_key=$(stat -c %Y ${bitwarden_certs}/${bitwarden_key})
            else 
                last_change_bitwarden_cert_key=0
            fi
            if [ ${last_change_bitwarden_cert_key} -le ${last_change_cert_key} ]; then
            
                echo "bitwarden ssl certificate is outdated… updating from domain certificate"
                cp ${current_domain_cert}/privkey.pem ${bitwarden_certs}/${bitwarden_key}
                cp ${current_domain_cert}/cert.pem ${bitwarden_certs}/${bitwarden_crt}
                cp ${current_domain_cert}/chain.pem ${bitwarden_certs}/${bitwarden_cacrt}
                # original:            cat ${current_domain_cert}/cert.pem ${current_domain_cert}/fullchain.pem > ${bitwarden_certs}/${bitwarden_crt}

                echo "changing ownership of gitlab certificates"
                chown ${uid}:${gid} ${bitwarden_certs}/*
                chmod 444 ${bitwarden_certs}/*

                echo "restarting bitwarden-nginx container to activate new certificate"
                container_id=$(docker ps | grep "${image}" | cut -c1-12)
                docker stop ${container_id}
                docker start ${container_id}
                echo "bitwarden ssl certificate update"

            else
                echo "nothing to do, bitwarden ssl certifiacte is same or newer than the domain ssl certificate"
            fi
        fi
    fi
done
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Danke für die Anpassung! Das Skript ist halt schweine praktisch :) Es hat schon eine weile gedauert, bis die Erkennung für ein erneutes Zertifikat richtig gessesen hat...

Die von dir ausdokumentierte Zeile ist eingetlich auch blödsinn, gewesen, stamm noch aus einem Forums-Beitrag aus dem US-Forum.
Ich hatte die damals unhinterfragt kopiert.

Gitlab braucht das fullchain,pem, damit das chain.pem gleich mit ausgeliefert wird, wenn ein Browser auf die Seite zugreift.
Statt 'cat' hätte es ein einfaches 'cp' der der fullchain.pem auch getan.

Ich würde euch allen übrigens empfehlen umbedingt 'Diffie-Hellman' anzuschalten und eine entsprechende Datei zu erzeugen (dauert leider ewig).
Selbst wenn jemand euren Private-Key in die Finger bekommt sollte, könnte dieser jemand eure bestehende Verbindungen (oder Mitschnitte davon -> tcpdump/wireshark) dann nicht mehr entschlüsseln.

update: glatt den Befehl vergessen:
Code:
openssl dhparam -out dhparam.pem 2048

Die 2048 müsst ihr natürlich durch die Schlüsselgröße eures Zertifikates ersetzen. Bspw. verwendet Letsencrypt 2048 Bit per Default.
 

adahmen

Benutzer
Mitglied seit
12. Okt 2009
Beiträge
559
Punkte für Reaktionen
10
Punkte
38
Bestätigungsmail funktionierte bei der Originallösung auch nicht. Bei der Ruby-Installation werde ich gar nicht danach gefragt.

Welche Mais meint Ihr genau? Bei mir schickt Bitwarden entsprechende Mails (zum Beispiel um seine Mail-Adresse zu verifizieren).
Ich habe die Original-Anwendung auf einer 415+ am laufen.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.379
Punkte für Reaktionen
1.195
Punkte
234
Bitwarden (original) schickt überhaupt keine Mails …
Hast du was bzgl. der Mails konfiguriert?


Wäre mal interessant zu wissen, wie bitwarden überhaupt die E-Mails senden möchte, wenn man gar keinen SMTP-Server irgendwo eintragen kann …:confused:
 
Zuletzt bearbeitet:

adahmen

Benutzer
Mitglied seit
12. Okt 2009
Beiträge
559
Punkte für Reaktionen
10
Punkte
38
Bitwarden (original) schickt überhaupt keine Mails …
Hast du was bzgl. der Mails konfiguriert?


Wäre mal interessant zu wissen, wie bitwarden überhaupt die E-Mails senden möchte, wenn man gar keinen SMTP-Server irgendwo eintragen kann …:confused:

Hhhmm, dann scheine ich wohl eine besondere Version zu haben ... denn bei mir kann ich in der global.override.env im Ordner bwdata/env den smtp-Zugang konfigurieren:

globalSettings__mail__replyToEmail=xyz@web.de
globalSettings__mail__smtp__host=smtp.web.de
globalSettings__mail__smtp__username=xyz@web.de
globalSettings__mail__smtp__password=passwort
globalSettings__mail__smtp__ssl=true
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__useDefaultCredentials=false

Klappt einwandfrei ...
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.379
Punkte für Reaktionen
1.195
Punkte
234
Die .env-Dateien hatte ich erst gar nicht beachtet, aber die hatte ich jetzt auch entdeckt. Brachte aber zunächst nichts (ich hatte nur den API-Container neugestartet). Erst nachdem ich es in den Containern bitwarden-api und bitwarden-identity in den Umgebungsvariablen eingetragen hatte und ich alle gestoppt und neugestartet hatte, ging es jetzt.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat