VaultWarden es una alternativa ligera y eficiente al servidor oficial de Bitwarden que permite gestionar contraseñas de forma segura y privada


VaultWarden es una alternativa ligera y eficiente al servidor oficial de Bitwarden que permite gestionar contraseñas de forma segura y privada al estar desarrollado en Rust y ser totalmente compatible con las aplicaciones oficiales de Bitwarden ofreciendo cifrado de extremo a extremo y un menor consumo de recursos al permitir el uso de SQLite en lugar de PostgreSQL lo que facilita su instalación y mantenimiento además de hacerlo ideal para dispositivos con recursos limitados como una Raspberry Pi o un servidor pequeño

Su despliegue es muy sencillo gracias a Docker permitiendo su instalación en pocos minutos sin configuraciones complejas y ofreciendo opciones avanzadas de personalización como la posibilidad de permitir registros configurar dominios personalizados y activar autenticación en dos pasos

Es una solución perfecta para quienes buscan independencia y control sobre sus datos sin depender de servidores externos ni pagar suscripciones premium brindando una forma accesible y segura de gestionar credenciales con la confianza de que todo el almacenamiento está bajo control del usuario

Instalación de Docker

Para instalar VaultWarden es necesario utilizar Docker, de esta manera será muy sencillo hacer la actualización y despliegue:

Instalación de Docker en Debian 12
Docker es una aplicación que simplifica el proceso de gestión de los procesos de las aplicaciones en contenedores. Los contenedores le permiten ejecutar sus aplicaciones en procesos aislados de recursos.
💡
Este tutorial es para Debian 12, pero si estás usando otra distro diferente, puedes usar el desplegable de ese artículo para seleccionar tu distro.

Instalación y configuración de Nginx Proxy

Utilizaremos Nginx Proxy para poder configurar acceso a través de dominio con SSL, para ello lo primero será instalar Nginx:

apt install nginx

Por el momento, paramos el servicio ya que tenemos que hacer algunas configuraciones. Lo primero será utilizar el fichero de configuración siguiente, pero antes creamos el fichero:

cd /etc/nginx/sites-enabled/
touch vault.conf

Y añadimos lo siguiente:

# The `upstream` directives ensure that you have a http/1.1 connection
# This enables the keepalive option and better performance
#
# Define the server IP and ports here.
upstream vaultwarden-default {
  zone vaultwarden-default 64k;
  server 127.0.0.1:8080;
  keepalive 2;
}

# Needed to support websocket connections
# See: https://nginx.org/en/docs/http/websocket.html
# Instead of "close" as stated in the above link we send an empty value.
# Else all keepalive connections will not work.
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      "";
}

# Redirect HTTP to HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name [DOMINIO];

    return 301 https://$host$request_uri;
}

server {
    # For older versions of nginx appended http2 to the listen line after ssl and remove `http2 on`
    listen 443 ssl;
    listen [::]:443 ssl;
    #http2 on;
    server_name [DOMINIO];

    # Specify SSL Config when needed
    ssl_certificate /etc/letsencrypt/live/[DOMINIO]/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/[DOMINIO]/privkey.pem;
    #ssl_trusted_certificate /path/to/certificate/letsencrypt/live/vaultwarden.example.tld/fullchain.pem;
    add_header Strict-Transport-Security "max-age=31536000;";
    client_max_body_size 525M;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    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;

    location / {
      proxy_pass http://vaultwarden-default;
    }
}
💡
Recuerda cambiar [DOMINIO] por tu dominio antes de guardar el documento.

Tras guardar nuestra configuración, editamos el fichero de configuración de Nginx para cambiar una cosa:

nano /etc/nginx/nginx.conf 

Tenemos que buscar el parámetro server_name_hash_bucket_size descomentarlo y cambiar el valor por 128:

server_names_hash_bucket_size 128;

Instalación del SSL

A continuación, configuraremos el certificado SSL. Para ello, primero instalaremos los paquetes necesarios para generar el certificado con Let's Encrypt.

apt install certbot python3-certbot-nginx

Y generamos el certificado:

certbot certonly

Vamos a generar sólo el certificado para poder levantar Nginx sin problemas, así que seguiremos los pasos para generarlo.

Una vez se haya generado, comprobamos la configuración de Nginx:

nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Tras obtener un resultado correcto del fichero de configuración, podemos iniciar de nuevo nuestro Nginx:

systemctl start nginx

Configuración de Docker

Para configurar la imagen de Docker utilizaremos Docker Compose, ya que facilita mucho el despliegue de todo. Primero prepararemos el entorno, creamos el directorio:

mkdir /opt/vaultwarden
touch /opt/vaultwarden/compose.yaml

Y editamos el fichero de configuración /opt/vaultwarden/compose.yaml:

nano /opt/vaultwarden/compose.yaml

Añadimos la siguiente configuración:

version: "3.8"

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      SIGNUPS_ALLOWED: "false"
    volumes:
      - ./opt/vaultwarden/:/data/
    ports:
      - 127.0.0.1:8080:80

En el apartado de environment podemos poner toda la configuración que necesitemos, por ejemplo la configuración de correo:

    environment:
      SMTP_HOST: "smtp.example.com"
      SMTP_FROM: "noreply@voidnull.es"
      SMTP_PORT: 465
      SMTP_USERNAME: "noreply@voidnull.es"
      SMTP_PASSWORD: "contraseña"

Si necesitáis configurar algunas cosas más, podéis revisar la Wiki donde está toda la explicación para configurar todo lo necesario.

Configuration overview
Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs - dani-garcia/vaultwarden

Una vez tenemos toda la configuración a nuestro gusto, podemos levantar el contenedor con:

docker compose up -d

Salida comando

[+] Running 2/2
✔ Network vw-data_default Created
0.1s ✔ Container vaultwarden Started

Acceder a la interfaz web

Si accedemos al dominio que hemos configurado, tendremos acceso a la interfaz de VaultWarden:

Podemos crear una cuenta nueva haciendo clic "Crear cuenta":


Más sobre ./voidNull

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación