Vaultwarden im Container, nur unsichere Verbindung aus Heimnetz

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Ich habe dasselbe Ziel (Vaultwarden nur per VPN) und zu dem Thema folgende Anleitung von chatgpd erhalten.
Ob das wirklich so funktioniertt wird die Praxis dann zeigen....




Anleitung: VaultWarden mit selbstsigniertem Zertifikat in DSM​


1. Zertifikat in DSM erstellen​


  1. Melde dich in deiner DSM-Oberfläche an.
  2. Gehe zu Systemsteuerung → Sicherheit → Zertifikat.
  3. Klicke auf Hinzufügen → Neues Zertifikat hinzufügen.
  4. Wähle Selbstsigniertes Zertifikat erstellen.
  5. Gib einen Namen ein (z. B. „VaultWarden-SelfSigned“).
  6. Fülle die Felder aus (z. B. Domainname „vaultwarden.local“ oder die IP deiner VM).
    • ⚠️ Wähle hier den Hostnamen, den du auch später im Browser/Client benutzt.



2. Zertifikat exportieren und auf Clients installieren​


Damit Browser und Bitwarden-Apps nicht ständig meckern:


  1. Zertifikat aus DSM exportieren (.crt oder .pem).
  2. Auf deinen Clients installieren:
    • Windows: Rechtsklick → „Zertifikat installieren“ → Speicher „Vertrauenswürdige Stammzertifizierungsstellen“.
    • Linux/Mac: In den System-Zertifikatsspeicher importieren.
    • Android/iOS: Zertifikat auf das Gerät kopieren und in den Einstellungen installieren.

Damit vertraut dein Client dem Zertifikat → keine Warnungen mehr.




3. VaultWarden mit Zertifikat starten​


Angenommen, du nutzt Docker in DSM (Container Manager):


  1. Lege die Zertifikatsdateien ab, z. B. unter /volume1/docker/vaultwarden/ssl/:
    • cert.pem (Zertifikat)
    • privkey.pem (privater Schlüssel)
  2. Starte den Container mit TLS-Umgebungsvariablen, z. B.:
docker run -d \
--name vaultwarden \
-v /volume1/docker/vaultwarden/data:/data \
-v /volume1/docker/vaultwarden/ssl:/ssl \
-e ROCKET_TLS='{certs="/ssl/cert.pem",key="/ssl/privkey.pem"}' \
-p 443:80 \
vaultwarden/server:latest


👉 Jetzt läuft VaultWarden auf HTTPS mit deinem eigenen Zertifikat.




4. Zugriff & Clients​


  • Rufe VaultWarden im Browser auf:
    https://vaultwarden.local (oder IP-Adresse, je nachdem, was du beim Zertifikat eingetragen hast).
  • Clients (Browser-Extension, Mobile-Apps) akzeptieren die Verbindung, sobald dein Zertifikat auf dem Gerät importiert wurde.



✅ Ergebnis: VaultWarden läuft ohne Internet, mit eigenem Zertifikat, und alle Clients vertrauen der Verbindung.
Damit umgehst du die Limitierung, dass die Bitwarden-Apps fast immer HTTPS erwarten.
 
da muss trotzdem passen das der Client auch die richtige Adresse per DNS auflöst und das diese dann zum Zertifikat passt.
 
Vaultwarden (nur) im Heimnetz mit selbstsigniertem Zertifikat.


vaultwarden ohne domain im Heimnetz_02a.jpg vaultwarden ohne domain im Heimnetz_01a.jpg


Vaultwarden in Portainer, nur im Heimnetz und per VPN erreichbar. Die Installation auf Synology funktioniert problemlos ohne Domain, DDNS oder sonst was.
Nur wenige Änderungen der Anleitung von Marius (s.o.) sind notwendig, das Ganze ist in deutlich weniger als einer Stunde erledigt.


Die einzelnen Schritte:
- Mit PowerShell (oder sonstwie) ein Zertifikat für die (home) IP der Synology erstellen. (Gültigkeit bei mir:10 Jahre ;))
- Zertifikat ins Synology NAS importieren
- Die beiden importierten Zertifikatsdateien cert.pem & privkey.pem mit CP per Terminal aus /usr/syno/etc/certificate/system/default/
in den Ordner vaultwarden/certs vom Docker-Volume kopieren und in "vaultwarden.crt" und "vaultwarden.key" umbenennen.

- In Portainer im Stack vaultwarden diese beiden Zeilen hinzufügen:
volumes:
- /volume1/docker/vaultwarden/data:/data:rw
- /volume1/docker/vaultwarden/certs:/certs:ro
environment:
ROCKET_PORT: 4020
ROCKET_TLS: '{certs="/certs/vaultwarden.crt",key="/certs/vaultwarden.key"}'

Sofern kein Internetzugang besteht diese folgen Werte anpassen:
SIGNUPS_VERIFY: false: Deaktiviert die E-Mail-Verifizierung für neue Benutzer.
SIGNUPS_ALLOWED: true: Benutzer können sich selbst registrieren.
SMTP-Einstellungen: Auf leere Werte setzen, da ohne Internetzugang kein SMTP-Server
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Benie und plang.pl
Vaultwarden (nur) im Heimnetz mit selbstsigniertem Zertifikat.

Die einzelnen Schritte:
- Mit PowerShell (oder sonstwie) ein Zertifikat für die (home) IP der Synology erstellen. (Gültigkeit bei mir:10 Jahre ;))
Du hast das so schön geschrieben...
kannst vielleicht kurz dein PowerShell Befehl/Script schreiben, es gibt da so viele Möglichkeiten...
 
Okay, Transfer also mal andersherum, nicht vom Forum in eine AI, sondern von der AI ins Forum 😅

Ich habe PowerShell_ISE.exe dafür aufgerufen.
Die drei hervorgehobenen Werte entsprechend anpassen.




# Selbstsigniertes Zertifikat für Synology und Vaultwarden (kompatibel mit Windows PowerShell 5.1)

# Schritt 1: Zertifikat erstellen
$cert = New-SelfSignedCertificate `
-Subject "CN=192.168.100.2" `
-CertStoreLocation "Cert:\LocalMachine\My" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-NotAfter (Get-Date).AddYears(10) `
-KeyExportPolicy Exportable `
-FriendlyName "Synology DSM and Vaultwarden Certificate"


# Schritt 2: Pfade für Zertifikat und Schlüssel definieren
$certPath = "D:\zerti\vDSM_02.crt"
$keyPath = "D:\zerti\vDSM_02.key"


# Schritt 3: Zertifikat (Public Key) in PEM-Format exportieren
$certBytes = $cert.RawData
$certPem = @"
-----BEGIN CERTIFICATE-----
$([Convert]::ToBase64String($certBytes, [Base64FormattingOptions]::InsertLineBreaks))
-----END CERTIFICATE-----
"@
$certPem | Out-File -FilePath $certPath -Encoding ASCII


# Schritt 4: Privaten Schlüssel im PKCS#8-Format exportieren
$key = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
$keyBytes = $key.Key.Export([System.Security.Cryptography.CngKeyBlobFormat]::Pkcs8PrivateBlob)
$keyPem = @"
-----BEGIN PRIVATE KEY-----
$([Convert]::ToBase64String($keyBytes, [Base64FormattingOptions]::InsertLineBreaks))
-----END PRIVATE KEY-----
"@
$keyPem | Out-File -FilePath $keyPath -Encoding ASCII


# Schritt 5: Ausgabe der erstellten Dateien
Write-Host "Zertifikat wurde erstellt: $certPath"
Write-Host "Privater Schlüssel wurde erstellt: $keyPath"
 
  • Like
Reaktionen: jana-duedo
Zertifikat heißt also NICHT über die IP-Adresse; Vaultwarden über interne IP - mit oder ohne VPN - so aufrufen = nicht wirklich möglich

Vaultwarden benötigt zwingend HTTPS.
Solange der Browser das Zertifikat schluckt bzw. die Verbindung zulässt, klappt es.

Ich betreibe das ganze mit https://192.100.1.100:1234/, trotzdem klappt Vaultwarden bei mir im Heimnetz. Auch via Handy App. Und wenn ich dann via VPN ins Heimnetz einsteige, geht es weiterhin. Es gibt nur das selbstsignierte Synology Zertifikat, und das muss man dann halt im Browser hinterlegen/akzeptieren.
 
Am Rechner über das Browserplugin funktioniert vaultwarden nun auch mit meinem selbstsigniertem Zertifikat,
wie hast du das Zertifikat denn mit der Handy App zum Laufen bekommen?
 
Zuletzt bearbeitet von einem Moderator:
Vaultwarden läuft mit
Code:
xx.ddns.net:port
und das selbstsignierte Zertifikat habe ich im Android Zertifikatsspeicher eingespielt.
ZB per USB aufs Handy transferieren und dann drauf drücken. Dann installiert er es und zeigt Verbindungen dorthin als sicher an.

Dachte ich hab überall lokale IP, aber in der App doch nicht. Sorry. xx.ddns.net löst aber nur von intern oder via VPN richtig auf (geht wieder auf 192.100.1.100), extern geht das so nicht (da die Ports für meine public IP nicht frei geschalten sind).
 

Additional post fields

 

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