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:
Password: changeme
Domain in Nginx Proxy Manager einrichten
Öffne das Nginx Proxy Manager Webinterface (z. B.
http://dein-server:81
)Gehe zu „Proxy Hosts“ → „Add Proxy Host“
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
oder127.0.0.1
Forward Port:
80
(oder8080
, 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.
Aufruf: https://vault.meine-domain.de
Admin-Panel: https://vault.meine-domain.de/admin
Für den Admin-Zugang musst du das
ADMIN_TOKEN
gesetzt haben.