Umami es un sistema de análitica y estadísticas web, sencillo, fácil de usar que respeta tu privacidad, es desarrollado en NodeJS y permite almacenar la información en MySQL o PostgreSQL. Liberado bajo la licencia MIT y su código fuente está disponible en Github
Características
Análitica simple
Umami mide solo las métricas más importantes: páginas vistas, dispositivos utilizados y de dónde provienen sus visitantes. Todo se muestra en una única página fácil de navegar.
Sitios web ilimitados
Puede llevar la estadísticas de un un número ilimitado de sitios web desde una sola instalación. Incluso puede incluir subdominios y URL individuales.
Evite los bloqueadores de anuncios
Umami está alojado por usted bajo su propio dominio lo que permite evitar de manera confiable los bloqueadores de anuncios a diferencia de Google Analytics.
Ligero
El script que le permite registrar las análiticas es pequeño (solo 2 KB) y es compatible con navegadores antiguos como IE.
Cuentas múltiples
Umami se puede utilizar para alojar datos para amigos o clientes. Simplemente cree una cuenta separada y podrán comenzar a llevar sus análiticas en su propio panel de control.
Compartir datos
Si desea compartir sus estadísticas públicamente, puede hacerlo con una URL generada de forma única.
Apto para móviles
La interfaz de Umami se ha optimizado para dispositivos móviles, por lo que puede ver sus estadísticas desde cualquier lugar.
Propiedad de los datos
Dado que Umami es autohospedado, usted es el propietario de todos los datos. No es necesario que ceda sus datos a un tercero para que sean explotados.
Centrado en la privacidad
Umami no recopila ninguna información de identificación personal y anonimiza todos los datos recopilados.
💡 Le puede interesar:
- 3 formas de instalar Node.js
- ¿Cómo instalar NGINX en Alpine Linux?
- Instalar SSL Let’s Encrypt usando Lego
- Cómo instalar MariaDB en Alpine Linux
🗒 Nota:
En este artículo mostraremos como instalar y configurar Umami en Alpine Linux
Paso 1 – Instalar NodeJS y npm
Instalaremos NodeJS y npm desde los repositorios oficiales de AlpineLinux
# apk add nodejs npm
Paso 2 – Instalar git
# apk add git
Paso 3 – Clonar el repositorio de Umami
Nos movemos al dir /srv
# cd /srv
Crear el dir apps si no existe
# mkdir apps
Moverse al DIR apps
# cd apps
Clonar
# git clone https://github.com/mikecao/umami.git
Paso 4 – Instalar dependencias
Moverse al dir umami
# cd umami
Instalar dependencias
# npm install
Buscar vulnerabilidades e instalar cualquier actualización compatible
# npm audit fix
Paso 5 – Instalar MariaDB
Consulte Cómo instalar MariaDB en Alpine Linux para más información
Instalar servidor y cliente
# apk add mariadb mariadb-client
Inicializar el servidor de BD
# /etc/init.d/mariadb setup
Iniciar el servidor de BD
# service mariadb start
Mejorar la seguridad básica del servidor de BD
# mariadb-secure-installation
Salir
MariaDB [(none)]> exit
Paso 6 – Crear BD, usuarios y tablas
Para más inforamción consulte:
Conectarnos al servidor BD
# mariadb -u root
Crear BD
MariaDB [(none)]> CREATE DATABASE umamidb;
Crear usuario
MariaDB [(none)]> CREATE USER umami@localhost IDENTIFIED BY 'mi-contraseña';
Asignar privelios
Con el siguiente comando asignamos todos los privilegios sobre la BD umamidb
MariaDB [(none)]> GRANT ALL ON umamidb.* TO umami@localhost;
Refrescar privilegios
MariaDB [(none)]> FLUSH PRIVILEGES;
Salir
MariaDB [(none)]> exit
Crear tablas
Umami incluye un script que nos facilitará el procedimiento para crear la BD y tablas correspondientes
# mariadb -u umami -p umamidb < sql/schema.mysql.sql
Paso 7 – Configurar la conexión a BD
Crear fichero .env
# touch .env
Agregar la siguientes líneas al fichero .env
DATABASE_URL=mysql://umami:mi-contraseña@localhost:3306/umamidb
HASH_SALT=
Puede generar el valor HAST_SALT
ejecutando el siguiente comando:
$ python3 -c 'import crypt; print(crypt.mksalt())'
Paso 8 – Construir la app
# npm build
Paso 9 – Iniciar la App
# npm start
...
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
...
Si la app se inició correctamente entonces debe ver una línea como la anterior, una vez que haya comprabado que la app se ejecuta de manera exitosa presione un Ctrl-C
para terminar la misma ya que no es recomendable que esta se ejecuta con privilegios de root por tanto el próximo paso es crear la configuración necesaria para administrala como un servicio bajo un usuario diferente.
Paso 10 – Iniciar la App como un servicio
Agregar usuario y grupo nodejs usando BusyBox
Bajo el usuario y grupo nodejs se ejecutará la applicación
addgroup -S nodejs
adduser -S -s /sbin/nologin -H -h /dev/null -G nodejs nodejs
Donde:
- -S: Crea un usuario/grupo del sistema.
- -s: Login shell.
- -H: No crear directorio home.
- -h: Directorion home.
- -G: Grupo al que pertenece el usuario.
Crear script de inicio
AlpineLinux usa OpenRC como sistema de inicialización entonces debemos crear el fichero umami debajo del DIR /etc/init.d
Para más información consulte:
Crear fichero umami
# touch /etc/init.d/umami
Asignar permisos de ejeución
# chmod -c 755 /etc/init.d/umami
Agregar el siguiente contenido
#!/sbin/openrc-run
depend() {
need net
}
directory=/srv/apps/umami
command="npm start"
command_user="nodejs:nodejs"
pidfile="/run/${RC_SVCNAME}.pid"
command_background=true
Ahora podemos administrar umami como un servicio.
Iniciar
# service umami start
Detener
# service umami stop
Reiniciar
service umami restart
Obtener estado
# service umami status
Iniciar con el SO
# rc-update add umami default
Paso 11 – Instalar NGINX
Configuraremos el NGINX como proxy genérico, así que el mismo se pueda conectar con la aplicación Umami.
Consulte ¿Cómo instalar NGINX en Alpine Linux? para más información.
Otros artículos de interés:
# apk add nginx
Paso 12 – Instalar Lego
Lego: es un cliente/librería Let’s Encrypt que permite obtener y renovar certificados Let’s Encrypt.
Descargar
$ wget https://github.com/go-acme/lego/releases/download/v4.4.0/lego_v4.4.0_linux_amd64.tar.gz
Descompactar
$ tar xzvf lego_v4.4.0_linux_amd64.tar.gz
Instalar
# install lego /usr/local/bin/
Paso 13 – Configurar Let’s Encrypt
Let’s Encrypt: es una autoridad de certificación (CA) gratuita, automatizada y abierta, disponible para beneficio público. Es un servicio proporcionado por Internet Security Research Group (ISRG).
Consulte Instalar SSL Let’s Encrypt usando Lego para más detalles.
Artículo de interés:
Crear DIR /var/www/letsencrypt
En el DIR /var/www/letsencrypt/.well-known/acme-challenge lego guardará el fichero que nos servirá para validar nuestro domino o sea utilizaremos el desafío/respuesta http-01 para comprobar que el dominio es nuestro.
# mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
Crear VirtualHost
Crear fichero de configuración umami.conf
# touch /etc/nginx/http.d/umami.conf
Agregar la siguiente configuración
server {
listen 80;
server_name .midominio.com;
location / {
return 301 https://$host$request_uri;
}
location /.well-known/acme-challenge/ {
root /var/www/letsencrypt/;
}
}
Iniciar el NGINX
# service nginx start
Obtener certificado
Antes de ejecutar el siguiente comando debe crear el DIR /etc/lego/
lego --accept-tos -m micorreo@midominio.com -d midominio.com -d www.midominio.com --http --http.webroot /var/www/letsencrypt --pem --path /etc/lego/ run
Configurar Virtual Host
En este paso configuraremos NGINX como proxy genérico y activaremos el certificado de seguridad generado anteriormente.
server {
listen 443 ssl http2;
# SSL configuration
ssl_certificate /etc/lego/certificates/mi-dominio.com.crt;
ssl_certificate_key /etc/lego/certificates/mi-dominio.com.key;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/lego/certificates/mi-dominio.com.pem;
# Put here you domain
#
server_name mi-dominio.com;
# Max file size useful for file uploading
#
client_max_body_size 8M;
location / {
# NGINX acting as reverse proxy
#
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;
proxy_set_header Host $http_host;
#
# Set the backend url and port, port is optional for standard services
# when there is a variable as a part of proxy_pass URL a resolver is needed.
#
proxy_pass http://localhost:3000;
}
}
Refrescar la configuraciones del NGINX
# service nginx reload
Paso 14 – Acceder
Para que Umami puede acceder al servidor de BD debe comentar la opción #skip-networking
en el fichero /etc/my.cnf.d/mariadb-server.cnf, luego ponga en su nevagador https://mi-dominio.com use el usuario: admin contraseña: umami, click en login y debe ver el Dashboard, recomiendo cambiar su contraseña lo antes posible.
Enlace de interés
- Sitio oficial Umami