Anleitung Vaultwarden/Bitwarden nur über VPN und ohne Portfreigabe

Paddy0293

Lt. Commander
Registriert
Jan. 2012
Beiträge
1.063
Hallo :)

ich habe vor einiger Zeit Bitwarden/Vaultwarden für mich entdeckt und wollte dies nur über meinen internen VPN ohne Portfreigabe benutzen. Leider, ist dies Zwecks https Zwang gar nicht so einfach. Leider findet man im Internet nicht wirklich gute bzw. einfache Lösungen. Nach stundenlanger Recherche und rum probieren habe ich mit Hilfe eines netten Discord Users, die für mich perfekte Lösung gefunden und würde diese gerne mit euch teilen :)

Ich gehe davon aus das bei allen Docker installiert ist:

Falls ihr OMV benutzt müsst ihr noch den Port 80 auf einen anderen Port umlegen, da nginx den Port 80 benötigt.

1. nginx installieren
Als erstes installieren wir nginx in unserem Docker, ich habe dies über Stacks getan, hier mal der Auszug mit Erklärungen

Code:
version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80' #zwingend Port 80 für http Seiten
      - '511:81'
      - '443:443'#zwingend Port 443 für https Seiten
    volumes:
    - eurerSpeicherpfad:/data
    - eurerSpeicherpfad:/etc/letsencrypt

Ihr könnt natürlich auch einen anderen Port benutzen, dann müsst ihr bei eurer gewünschten Seite den Port mit angeben (zum Beispiel paddy0293.local.de:6555), was eigentlich nicht Sinn der Sache ist.


2. vaultwarden installieren

Code:
version: '3'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    ports:
    3000:80 # könnt 3000, wie euch beliebt
    environment:
      - WEBSOCKET_ENABLED=true # Enable WebSocket notifications.
      - ADMIN_TOKEN={{ADMIN_TOKEN}} # Passwort setzen für das Admin Panel
      - SIGNUPS_ALLOWED=false
    volumes:
      - ./vw-data:/data

Jetzt kommt das Problem weshalb ich den ganzen Aufwand überhaupt betrieben habe:

1650968788282.png


Jetzt gibt es 2 Varianten, eine kostenlose und eine kostenpflichtige (2,50€ im Jahr)
Ich erläutere erst einmal nur die kostenpflichtige Variante wenn Bedarf besteht auch gerne die kostenlose :)

Ich habe mir eine Domain gekauft über netcup gekauft, über die ich meine Bitwarden Domain ansteuern möchte.
Ich kann ab hier nur noch von Netcup sprechen.
Sobald ihr die Domain gekauft habt müsst ihr euch eine API erstellen, die ist zwingend notwendig für das Letsencrypt Zertifikat.
Die macht ihr im Netcup Controlpanel unter Stammdaten -> API
Nun erstellt ihr ein API Passwort und ein API Key

1650968863630.png


Jetzt lassen wir via nginx ein letsencrypt Zertifikat erstellen

1650968888996.png


1650968936672.png


dns_netcup_customer_id = eure Login ID
dns_netcup_api_key = euren Netcup API Key
dns_netcup_api_password = euer Netcup API Password
Propagation Seconds = 600 #wird von netcup empfohlen

Dann auf Save und einen Kaffee trinken gehen, dies dauert einen kleinen Moment :)

So jetzt haben wir erfolgreich schon mal unser Cert erstellt ohne das wir einen Port öffnen mussten
Jetzt müssen wir nur noch ein Proxhost erstellen.
1650968980628.png


1650969027695.png


Unter SSL, euer grad erstelltes Cert auswählen

1650969086098.png


Speichern, schon habt ihr eine erfolgreiche Umleitung auf euren Vault via Https.
Jetzt kommt es darauf an, ob ihr über einen DNS Server verfügt oder nicht.
Wenn ja, dann bitte die Domain mit eurer IP im DNS verknüpfen.
Wenn Nein, dann bleibt euch nur die Möglichkeit die Domain über die Hostdatei einzufügen, diese findet ihr unter:

System32\drivers\etc\hosts

Diese Datei editieren und am Zeilenende folgendes schreiben.

eure Valtwarden IP und eure Domain

Bsp. 192.168.0.0 netcupdomain.de

Speichern, in cmd noch ipconfig /flushdns -> löscht den Cache
Eure Netcup Domain ansurfen und glücklich sein :)

Wenn ihr via Handy draufzugreifen wollt müsst ihr nur eure lokale IP eingeben, diese benötigt keine Https und somit müsst ihr auch keine Host Datei anpassen.

Ich hoffe das kleine Tutorial hilft euch :)
Bei Fragen oder Feedback einfach hier melden.
Viele Grüße

Paddy
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Xiaolong, cosmo45, kidkaracho und 6 andere
Tolle und ausführliche Anleitung, aber eine Anmerkung bzw Ergänzung meinerseits:

Die DNS API von Netcup kann auch prima dafür genutzt werden Lets Encrypt Zertifikate mit der DNS Challenge zu erstellen. Damit muss nicht ein einziger Port in der Firewall geöffnet werden, da die Überprüfung dann nicht mittels Webrequest direkt auf deinen Server stattfindet, sondern ausschließlich per DNS und somit über den Netcup DNS Server.

So handhabe ich das mit den Zertifikaten in meinem Homelab, das auch nur per VPN erreichbar ist. :)

Acme.sh zum Beispiel bringt die benötigte Schnittstelle zur Netcup API (und natürlich vielen weiteren) direkt mit.

Edit: ich sollte mich nicht ablenken lassen, darauf beziehst du dich ja weiter unten sogar selbst. Sorry. 😐😅
 
  • Gefällt mir
Reaktionen: madmax2010 und Paddy0293
Der Lord schrieb:
Die DNS API von Netcup kann auch prima dafür genutzt werden Lets Encrypt Zertifikate mit der DNS Challenge zu erstellen. Damit muss nicht ein einziger Port in der Firewall geöffnet werden, da die Überprüfung dann nicht mittels Webrequest direkt auf deinen Server stattfindet, sondern ausschließlich per DNS und somit über den Netcup DNS Server.
Genau das hat er doch oben beschrieben?

Edit: man könnte noch ergänzen, dass wenn man eine Domain woanders registriert hat und somit keine API nutzen kann, alternativ die Nameserver auf Cloudflare umstellen kann (kostenlos) und darüber per DNS challenge Zertifikate erstellen kann.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010 und Paddy0293
Der Lord schrieb:
Acme.sh zum Beispiel bringt die benötigte Schnittstelle zur Netcup API (und natürlich vielen weiteren) direkt mit.
Acme.sh habe ich mir auch angeschaut, leider war dies überhaupt nicht Nutzerfreundlich bzw. hätte ich das nach einem Jahr wieder vergessen^^ Wollte es so einfach wie möglich machen, das es viele nachbauen können.

Weil wie ich oben schon sagte gibt es kaum richtige Tutorials dafür, wenn dann nur zerstückelte oder komplizierte via Caddy oder so .... zumindest habe sowas einfaches mit Clicki Bunti wie oben beschrieben nicht gefunden...

Malaclypse17 schrieb:
Genau das hat er doch oben beschrieben?

Edit: man könnte noch ergänzen, dass wenn man eine Domain woanders registriert hat und somit keine API nutzen kann, alternativ die Nameserver auf Cloudflare umstellen kann.

Wenn du magst kannst du gerne eine Anleitung dazu machen :) dann hänge ich die mit rein...
Bin aktuell ganz schön durch mit dem Thema, war ja der absolute Anfänger was das ganze DNS Zeug betrifft.
Musste erstmal viel Lesen und habe auch viele Fehler gemacht ^^

edit: mein größtes Problem war das ich nginx auf Port 3000:443 gemappt hatte und dann versucht habe die Seite aufzurufen, bis da mal draufgekommen bin (auch nur mit Hilfe) dass es 443:443 sein muss
 
Zuletzt bearbeitet:
Grundsätzlich kein schlechter Ansatz allerdings würde ich von folgendem nicht ausgehen:
Paddy0293 schrieb:
Ich gehe davon aus das bei allen Docker installiert ist:
eine kurze Erklärung wie man Docker bekommt und was es ist wäre ggf angebracht.
Auch fehlt mir eine Sektion die erklärt wie man das ganze vernünftig updated.
 
  • Gefällt mir
Reaktionen: H3llF15H und Der Lord
@M-X danke für dein Feedback:)
Mit der der ganzen updaterei kann ich gerne nachreichen ... :)
Aber wie man Docker installiert könnte ich auch nur auf ein Video verweisen, da ich es über OMV installiere und ich kann ja hier nichts posten was ich selber nicht gemacht habe ;) ich hoffe du verstehst mich da :)
 
Paddy0293 schrieb:
System32\drivers\etc\hosts

Diese Datei editieren und am Zeilenende folgendes schreiben.

eure Valtwarden IP und eure Domain

Bsp. 192.168.0.0 netcupdomain.de

Speichern, in cmd noch ipconfig /flushdns -> löscht den Cache
Eure Netcup Domain ansurfen und glücklich sein :)

Wenn ihr via Handy draufzugreifen wollt müsst ihr nur eure lokale IP eingeben, diese benötigt keine Https und somit müsst ihr auch keine Host Datei anpassen.
Als Alternative:
installiere dir ein eigenen DNS-Server (ebenfalls in Docker, evtl. den weit verbreiteten Pihole) und richte dort ein CNAME für die IP ein. Dann kann jedes Gerät, egal ob Handy oder Rechner, egal ob per VPN nach Hause verbunden oder lokal im Netzwerk, über den DNS Server die IP auflösen und VaultWarden erreichen.

und: sollte man einmal den Server umziehen, aus welchem Grund auch immer, muss man die IP nur an einer zentralen Stelle korrigieren.
 
@spcqike habe ich vor :) aber will das extern vom Server haben, deshalb suche ich auch aktuell nen Raspberry...
Will nicht das der ganze Traffic übern Server läuft :)
Deshalb hatte ich ja die beiden möglichen Optionen genannt :)

edit: @spcqike würde für wireguard und pihole eigentlich ein pizero ausreichen ?
 
Zuletzt bearbeitet:
@Paddy0293 klar. Kommt halt auf die Bandbreite an die der PiZero durch WireGuard schaufeln soll. Aber für DNS, Passwort Manager und kleine interne Webseiten sollte das mehr als ausreichen.
Mit nem Gigabit wird man wohl allerdings keine Daten vom NAS zuhause anrufen können.

Ich verstehe nur nicht, wenn du bereits einen (lokalen) Server hast, mit Docker, warum du das ganze auf einen Raspberry packen möchtest…
 
@spcqike bitwarden kann ja aufm Hauptserver laufen ;) geht nur um Wireguard und pihole.
Hätte das einfach gerne getrennt, damit der ganze Traffic nicht über dem Hauptserver läuft.
Machen aber viele, zumindest was ich so gelesen habe :)
 
Also wegen dem Traffic würde ich mir da keine Sorgen machen. Im Gegenteil, läuft der Traffic so oder so über den server, auf dem nginx (NPM) läuft. Zumindest was vaultwardwn Und weitere Dienste angeht, die man per Domain erreichen will.

DNS Traffic ist minimal. Wenige kb/s.

WireGuard kommt halt drauf an, was alles getunnelt werden soll. Aber abgesehen von Kopiervorgängen vom NAS ist das auch alles minimalistisch. (Zumal da zu Hause meistens der Upload limitiert, und nicht das lokale Gigabit Netzwerk)

Ein weiteres Gerät zum administrieren und absichern wäre mir, nur für DNS, einfach zu viel :) das läuft auf dem eh vorhandenen Docker Server nebenbei mit.

(WireGuard läuft bei mir direkt auf der opnsense Firewall)
 
  • Gefällt mir
Reaktionen: Paddy0293
@spcqike vielleicht sollte ich das doch nochmal überlegen;) vielen lieben Dank für dein Feedback :)
 
  • Gefällt mir
Reaktionen: spcqike
Naja, es gibt ja nicht DEN (einen) richtigen Weg. Es gibt viele Wege und jeder hat sein Für und Wider.

Ein weiteres Gerät macht bspw für eine / in einer DMZ Sinn. Oder als sekundärer DNS zur Redundanz. Auch ist ein weiteres Gerät für Einsteiger manchmal sinnvoll, da man „spielen“ kann ohne Gefahr zu laufen, sein Hauptsystem zu zerschiessen (Testlabor, sofern man keine Virtualisierung nutzen kann oder möchte).

Ich für mich verwende aber kaum noch raspberries für „kritische“ Sachen. Und da zählt der DNS Server bei mir eben genauso dazu, wie der WireGuard Zugang zum Netzwerk. (Dafür sind mir die SD Karten zu unsicher und alles andere (SSD-Boot), da der HP Server und der NUC so oder so da sind, zu teuer; auf PXE-Netzwerk Boot hatte ich keine Lust zu Hause :) )
 
  • Gefällt mir
Reaktionen: Paddy0293
@spcqike aber wieso ist ein DNS bei dir kritisch?
Wenn die SD abraucht kann man ja erstmal ohne DNS weiter machen, klar gehen dann wahrscheinlich 1,2 gebindete Seiten nicht aber mit regelmäßigen Backups ist das doch schnell wieder hergestellt :)
 
Ohne DNS geht nach extern „gar nichts“.

Wenn man pihole so einstellt, wie es gedacht ist, und zwar als alleiniger lokaler DNS Server damit die Clients keine Werbung mehr auflösen können, kann man auch extern nichts mehr erreichen / auflösen wenn pihole wegfällt.

Natürlich kann man per dhcp einen zweiten DNS Server mitgeben, aber das ist am Thema vorbei. Dann fragen die Clients auch so hier und da mal den zweiten, nicht blockenden Server.

Treibt man es weiter (den Port 53/UDP nach extern in der Firewall blockieren, damit alle Clients und Apps gezwungen werden den per dhcp mitgeteilten DNS Server zu nutzen), kann man erst recht keine externen DNS Server verwenden. Außer eben der/die pihole (wie bei mir)
 
@spcqike ich versteh dich schon bzw. ich weiß auf was hinaus willst :)
Läuft pihole eigentlich besser als AdGuard? hatte vor einiger Zeit AdGuard probiert und war garnicht beigeistert ...
Werbung wieder anschalten hat trotz flush dns ect bei mir gar nicht funktioniert.
Hoffe das es mit pihole besser läuft
 
Kann ich nicht beurteilen. Ich benutze seit Jahren nur pihole.

Was meinst du mit Werbung anschalten?
Ich nutze die pihole API um den Blocker für bspw 5 Minuten zu deaktivieren. Damit bekomme ich ggf in der Zeit Werbung. Das geht bisher problemlos.
 
@spcqike zum Beispiel die Werbung hier in Computerbase freizuschalten hat null funktioniert oder die harwareluxx GPU Verfügbarkeitslinks habe alle nicht funktioniert. Adguard kann man sozusagen abschalten, das keine Werbung mehr geblockt wird, dies hat leider null funktioniert....
 
Also, man sieht im query log schon sehr detailliert, welcher Client versucht hat welche Domain aufzulösen. Daran lässt sich nachträglich allerhand wieder freigeben (wenn die Filter Liste im Vorfeld so riesig war)

Zusätzlich lässt sich das filtern für einzelne Clients individuell einstellen. Und man kann es recht bequem für eine gewisse Zeit oder dauerhaft komplett abschalten. Das hat bei mir bisher funktioniert wie vorgesehen.

Für einzelne Seiten und Dienste lasse ich aber in dee Regel keine Werbung zu. Seiten, die ich unterstützen will, spende ich oder hole mir wie bei CB ein Abo. Ich bin der Meinung davon haben die Seitenbetreiber mehr als von Werbung, die sie zumeist nicht direkt beeinflussen können.
Domains gebe ich nur wieder frei, wenn die Webseiten in ihrer Funktion komplett eingeschränkt wurden (wie bspw bei Reddit oder auch DM)
Seiten, die Werbeblocker erkennen und Nutzer aussperren, die ich aber nicht zwingend unterstütze weil ich sie nicht he regelmässig nutze, besuche ich einfach nicht (bspw Bild und jede andere Seite des Verlags)
 
  • Gefällt mir
Reaktionen: Paddy0293
Malaclypse17 schrieb:
Edit: man könnte noch ergänzen, dass wenn man eine Domain woanders registriert hat und somit keine API nutzen kann, alternativ die Nameserver auf Cloudflare umstellen kann (kostenlos) und darüber per DNS challenge Zertifikate erstellen kann.
Moin @Malaclypse17
Wie @Paddy0293 auch, wäre ich an einer (ausführliche) Beschreibung interessiert, wie dies mit Cloudflare funktionieren würde. Hintergrund: meine Domain liegt bei Strato - und wie werden von Nginx nicht unterstützt. ;)

Vielen Dank vorab :)
 
Zurück
Oben