Instalando Vaultwarden en Raspberry Pi utilizando Docker

En el artículo anterior analicé el gestor de contraseñas Bitwarden y recomendé utilizarlo a través de una instancia privada de Vaultwarden. Un método sencillo para instalar Vaultwarden es mediante Yunohost, al cual le dediqué un artículo. En esta ocasión mostraré cómo hacerlo utilizando Docker utilizando una Raspberry Pi como referencia (Se puede adaptar a cualquier servidor basado en Debian o Ubuntu).

Necesitamos lo siguiente

  • Un servidor compatible con docker (Una Raspberry Pi funciona bien para esto)
  • Un servidor de correo

Para agregar el repositorio para docker necesitamos instalar algunas dependencias

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Despues agregamos el repositorio

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Ahora instalamos docker

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Instalamos NGINX como servidor web (también se puede utilizar Apache, pero no tiene el mismo rendimento)

sudo apt install nginx

Creamos un archivo de configuración para NGINX

sudo nano /etc/nginx/sites-enabled/vault.asgardius.company

Agregamos lo siguiente cambiando “vault.asgardius.company” por el nombre de host de nuestra instancia de Vaultwarden

server {
    listen 80;
    server_name vault.asgardius.company;

  # configuración proporcionada por Shauder 
  client_max_body_size 128M;

  location / {
    proxy_pass http://127.0.0.1:8181;
    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 /notifications/hub {
    proxy_pass http://127.0.0.1:3012;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
  
  location /notifications/hub/negotiate {
    proxy_pass http://127.0.0.1:8181;
  }
}

Editamos el archivo de configuración principal de NGINX

sudo nano /etc/nginx/nginx.conf

Agregamos lo siguiente dentro del bloque “http”

server_names_hash_bucket_size  64;

Reiniciamos NGINX

sudo systemctl restart nginx

Obtenemos un certificado on Let’s Encrypt

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

Ejecutamos Vaultwarden a través de Docker ajustando el nombre de host y token de administración de nuestra instancia (con los parámetros incluidos el contenedor se iniciará de forma automática)

sudo docker run -d --name bitwarden -v /vw-data/:/data/ -e DOMAIN=https://vault.asgardius.company -e ADMIN_TOKEN=<random-string> -e ROCKET_PORT=8181 -e WEBSOCKET_ENABLED=true -p 127.0.0.1:8181:8181 -p 127.0.0.1:3012:3012 --restart always vaultwarden/server:latest

Ahora podremos acceder al panel de administración de nuestra instancia de Vaultwarden, en mi caso se accede a través de https://vault.asgardius.company/admin

Entramos utilizando el token de administración que establecimos al ejecutar el contenedor e introducimos las credenciales de nuestro servidor de correo en los campos correspondientes. Una vez configurado el servidor de correo podemos ir a la sección Usuarios e invitar usuarios nuevos a través del correo electrónico. Otra opción es abrir el registro, pero el servidor podría llenarse de nuevas solicitudes. En caso de que familiares y amigos ya tengan cuenta en nuestro servidor de correo podemos habilitar el registro exclusivamente para los nombres de dominio utilizados por este y solicitar la verificación de correo para poder iniciar sesión. Este software es bastante ligero, ya que instalado en una Raspberry Pi 3 solo se utilizan 142 MB de RAM (incluyendo otros servicios del sistema). Recuerda que debido al encriptado de punta a punta en caso de olvidar la contraseña de la cuenta los datos serán inaccesibles. Para evitar este problema se puede establecer un recordatorio para poder deducir la contraseña en caso de emergencia (este recordatorio se envía al buzón de correo asociado)

Dejar un comentario