# Vaultworden - Passwortmanager

# Installation

# Docker installation

### Beschreibung:

Vaultwarden Docker installation.

### Docker installieren

```
apt install docker.io docker-compose curl
```

Verzeichnisse erstellen

```
mkdir -p /root/vaultwarden/nginx/ssl
mkdir -p /root/vaultwarden/vw-data
```

  
Vaultwarden braucht nur eine Docker compose datei.  
Dort die Domain rein.

```
nano /root/vaultwarden/docker-compose.yml
```

```
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: ${DOMAIN}
      SIGNUPS_ALLOWED: ${SIGNUPS_ALLOWED}
      ADMIN_TOKEN: ${ADMIN_TOKEN}
    volumes:
      - ./vw-data/:/data/
    ports:
      - 80:80
```

#### Selbstsigniertes Zertifikat mit nginx:

Möchten wir das ganze mit einem selbstsigniertem ssl Zertifikat haben aber lokal dann nochn ein nginx dazu.  
Dann müssen wir beim vaultwarden port 80 wieder löschen

```
  nginx:
    image: nginx:stable
    container_name: nginx-proxy
    volumes:
      - ./nginx-proxy.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/ssl:/etc/nginx/ssl
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - vaultwarden
    restart: always
```

Ein script

```
nano /root/vaultwarden/generate_certs.sh
```

```
#!/bin/bash
CERT_DIR="/root/vaultwarden/nginx/ssl"
mkdir -p $CERT_DIR

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout $CERT_DIR/key.pem -out $CERT_DIR/cert.pem -subj "/C=US/ST=Example/L=Example/O=Example/CN=example.com"
```

Script ausführbar machen

```
chmod +x /root/vaultwarden/generate_certs.sh
```

Script starten

```
cd /root/vaultwarden
./generate_certs.sh
```

Nginx config erstellen

```
nano /root/vaultwarden/nginx-proxy.conf
```

Inhalt

```
events {
  worker_connections 1024;
}

http {
  server {
    listen 80;
    return 301 https://$host$request_uri;
  }

  server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    location / {
      proxy_pass http://vaultwarden:80;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Upgrade websocket;
      proxy_set_header Connection Upgrade;
      proxy_read_timeout 20d;
      client_max_body_size 100M;
    }
  }
}
```

#### Mit Lets Encrypt Zertificat

Dazu in der docker-compose.yml die Ports 80 bei vaultwarden raus und diesen Abschnitt hinzufügen

```
  caddy:
    image: caddy:latest
    container_name: vaultwarden_caddy
    ports:
      - "80:80"
      - "443:443"
    restart: always
    environment:
      - CADDY_DOMAIN=${DOMAIN}
    volumes:
      - ./caddy_data:/data
      - ./caddy_config:/config
    command: caddy reverse-proxy --from ${DOMAIN} --to vaultwarden:80
```

env datei erstellen/abändern

```
nano /root/vaultwarden/.env
```

Inhalt

```
DOMAIN=vault.example.com
```

#### Container starten:

nun mit

```
docker-compose up -d
```

starten

### Konto erstellen:

Nun über Konto erstellen, konto Erstellen

### Konto erstellen deaktivieren:

Möchte man nicht das sich neue Benutzer anmelden können,

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/Ho5TYWt8gGVmUk5l-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/Ho5TYWt8gGVmUk5l-grafik.png)

Dann die .env editieren bzw anlegen

```
nano /root/vaultwarden/.env
```

Und abändern/hinzufügen zu

```
SIGNUPS_ALLOWED=false
```

Dann mit

```
docker-compose down
```

stoppen

und mit

```
docker-compose up -d 
```

wieder starten

Nun kann man sich nicht mehr anmelden

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/lIlBP8ZE5OyYlBzx-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/lIlBP8ZE5OyYlBzx-grafik.png)

Sollte das Anmelden trotzdem da sein mit STRG+F5 Seite mit cache neuladen aufrufen

### Admin Panel freischalten:  


#### Einrichten:

Das Panel ist unter zu erreichen : [https://ip/hostname/admin](https://ip/hostname/admin)

Sollte dieser Fehler kommen

```
The admin panel is disabled, please configure the 'ADMIN_TOKEN' variable to enable it
```

in der .env bei diesem Eeintrag ein Token einfügen, unbedingt neuen generieren, dieser ist ein Beispiel

```
ADMIN_TOKEN=$argon2id$v=19$m=65540,t=3,p=4$eHdqdCtHRFFacXVXV0ltMlZKWGw5ZGliUHV2QjdVdVB1NUMwbVJ6SU5NZz0$LGVY+2LrZit7cS7MoEPWyHKUHwfhUq0Q2GQE9DFcGEg
```

Token generieren ein passwort vergeben was dann zu einem salt wird

Dazu wird das Paket argon2 benötigt

```
apt install argon2
```

```
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
```

Ausgabe:

```
$argon2id$v=19$m=65540,t=3,p=4$eHdqdCtHRFFacXVXV0ltMlZKWGw5ZGliUHV2QjdVdVB1NUMwbVJ6SU5NZz0$LGVY+2LrZit7cS7MoEPWyHKUHwfhUq0Q2GQE9DFcGEg
```

Contaeiner neustarten mit down und up -d

#### Anmelden:

Das Panel ist unter zu erreichen : [https://ip/hostname/admin](https://ip/hostname/admin)

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/45jwKTBibnCwpXlf-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/45jwKTBibnCwpXlf-grafik.png)

Nun den token eingeben, das ist das Passwort was ihr für MyPassword verwendet habt

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/wkx2RzaSthZEGq18-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/wkx2RzaSthZEGq18-grafik.png)

### Einrichtung sends:  


Damit Sends funktioniert muss der Haken drin sen und die korrekte IP-Adresse / Hostname angeben sein.  
lässt sich einstellen im Admin Panel

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/scaled-1680-/ZjlhQZ5PaEVH9v0y-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-03/ZjlhQZ5PaEVH9v0y-grafik.png)