Cómo instalar el software de análisis web Umami en Ubuntu 20.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Umami y PostgreSQL con Docker Compose
  • Paso 2: Instalación y configuración de Nginx
  • Paso 3: Instalación de Certbot y configuración de certificados SSL
  • Conclusión
  • Umami es una aplicación de análisis web alojada en el servidor y de código abierto escrita en Node.js. Se centra en ser simple, estar bien diseñada, ser rápida y estar centrada en la privacidad. Puede almacenar datos sobre los visitantes de su sitio web en una base de datos MySQL o PostgreSQL.

    En este tutorial, instalará Umami y una base de datos PostgreSQL mediante Docker Compose. Luego, instalará Nginx para que actúe como proxy inverso para Umami. Por último, habilitará conexiones HTTPS seguras mediante Certbot para descargar y configurar certificados SSL de la autoridad de certificación Let’s Encrypt.

    Prerrequisitos

    Para completar este tutorial, primero necesitarás lo siguiente:

    • Un servidor Ubuntu 20.04, con el firewall UFW habilitado. Lea nuestra sección Configuración inicial del servidor con Ubuntu 20.04 para obtener más información sobre cómo configurar estos requisitos
    • Docker instalado. Puede utilizar el Paso 1 de Cómo instalar y usar Docker en Ubuntu 20.04 para realizar esta tarea. Opcionalmente, puede seguir el Paso 2 de ese tutorial si desea que su usuario no root pueda ejecutar dockercomandos sin usarsudo
    • Docker Compose instalado. Siga el paso 1 de Cómo instalar y usar Docker Compose en Ubuntu 20.04 para instalar este software

    Nota: estos pasos previos se pueden omitir si está utilizando la imagen Docker de un solo clic de DigitalOcean . Esta imagen tendrá Docker, Docker Compose y UFW ya instalados y configurados.

    Inicie una nueva imagen de Docker en la región que desee, inicie sesión como usuario root y continúe con el tutorial. Opcionalmente, puede omitir sudopartes de todos los comandos, pero no es necesario.

    Por último, para habilitar SSL, necesitará un nombre de dominio que apunte a la dirección IP pública de su servidor. Debería ser algo como example.como umami.example.com, por ejemplo. Si utiliza DigitalOcean, consulte nuestra Guía de inicio rápido de DNS para obtener información sobre cómo crear recursos de dominio en nuestro panel de control.

    Cuando haya cumplido todos los requisitos previos, continúe con el Paso 1 , donde descargará e iniciará el software Umami.

    Paso 1: Instalación de Umami y PostgreSQL con Docker Compose

    El primer paso será clonar el repositorio Git de Umami, actualizar el docker-compose.ymlarchivo de configuración y luego iniciar los contenedores Umami y PostgreSQL.

    Descargarás el repositorio en el /optdirectorio. Usa el cdcomando para ir allí ahora:

    1. cd /opt

    Luego usa el gitcomando para clonar el repositorio desde GitHub:

    1. sudo git clone https://github.com/mikecao/umami.git

    Esto incorporará todos los archivos de software y configuración en /opt/umami. Muévase ahora al umamidirectorio recién creado:

    1. cd umami

    Ahora necesitas actualizar el docker-compose.ymlarchivo del proyecto. Este archivo es lo que docker-composeusa el comando para configurar y lanzar múltiples contenedores Docker a la vez. Necesitamos cambiar dos opciones en este archivo: la IP a la que se vincula Umami y un hash aleatorio que se usa como sal al cifrar cosas en la base de datos.

    Antes de abrirlo docker-compose.ymlpara editarlo, generemos un nuevo hash aleatorio para pegar en el archivo:

    1. openssl rand -base64 32
    OutputtCgKyCWc/3C9VH+Ex0TysXsGEKQklQXm0H3nSnlR48g=

    Para ello, se utiliza el opensslcomando para generar 32 caracteres aleatorios. Copie el resultado en el portapapeles y, a continuación, abra el archivo de configuración:

    1. sudo nano docker-compose.yml

    Busque la HASH_SALTopción, elimine el texto del marcador de posición y péguelo en el hash aleatorio que acaba de generar:

    docker-compose.yml

    . . .      HASH_SALT: replace-me-with-a-random-string. . .

    A continuación, busque la ports:parte de la configuración:

    docker-compose.yml

    . . .    ports:      - "127.0.0.1:3000:3000". . .

    Actualice el "3000:3000"valor anteponiéndolo 127.0.0.1:. Esto garantiza que Umami solo esté escuchando en la interfaz del host local y no esté disponible públicamente. Aunque tenga un firewall UFW configurado, debido a algunas peculiaridades en el funcionamiento de la red Docker, si no realizó este paso, su contenedor Umami sería accesible al público en el puerto 3000.

    Una vez completados esos cambios de configuración, guarde el archivo ( CTRL+Oluego ENTERen nano) y cierre el editor ( CTRL+X).

    Ahora, utiliza docker-composepara iniciar tus dos contenedores:

    1. sudo docker-compose up --detach

    La --detachbandera indica docker-composeque se creen los contenedores en segundo plano, separados de nuestra sesión de terminal:

    Output. . .Creating umami_db_1 ... doneCreating umami_umami_1 ... done

    Umami y PostgreSQL ya se están ejecutando. Puede comprobarlo utilizando el curlcomando para obtener la página de inicio de su nuevo contenedor Umami que se ejecuta en el host local :

    1. curl localhost:3000
    Output!DOCTYPE htmlhtmlheadmeta charSet="utf-8"/ . . .

    Si se envía un gran fragmento de HTML a su terminal, sabrá que el servidor Umami está en funcionamiento.

    A continuación, configuraremos Nginx para realizar el proxy inverso de Umami localhost:3000al público.

    Paso 2: Instalación y configuración de Nginx

    Colocar un servidor web como Nginx delante de su servidor Node.js puede mejorar el rendimiento al descargar el almacenamiento en caché, la compresión y el servicio de archivos estáticos a un proceso más eficiente. Vamos a instalar Nginx y configurarlo para que envíe solicitudes a Umami, lo que significa que se encargará de entregar las solicitudes de sus usuarios a Umami y viceversa.

    Primero, actualice su lista de paquetes, luego instale Nginx usando apt:

    1. sudo apt update
    2. sudo apt install nginx

    Permitir tráfico público a puertos 80y 443(HTTP y HTTPS) utilizando el perfil de aplicación UFW “Nginx Full”:

    1. sudo ufw allow "Nginx Full"
    OutputRule addedRule added (v6)

    A continuación, abra un nuevo archivo de configuración de Nginx en el /etc/nginx/sites-availabledirectorio. Lo llamaremos así, umami.confpero puede utilizar un nombre diferente:

    1. sudo nano /etc/nginx/sites-available/umami.conf

    Pegue lo siguiente en el nuevo archivo de configuración y asegúrese de reemplazarlo your_domain_herepor el dominio que ha configurado para apuntar a su servidor Umami. Esto será algo como umami.example.com, por ejemplo:

    /etc/nginx/sites-available/umami.conf

    server {    listen       80;    listen       [::]:80;    server_name  your_domain_here;    access_log  /var/log/nginx/umami.access.log;    error_log   /var/log/nginx/umami.error.log;    location / {      proxy_pass http://localhost:3000;      proxy_set_header X-Real-IP $remote_addr;      proxy_set_header Host $host;      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  }}

    Por ahora, esta configuración es solo para HTTP, ya que dejaremos que Certbot se encargue de configurar SSL en el siguiente paso. El resto de la configuración establece las ubicaciones de registro y luego pasa todo el tráfico a http://localhost:3000, la instancia de Umami que iniciamos en el paso anterior.

    Guarde y cierre el archivo, luego habilite la configuración vinculándolo a /etc/nginx/sites-enabled/:

    1. sudo ln -s /etc/nginx/sites-available/umami.conf /etc/nginx/sites-enabled/

    Utilice nginx -tpara verificar que la sintaxis del archivo de configuración sea correcta:

    1. sudo nginx -t
    Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

    Y por último, recarga el nginxservicio para recoger la nueva configuración:

    1. sudo systemctl reload nginx

    Tu sitio Umami ahora debería estar disponible en HTTP simple. Cárgalo y se verá así:http://your_domain_here

    Ahora que su sitio está funcionando a través de HTTP, es momento de asegurar la conexión con los certificados Certbot y Let’s Encrypt.

    Paso 3: Instalación de Certbot y configuración de certificados SSL

    Gracias a Certbot y a la autoridad de certificación gratuita Let’s Encrypt, agregar el cifrado SSL a nuestra aplicación Umami solo requerirá dos comandos.

    Primero, instale Certbot y su complemento Nginx:

    1. sudo apt install certbot python3-certbot-nginx

    A continuación, ejecute certbotel --nginxmodo y especifique el mismo dominio que utilizó en la server_nameconfiguración de Nginx:

    1. sudo certbot --nginx -d your_domain_here

    Se le pedirá que acepte los términos de servicio de Let’s Encrypt y que ingrese una dirección de correo electrónico.

    Luego, se te preguntará si deseas redirigir todo el tráfico HTTP a HTTPS. Depende de ti, pero en general es una opción recomendada y segura.

    Después de eso, Let’s Encrypt confirmará tu solicitud y Certbot descargará tu certificado:

    OutputCongratulations! You have successfully enabled https://umami.example.comYou should test your configuration at:https://www.ssllabs.com/ssltest/analyze.html?d=umami.example.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at:   /etc/letsencrypt/live/umami.example.com/fullchain.pem   Your key file has been saved at:   /etc/letsencrypt/live/umami.example.com/privkey.pem   Your cert will expire on 2021-12-06. To obtain a new or tweaked   version of this certificate in the future, simply run certbot again   with the "certonly" option. To non-interactively renew *all* of   your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot   configuration directory at /etc/letsencrypt. You should make a   secure backup of this folder now. This configuration directory will   also contain certificates and private keys obtained by Certbot so   making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by:   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate   Donating to EFF:                    https://eff.org/donate-le

    Certbot recargará automáticamente Nginx para adoptar la nueva configuración y los certificados. Recargue su sitio y debería cambiarlo a HTTPS automáticamente si eligió la opción de redireccionamiento.

    Ahora su sitio es seguro y puede iniciar sesión con el usuario y la contraseña predeterminados (admin)umami . Hágalo de inmediato y siga la documentación oficial de primer inicio de sesión para iniciar sesión y cambiar su contraseña de administrador por otra más segura.

    Cuando inicies sesión por primera vez, verás un panel de control bastante simple:

    Ha instalado y protegido correctamente su software de análisis Umami. En la conclusión de este tutorial, encontrará enlaces a la documentación que le permitirá comenzar a agregar su sitio a Umami y a agregar el fragmento de seguimiento de Umami a su sitio.

    Conclusión

    En este tutorial, lanzó la aplicación Umami y una base de datos PostgreSQL usando Docker Compose, luego configuró un proxy inverso Nginx y lo protegió usando certificados SSL Let’s Encrypt.

    Además, ya deberías haber iniciado sesión y actualizado la contraseña predeterminada . Si no es así, hazlo ahora.

    Luego, continúa con la documentación oficial para aprender cómo agregar un sitio web a Umami, luego comienza a recopilar datos instalando el código de seguimiento en tu sitio web.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion