Herramientas de usuario

Herramientas del sitio


informatica:software:aplicaciones_web:vaultwarden

vaultwarden

Gestor de contraseñas de código abierto.

Las notas que aquí aparecen se centran en vaultwarden, una implementación de la API de servidor de Bitwarden escrito en Rust, compatible con los clientes oficiales de Bitwarden y con muchísimo menos consumo de recursos para poder instalar nuestro propio servidor.

Clientes

Hay clientes oficiales para:

  • Linux
  • Windows
  • macOS
  • Android
  • iOS

Extensiones de navegador

Instalación

Docker

version: "3.4"

services:
  app:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    environment:
      - VIRTUAL_HOST=vault.dominio.com # obligatorio para nginx-proxy
      - LETSENCRYPT_HOST=vault.dominio.com # obligatorio para letsencrypt proxy
      - LETSENCRYPT_EMAIL=pepito@dominio.com # obligatorio para letsencrypt proxy
    volumes:
      - ./data:/data

La instalación por defecto utiliza SQLite como motor de base de datos. Para el ejemplo anterior, la información está accesible desde el directorio data.

Navegadores como Chrome o Firefox, no permite el uso de APIs de Web Crypto en contextos inseguros, así que hay que habilitar el acceso a Bitwarden mediante HTTPS. En la documentación oficial ponen unos ejemplos.

Configuración

La configuración se puede realizar mediante variables de entorno o a través de la página de administración. En el segundo método, se crea un fichero config.json que tiene prioridad frente a lo definido mediante variables de entorno. Esto es importante tenerlo en cuenta: si existe, config.json está por encima de las variables de entorno.

Deshabilitar registro

Por defecto, vaultwarden permite crear cuentas a cualquiera. Si queremos deshabilitar el registro automático, hay que indicarlo con la siguiente variable de entorno:

SIGNUPS_ALLOWED=false

Por ejemplo, en un despliegue con Docker:

version: "3.4"

services:
  app:
    image: vaultwarden/server:latest
    container_name: bitwarden
    environment:
      - SIGNUPS_ALLOWED=false
    volumes:
      - ./data:/data

Aunque lo desactivemos, el botón de Crear cuenta seguirá apareciendo, pero el proceso terminará en error, es decir, que no será posible la creación de la cuenta.

A través del fichero config.json sería:

  "signups_allowed": false

Administración

Es posible acceder a un panel de administración donde poder gestionar las opciones de Bitwarden, ver los usuarios registrados, enviar invitaciones… Para ello hay que añadir la variable de entorno ADMIN_TOKEN y asociarla con una valor difícil de averiguar:

version: "3.4"

services:
  app:
    image: bitwardenrs/server:latest
    container_name: bitwarden
    environment:
      - ADMIN_TOKEN=una_ristra_de_caracteres_que_no_sepa_nadie_facilmente
    volumes:
      - ./data:/data

Este token es la contraseña que se usará para acceder a la sección de administración, al subdirectorio /admin: https://midominio.com/admin

Cuando hagamos algún cambio en la sección de administración, se generará un fichero config.json en nuestro archivo de datos (./data en los ejemplos)

Almacenamiento

Base de datos

La imagen de docker de vaultwarden tiene soporte de SQLite, MySQL y PostgreSQL. El soporte de SQLite es el más usado y probado, así que es el que recomiendan para la mayoría de los usuarios.

Al utilizar SQLite, el directorio /data tendrá la siguiente estructura:

data
├── attachments          # Ficheros adjuntos
│   └── <uuid>
│       └── <random_id>
├── config.json          # Configuración de la página de administración (solo si está habilitada)
├── db.sqlite3           # Fichero principal de SQLite.
├── db.sqlite3-shm       # Fichero de memoria compartida de SQLite (no siempre está).
├── db.sqlite3-wal       # Log de "write-ahead" de SQLite (no siempre está).
├── icon_cache           # Caché de favicons.
│   ├── <domain>.png
│   ├── example.com.png
│   ├── example.net.png
│   └── example.org.png
├── rsa_key.der          # Ficheros `rsa_key.*` que se utilizan para firmar los tokens de autenticación.
├── rsa_key.pem
└── rsa_key.pub.der

Copia de seguridad

Para hacer una copia de la base de datos si usamos la modalidad con SQLite:

sqlite3 data/db.sqlite3 ".backup '/ruta/copias_seguridad/db-$(date '+%Y%m%d-%H%M').sqlite3'"

El anterior comando generará un fichero db-20211210-2230.sqlite3 si lo ejecutásemos el 10/12/2021 a las 22:30.

El resto de ficheros/directorios que tenemos que copiar:

  • attachments/: obligatorio.
  • rsa_key*: recomendado.
  • icon_cache/: opcional.

Para restaurar una instalación de vaultwarden, bastará con detener el servidor, copiar los ficheros en la ruta de data y listo.

Uso

Carpetas

Una de las formas de organizar las contraseñas es por carpetas.

Para crear subcarpetas (carpetas de otras carpetas) tenemos que crear una nueva con el nombre de la carpeta padre, una barra y el nombre de la subcarpeta. Por ejemplo, si tenemos una carpeta llamada Trabajo y queremos crear una dentro de ella llamada E-mail, tendríamos que crear una carpeta con el nombre Trabajo/E-mail

informatica/software/aplicaciones_web/vaultwarden.txt · Última modificación: por tempwin