Bitwarden es un gestor de contraseñas de código abierto con clientes para navegador, escritorio y móvil. Su versión autoalojada te permite guardar las bóvedas cifradas de tu equipo en tu propio servidor. En este tutorial instalarás Bitwarden en Ubuntu 24.04 con el instalador oficial bitwarden.sh, que despliega todos los servicios en contenedores Docker con un certificado de Let's Encrypt, y después configurarás el correo, cerrarás el registro público y programarás copias de seguridad.
Requisitos previos
Para seguir esta guía necesitas:
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 2 GB de RAM (4 GB recomendados) y 25 GB libres en disco. Bitwarden ejecuta una decena de contenedores, entre ellos Microsoft SQL Server.
- Un usuario no root con privilegios
sudo. - Docker Engine y el plugin Docker Compose instalados desde el repositorio oficial de Docker.
- Un subdominio para la bóveda, por ejemplo
vault.example.com, con un registro DNS A apuntando a la IP del servidor. En esta guía se usayour_domain. - Los puertos 80 y 443 libres: el Nginx de Bitwarden los usa directamente.
- Un servidor SMTP para enviar correos de verificación e invitaciones. Sin correo no podrás acceder al panel de administración.
Notaesta guía instala el servidor oficial de Bitwarden. Vaultwarden es una implementación alternativa no oficial, mucho más ligera, compatible con los mismos clientes; si tu servidor tiene poca memoria puede ser mejor opción, pero se instala y administra de forma distinta.
Paso 1: Obtener el ID y la clave de instalación
Cada instalación autoalojada necesita un identificador y una clave que se generan gratis en https://bitwarden.com/host. Introduce un correo de contacto, elige la región de datos (US o EU) y anota los dos valores:
- Installation Id, un UUID.
- Installation Key, una cadena aleatoria.
Guárdalos en un lugar seguro; los pedirá el instalador en el paso 3.
Paso 2: Crear el usuario y el directorio de Bitwarden
Bitwarden recomienda ejecutarlo con un usuario dedicado sin privilegios de administrador, miembro del grupo docker. Créalo y asígnale una contraseña:
sudo adduser bitwarden
sudo usermod -aG docker bitwarden
Crea el directorio de instalación, accesible solo para ese usuario:
sudo mkdir /opt/bitwarden
sudo chmod 700 /opt/bitwarden
sudo chown bitwarden:bitwarden /opt/bitwarden
Si usas UFW, abre SSH, HTTP y HTTPS. El puerto 80 es necesario para validar y renovar el certificado de Let's Encrypt:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Paso 3: Ejecutar el instalador oficial
Cambia al usuario bitwarden y entra en el directorio de instalación:
sudo -iu bitwarden
cd /opt/bitwarden
Descarga el script de instalación. Antes de ejecutarlo, puedes revisar su contenido con less bitwarden.sh:
curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux"
chmod 700 bitwarden.sh
Lanza la instalación:
./bitwarden.sh install
El instalador descarga las imágenes y te hace varias preguntas. Responde así:
- Dominio:
your_domain, sinhttps://. - Usar Let's Encrypt:
y, e indica un correo para los avisos de caducidad del certificado. - Nombre de la base de datos: puedes dejar
vault. - Installation Id e Installation Key: los valores del paso 1.
- Región: la misma que elegiste en el paso 1 (
USoEU).
Al terminar, toda la configuración y los datos quedan en /opt/bitwarden/bwdata. Arranca los servicios:
./bitwarden.sh start
Comprueba que los contenedores están en marcha:
docker ps --format '{{.Names}}\t{{.Status}}'
bitwarden-nginx Up 2 minutes (healthy)
bitwarden-admin Up 2 minutes (healthy)
bitwarden-api Up 2 minutes (healthy)
bitwarden-identity Up 2 minutes (healthy)
bitwarden-mssql Up 2 minutes (healthy)
bitwarden-web Up 2 minutes (healthy)
...
Los contenedores tardan uno o dos minutos en pasar a healthy. Después verifica que la bóveda responde por HTTPS:
curl -sI https://your_domain | head -1
HTTP/2 200
Paso 4: Configurar el correo y los administradores
Los ajustes del servidor se sobrescriben en el archivo bwdata/env/global.override.env. Ábrelo, todavía como usuario bitwarden:
nano /opt/bitwarden/bwdata/env/global.override.env
Busca las variables de correo y de administración, y rellénalas con tus datos. adminSettings__admins es la lista de correos, separados por comas, que pueden entrar en el panel de administración:
[email protected]
globalSettings__mail__smtp__host=smtp.your_mail_provider.com
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__ssl=false
globalSettings__mail__smtp__username=your_smtp_user
globalSettings__mail__smtp__password=your_smtp_password
[email protected]
Con el puerto 587 y STARTTLS, deja ssl=false; usa true solo si tu proveedor exige TLS implícito en el puerto 465. Reinicia para aplicar los cambios:
./bitwarden.sh restart
Paso 5: Crear tu cuenta y cerrar el registro
Abre https://your_domain en el navegador, pulsa Crear cuenta y regístrate con tu correo. La contraseña maestra cifra tu bóveda en el propio dispositivo: el servidor no la conoce y no se puede recuperar si la olvidas, así que elige una frase larga y guárdala en lugar seguro. Después verifica tu correo desde el enlace que recibirás; si llega, el SMTP está bien configurado.
Cuando se hayan registrado todas las personas que necesitas, o si prefieres añadir usuarios solo mediante invitaciones de organización, desactiva el registro público. Vuelve a editar global.override.env:
nano /opt/bitwarden/bwdata/env/global.override.env
globalSettings__disableUserRegistration=true
Aplica el cambio:
./bitwarden.sh restart
Comprueba en una ventana privada que la opción Crear cuenta ya no permite registrarse.
Paso 6: Acceder al panel de administración
El panel del sistema está en https://your_domain/admin. No usa contraseña: introduce uno de los correos de adminSettings__admins y recibirás un enlace de acceso de un solo uso.
Desde el panel puedes ver y desactivar usuarios, forzar la eliminación de cuentas y consultar las organizaciones creadas. Las organizaciones, colecciones y permisos de cada miembro se gestionan desde la bóveda web, en Nueva organización.
Notaalgunas funciones, como las organizaciones de los planes de pago o las funciones premium de los usuarios, requieren cargar un archivo de licencia generado desde tu cuenta de bitwarden.com.
Instala después los clientes (extensión de navegador, escritorio o móvil) y, antes de iniciar sesión, cambia en su pantalla de acceso la región o servidor a Autoalojado, con la URL https://your_domain.
Paso 7: Programar copias de seguridad
Bitwarden hace una copia nocturna automática de la base de datos en bwdata/mssql/backups. Esas copias, junto con los archivos adjuntos (bwdata/core/attachments), la configuración (bwdata/env, bwdata/config.yml) y los certificados, son lo que debes guardar fuera del servidor. Los archivos en vivo de SQL Server (bwdata/mssql/data) no se deben copiar con el servicio en marcha, así que se excluyen.
Sal del usuario bitwarden con exit y crea el script como tu usuario sudo:
sudo nano /usr/local/bin/bitwarden-backup
#!/usr/bin/env bash
set -euo pipefail
BACKUP_DIR="/var/backups/bitwarden"
STAMP="$(date +%F_%H%M)"
mkdir -p "$BACKUP_DIR"
chmod 700 "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/bwdata-$STAMP.tar.gz" \
--exclude='bwdata/mssql/data' \
--exclude='bwdata/logs' \
-C /opt/bitwarden bwdata
find "$BACKUP_DIR" -type f -mtime +14 -delete
Hazlo ejecutable, pruébalo y prográmalo para después de la copia nocturna de la base de datos:
sudo chmod 750 /usr/local/bin/bitwarden-backup
sudo /usr/local/bin/bitwarden-backup
sudo ls -lh /var/backups/bitwarden
echo '0 4 * * * root /usr/local/bin/bitwarden-backup' | sudo tee /etc/cron.d/bitwarden-backup
Copia estos archivos a otro servidor o almacenamiento externo. Contienen la base de datos y las claves de la instalación: protégelos igual que el propio servidor.
Actualizar Bitwarden
Las actualizaciones se hacen con el mismo script, como usuario bitwarden. Primero se actualiza el propio script y después los contenedores:
sudo -iu bitwarden
cd /opt/bitwarden
./bitwarden.sh updateself
./bitwarden.sh update
Estos son los comandos de bitwarden.sh que usarás con más frecuencia:
| Comando | Qué hace |
|---|---|
./bitwarden.sh start | Arranca todos los contenedores |
./bitwarden.sh stop | Detiene todos los contenedores |
./bitwarden.sh restart | Reinicia y aplica los cambios de global.override.env |
./bitwarden.sh updateself | Actualiza el script bitwarden.sh |
./bitwarden.sh update | Descarga las imágenes nuevas y actualiza la base de datos |
./bitwarden.sh renewcert | Renueva el certificado de Let's Encrypt |
Puedes comprobar la fecha de caducidad del certificado con:
echo | openssl s_client -connect your_domain:443 -servername your_domain 2>/dev/null | openssl x509 -noout -enddate
Solución de problemas
- El instalador no obtiene el certificado: el DNS aún no apunta al servidor, o el puerto 80 está bloqueado u ocupado por otro servicio. Comprueba con
sudo ss -tlnp | grep ':80 '. permission deniedal ejecutardocker: el usuariobitwardenno está en el grupodockero no ha vuelto a iniciar sesión. Sal y entra de nuevo consudo -iu bitwarden.- No llegan los correos: revisa las variables SMTP y los logs con
docker logs bitwarden-api. - Los clientes no se conectan: verifica que en la app has elegido servidor autoalojado con la URL
https://your_domainexacta.
Conclusión
Bitwarden está funcionando en tu servidor Ubuntu 24.04 con HTTPS, correo configurado, registro público cerrado y copias de seguridad diarias fuera de los datos en vivo. Como siguientes pasos, crea una organización para compartir credenciales por colecciones, activa el inicio de sesión en dos pasos en todas las cuentas y ensaya una restauración de la copia de seguridad en un servidor de pruebas.
