--- title: "Cómo autoalojar Bitwarden en Ubuntu 24.04 con Docker" description: "Instala el gestor de contraseñas Bitwarden en Ubuntu 24.04 con Docker y el instalador oficial, con HTTPS, correo SMTP, registro cerrado y copias de seguridad." category: "Hosting de Aplicaciones Web" language: es source: https://cubepath.com/es/docs/hosting-de-aplicaciones-web/gestor-de-contrasenas-autohospedado-bitwarden updated: 2026-09-25 --- # Cómo autoalojar Bitwarden en Ubuntu 24.04 con Docker 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 usa `your_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. > Nota: esta 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: ```bash sudo adduser bitwarden sudo usermod -aG docker bitwarden ``` Crea el directorio de instalación, accesible solo para ese usuario: ```bash 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: ```bash 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: ```bash sudo -iu bitwarden cd /opt/bitwarden ``` Descarga el script de instalación. Antes de ejecutarlo, puedes revisar su contenido con `less bitwarden.sh`: ```bash curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" chmod 700 bitwarden.sh ``` Lanza la instalación: ```bash ./bitwarden.sh install ``` El instalador descarga las imágenes y te hace varias preguntas. Responde así: - **Dominio**: `your_domain`, sin `https://`. - **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 (`US` o `EU`). Al terminar, toda la configuración y los datos quedan en `/opt/bitwarden/bwdata`. Arranca los servicios: ```bash ./bitwarden.sh start ``` Comprueba que los contenedores están en marcha: ```bash docker ps --format '{{.Names}}\t{{.Status}}' ``` ```output 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: ```bash curl -sI https://your_domain | head -1 ``` ```output 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`: ```bash 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: ```ini globalSettings__mail__replyToEmail=no-reply@example.com 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 adminSettings__admins=admin@example.com ``` 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: ```bash ./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`: ```bash nano /opt/bitwarden/bwdata/env/global.override.env ``` ```ini globalSettings__disableUserRegistration=true ``` Aplica el cambio: ```bash ./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**. > Nota: algunas 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: ```bash sudo nano /usr/local/bin/bitwarden-backup ``` ```bash #!/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: ```bash 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: ```bash 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: ```bash 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 denied` al ejecutar `docker`**: el usuario `bitwarden` no está en el grupo `docker` o no ha vuelto a iniciar sesión. Sal y entra de nuevo con `sudo -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_domain` exacta. ## 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.