Bitwarden es una de las soluciones más completas y accesibles para este desafío.


En la actualidad, gestionar contraseñas de manera segura es una necesidad fundamental, dado el creciente número de servicios en línea que utilizamos a diario. Bitwarden es una de las soluciones más completas y accesibles para este desafío. Se trata de un gestor de contraseñas de código abierto que permite almacenar de forma segura contraseñas, notas, y otros datos sensibles en una bóveda encriptada.

Bitwarden ofrece una plataforma que prioriza la privacidad y seguridad, utilizando encriptación de extremo a extremo, lo que garantiza que solo tú puedas acceder a tu información. Además, su flexibilidad lo hace ideal tanto para usuarios individuales como para equipos de trabajo, ya que permite compartir de manera segura contraseñas y otros datos con otros miembros de tu organización.

En este tutorial, te explicaremos cómo instalar Bitwarden usando Docker, acompañado de un proxy inverso configurado con Nginx para mejorar la gestión de tráfico y seguridad. Utilizaremos Debian 12 como sistema operativo base, pero si prefieres Ubuntu, los pasos deberían ser prácticamente idénticos. Al final de este proceso, tendrás una instalación robusta y bien optimizada de Discourse, lista para ser utilizada en producción.

En su día, hicimos este tutorial que explica instalar Discourse:

Instalación de Bitwarden utilizando Docker en Ubuntu 22.04
Bitwarden es un gestor de contraseñas de código abierto que proporciona una forma segura de almacenar y gestionar todas tus contraseñas y datos sensibles.

Instalación de Bitwarden

El procedimiento para instalar Bitwarden se debe de seguir de la siguiente forma. Lo primero nos conectaremos al servidor por SSH.

Instalación de Docker

Para la instalación de Bitwarden, es necesario tener previamente instalado Docker, para instalar Docker en Debian 12:

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.

Creación de usuario

Para ejecutar Bitwarden deberemos de crear un usuario especifico para que ejecute el contenedor de Docker.

adduser bitwarden

Configuramos contraseña al usuario:

passwd bitwarden

Añadimos el usuario al grupo de Docker:

usermod -aG docker bitwarden

Creamos el directorio de la instalación:

mkdir /opt/bitwarden

Configuramos los permisos de los directorios:

chmod -R 700 /opt/bitwarden
chown -R bitwarden:bitwarden /opt/bitwarden

Instalación de Bitwarden

Lo primero será iniciar con nuestro usuario nuevo y acceder al directorio de la instalación:

su - bitwarden
cd /opt/bitwarden

Ahora con el usuario de bitwarden ejecutamos los siguientes comandos para instalar Bitwarden:

$ curl -s -L -o bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux"

Cambiamos permisos al ejecutable:

$ chmod +x bitwarden.sh

Y lo ejecutamos:

$ ./bitwarden.sh install

Para la instalación de Bitwarden es importante seguir lo que nos pide durante la instalación, pero debemos de indicar que no queremos configurar SSL ni certbot.

_     _ _                         _            
| |__ (_) |___      ____ _ _ __ __| | ___ _ __  
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \ 
| |_) | | |_ \ V  V / (_| | | | (_| |  __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_|  \__,_|\___|_| |_|

Open source password management solutions
Copyright 2015-2024, 8bit Solutions LLC
https://bitwarden.com, https://github.com/bitwarden

===================================================

bitwarden.sh version 2024.8.0
Docker version 27.1.2, build d01f264
Docker Compose version v2.29.2

Primero nos preguntará por el dominio:

(!) Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com): password.voidnull.es

Luego nos preguntará si queremos que Let's Encrypt genere los certificados, indicamos que no.

(!) Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n): n

Indicamos el nombre de la base de datos:

(!) Enter the database name for your Bitwarden instance (ex. vault): vaultpass

Descargará las imágenes necesarias para Bitwareden y luego nos pedirá un código que debemos de adquirir en https://bitwarden.com/host:

(!) Enter your installation id (get at https://bitwarden.com/host): bab0b556-bd11XXXXXXX

También tendremos que añadir la key que nos aparece en la web:

(!) Enter your installation key: XXXXXXXX

Escogemos región (en mi caso Europa):

(!) Enter your region (US/EU) [US]: EU

Le decimos que no genere los certificados SSL:

(!) Do you have a SSL certificate to use? (y/N): n

Y tampoco que genere los certificados autofirmados:

(!) Do you want to generate a self-signed SSL certificate? (y/N): n

Reconfigurar la aplicación

Tenemos que modificar la configuración que se genera, para ello tendremos que editar el siguiente fichero:

nano /opt/bitwarden/bwdata/config.yml

Hay que cambiar el parámetro url y poner nuestro subdominio o dominio:

url: password.voidnull.es

Y añadir la IP de localhost en el apartado de real_ips:

real_ips:
- 127.0.0.1

También la configuración de los puertos para HTTP y HTTPS:

http_port: 8081
https_port: 8444

Luego hay que editar el siguiente fichero /opt/bitwarden/bwdata/env/global.override.env y modificar el siguiente:

globalSettings__baseServiceUri__vault=http://password.voidnull.es
💡
Es importante que la configuración de la URL sea con HTTP, ya que luego usaremos Nginx para configurar el SSL.

Tras estos cambios, tenemos que hacer un rebuild de la aplicación:

./bitwarden.sh rebuild

Creación del certificado SSL

Creamos el certificado para luego añadirlo a la configuración de Nginx de más tarde, así que creamos el certificado con:

certbot certonly

Configuración Nginx

Lo siguiente será instalar Nginx y configurar el servidor con la siguiente configuración que veréis a continuación.

apt install nginx

La configuración debe ser la siguiente:

server {
    listen 80; listen [::]:80;
    server_name password.voidnull.es;
    server_tokens off;
    return 301 https://$host$request_uri;
}
# Default server configuration
#
server {
    # SSL configuration
    #
    server_tokens off;
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    server_name password.voidnull.es;
    ssl_certificate /etc/letsencrypt/live/password.voidnull.es/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/password.voidnull.es/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-EC>
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Con esta configuración, ya podemos reiniciar Nginx para aplicar la nueva configuración:

systemctl reload nginx

Y si todo ha ido bien, deberíamos de poder acceder al subdominio y acceder a Bitwarden.

Configurar el correo

Para poder crear una cuenta administradora, es necesario tener configurada el apartado de correo, para ello tendremos que editar /opt/bitwarden/bwdata/env/global.override.env y editaremos el siguiente contenido con nuestra configuración SMTP:

globalSettings__mail__replyToEmail=usuario@dominio.com
globalSettings__mail__smtp__host=mail.dominio.com
globalSettings__mail__smtp__port=PUERTO
globalSettings__mail__smtp__ssl=true
globalSettings__mail__smtp__username=usuario@dominio.com
globalSettings__mail__smtp__password=contraseñasegura

También, si queremos indicar que un usuario es el administrador:

adminSettings__admins=usuario@dominio.com

Tras estos cambios, tenemos que hacer un rebuild de la aplicación:

./bitwarden.sh rebuild

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