vaultwarden docker

Vaultwarden

by Mayra Salas

Vaultwarden es una bifurcación (fork) del proyecto Bitwarden_RS. El objetivo de Vaultwarden es proporcionar una alternativa de servidor de Bitwarden que sigue siendo de código abierto y mantenido por la comunidad.

Requisitos previos

Para completar este tutorial, necesitará lo siguiente:

Requerimientos de sistema

  • Memoria : 2GB o más
  • Disco duro : Más de 10GB de espacio disponible en disco duro
  • Sistema : CentOS 7.1+ (Ubuntu20, Debian10), garantizar que sea un sistema operativo limpio

¿Que hace este scrip?

  • Configura el servidor SMTP para el envio de las invitaciones
  • Descarga la imagen vaultwarden-rclone-data para respaldar la base de datos del contenedor vaultwarden
  • Genera certificados ssl autofirmados.

Creación de archivo script.sh

Generamos un archivo bash e ingresamos el siguiente codigo. Le damos permisos de ejecución y ejecutamos el script.

Variables utilizados:

  • smtphost : servior smtp del servidor de correo
  • smtpfrom: correo remitente
  • smtpusername: cuenta de correo
  • smtppassword: contraseña de correo
  • conexion: esta variable sera utilizada para conectar con el contenedor vaultwarden-rclone, debera utilizar la misma variable cuando se configue el vaultwarden-rclone. ejem(backup)
  • port : puerto que se utilizará para publicar el contenedor vaultwarden
  • domain : dominio para configurar los certificados autofirmados.
#!/bin/bash

read -p "SMTP_HOST: " smtphost
read -p "SMTP_FROM: " smtpfrom
read -p "SMTP_PORT: " smtpport
read -p "SMTP_USERNAME: " smtpusername
read -s -p "SMTP_PASSWORD: " smtppassword 
echo 
read -p "Ingrese el nombre que definira al configurar el rclone: " conexion 
read -p "Ingrese puerto que sera para exponer el servicio vaultwarden: " port
read -p "Ingrese contraseña para cifrado de ZIP FILE BACKUP" cifrado
echo

# Generar el token aleatorio y almacenarlo en la variable de entorno ADMIN_TOKEN
ADMIN_TOKEN=$(openssl rand -base64 48)

# Mostrar el token generado en la consola
echo "El token generado es: $ADMIN_TOKEN"
echo 
read -p "Ingrese nombre de dominio para el certificado autofirmando:  " domain
# Generar certificado autofirmado
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/apache-selfsigned.key \
  -out /etc/ssl/certs/apache-selfsigned.crt \
  -subj "/C=US/ST=California/L=Los Angeles/O=MyOrg/OU=MyDept/CN=$domain.com"

# Copiar certificado a la carpeta ssl en la ruta ./vaultwarden/ssl
mkdir -p ./vaultwarden/ssl
sudo cp /etc/ssl/private/apache-selfsigned.key ./vaultwarden/ssl/
sudo cp /etc/ssl/certs/apache-selfsigned.crt ./vaultwarden/ssl/

# Crear archivo docker-compose.yml
cat <<EOF >./vaultwarden/docker-compose.yml
version: '3.4'

services:

  vaultwarden:
    image: vaultwarden/server:latest
    restart: always
    ports:
      - $port:80
    volumes:
      - ./ssl:/ssl/
      - vaultwarden-data:/data/
    environment:
    # - SIGNUPS_ALLOWED=false
      - ADMIN_TOKEN=$admin_token
      - ROCKET_TLS={certs="/ssl/apache-selfsigned.crt",key="/ssl/apache-selfsigned.key"}
      - SMTP_HOST=$smtphost
      - SMTP_FROM=$smtpfrom
      - SMTP_PORT=$smtpport
      - SMTP_SECURITY=starttls
      - SMTP_USERNAME=$smtpusername
      - SMTP_PASSWORD=$smtppassword

  backup:
    image: ttionya/vaultwarden-backup:latest
    restart: always
    environment:
        RCLONE_REMOTE_NAME: '$conexion'
        RCLONE_REMOTE_DIR: '/bitwardenBackup/'
        RCLONE_GLOBAL_FLAG: ''
        CRON: '5 * * * *'
        ZIP_ENABLE: 'TRUE'
        ZIP_PASSWORD: '$cifrado'
        ZIP_TYPE: 'zip'
        BACKUP_FILE_DATE_SUFFIX: ''
        BACKUP_KEEP_DAYS: 0
    #   PING_URL: ''
    #   MAIL_SMTP_ENABLE: 'TRUE'
    #   MAIL_SMTP_VARIABLES: ''
    #   MAIL_TO: ''
    #   MAIL_WHEN_SUCCESS: 'TRUE'
    #   MAIL_WHEN_FAILURE: 'TRUE'
    #   TIMEZONE: 'UTC'
    volumes:
      - vaultwarden-data:/bitwarden/data/
      - vaultwarden-rclone-data:/config/

volumes:
  vaultwarden-data:
    name: vaultwarden-data
  vaultwarden-rclone-data:
    external: true
    name: vaultwarden-rclone-data
EOF

# Configurar rclone
docker run --rm -it --mount type=volume,source=vaultwarden-rclone-data,target=/config/ ttionya/vaultwarden-backup:latest rclone config

Enlaces de referencia:

ttionya/vaultwarden-backup: Backup vaultwarden (formerly known as bitwarden_rs) SQLite3/PostgreSQL/MySQL/MariaDB database by rclone. (Docker) (github.com)

dani-garcia/vaultwarden: Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs (github.com)

chmod +x script.sh
./script.sh

Related Posts

Leave a Comment

Buy Me A Coffee
Gracias por su visita.