⚪Vaultwarden mit Nginx Proxy Manager und Let's Encrypt absichern

In dieser Anleitung zeige ich dir, wie du deinen bereits laufenden Vaultwarden-Server ganz einfach mit dem Nginx Proxy Manager absicherst. Du erfährst Schritt für Schritt, wie du eine eigene Domain hinterlegst, ein kostenloses SSL-Zertifikat von Let's Encrypt aktivierst und den Zugriff über HTTPS ermöglichst – ganz ohne manuelles Zertifikatsmanagement. So schützt du deine Passwörter professionell und sicher vor unverschlüsseltem Zugriff.

Voraussetzungen:

Bevor wir loslegen, solltest du folgendes bereits erledigt haben:

  • Vaultwarden läuft bereits per Docker (z. B. über docker-compose)

  • Nginx Proxy Manager (NPM) ist installiert und erreichbar (z. B. http://<dein-server>:81)

  • Eine Domain oder Subdomain (z. B. vault.meine-domain.de) ist vorhanden und zeigt per A- oder CNAME-Eintrag auf deinen Server

Nginx Proxy Manager (NPM) ist noch nicht installiert?
Mit dieser Anleitung kannst du das nachholen:

1. Erstelle einen Ordner unter /opt/ z.b. npm
Dies machst du wie folgt: mkdir /opt/npm

2. Springe zum Ordner und erstelle die Datei docker-compose.yml mit folgenden Inhalt:
Dies machst du wie folgt:
cd /opt/npm
nano docker-compose.yml

Fügen dieses Script ein:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      # Mysql/Maria connection parameters:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
      MARIADB_AUTO_UPGRADE: '1'
    volumes:
      - ./mysql:/var/lib/mysql

Die rot makierten Eintragungen kann man abändern. 

Wenn der Nginx Proxy Manager läuft kannst du dich mit den Standard Zugangsdaten einloggen:
URL: http://<ip-adresse>:81
Email: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
Password: changeme

Domain in Nginx Proxy Manager einrichten

  1. Öffne das Nginx Proxy Manager Webinterface (z. B. http://dein-server:81)

  2. Gehe zu „Proxy Hosts“„Add Proxy Host“

  3. Fülle die Felder wie folgt aus:

🔹 Reiter: „Details“

  • Domain Names:
    z. B. vault.meine-domain.de

  • Forward Hostname / IP:

    • Wenn Vaultwarden im selben Docker-Netz ist: vaultwarden

    • Sonst: localhost oder 127.0.0.1

  • Forward Port: 80 (oder 8080, je nach Setup)

  • Block Common Exploits aktivieren

  • Websockets Support aktivieren

🔹 Reiter: „SSL“

  • SSL-Typ: Request a new SSL Certificate

  • E-Mail-Adresse eingeben (für Let’s Encrypt)

  • ✅ „Force SSL“ aktivieren

  • ✅ „HTTP/2 Support“ aktivieren

  • ✅ „HSTS“ aktivieren

  • ✅ AGB von Let’s Encrypt akzeptieren

Speichern


Falls du Vaultwarden noch nicht mit deiner Domain konfiguriert hast, passe die docker-compose.yml an:

    environment:
      DOMAIN: "https://vault.meine-domain.de"
      WEBSOCKET_ENABLED: "true"
      SIGNUPS_ALLOWED: "false"
      ADMIN_TOKEN: "hier_sicheres_token_einfügen"

danach das ausführen: docker compose restart

Du solltest nun deinen Vaultwarden Instanz über deine Domain erreichen können.

Für den Admin-Zugang musst du das ADMIN_TOKEN gesetzt haben.