GNU/Linux >> Tutoriales Linux >  >> Linux

Guía completa para el alojamiento propio plausible [alternativa de Google Analytics amigable con la privacidad]

Como un sitio web ético, tratamos de mantener el Manual de Linux lo más libre posible de Google y el seguimiento. En ese sentido, nos abstenemos de utilizar Google Analytics para la medición del tráfico del sitio web.

En su lugar, utilizamos Plausible Analytics. Es una alternativa simple, liviana (<1 KB), de código abierto y respetuosa con la privacidad a Google Analytics (GA).

Puede que no le brinde tantos detalles como GA, pero le da una idea sobre el tráfico que recibe en su sitio web junto con la tasa de rebote y la duración de la visita.

También puede ver qué páginas reciben la mayoría de las visitas, de dónde obtiene tráfico su sitio web, la tasa de rebote y la duración en la página. También puede medir el tráfico según la región geográfica y los dispositivos.

Fundada y desarrollada por Uku Taht y Marco Saric, Plausible potencia en gran medida la idea de que el tráfico del sitio web se puede analizar sin obstaculizar la privacidad de los visitantes.

Si puede pagarlo, apoye el proyecto optando por su plan de alojamiento administrado. Incluso ofrecen una prueba gratuita de 30 días.

Si tiene varios sitios web con mucho tráfico y encuentra que el precio está fuera de su presupuesto, puede hospedar el proyecto de código abierto Plausible como lo hacemos en el Manual de Linux.

Análisis plausibles de autohospedaje con Docker

Cuando trabajé por primera vez en la implementación plausible, el proceso fue completamente complicado. Afortunadamente, ahora es bastante conveniente implementarlo en su propio servidor. Para hacerlo más fácil, la maravillosa gente de Plausible también ha creado un repositorio de alojamiento separado en GitHub para que pueda comenzar.

En esta guía detallada, aprenderá dos formas de implementar la instancia Plausible:

  • El método independiente (servidor único, servicio único):Solo Plausible se ejecuta en todo el servidor
  • El método de proxy inverso (servidor único, múltiples servicios):puede implementar múltiples servicios web como WordPress, Nextcloud, etc. con Plausible.

Además, también mostraré un par de pasos opcionales pero útiles para disfrutar de todas las funciones de Plausible:

  • Configurar SMTP en Plausible para que pueda recibir informes semanales o mensuales por correo electrónico.
  • Configuración de GeoIP para mostrar estadísticas de países en el mapa plausible del tablero

Requisitos

Esto es lo que necesita además de algún conocimiento de los comandos de Linux, docker y docker-compose.

  • Un servidor Linux. Puede utilizar un servidor físico, una máquina virtual o servidores en la nube. Puede registrarse con nuestro socio Linode y obtener $100 en créditos gratuitos.
  • Docker y Docker Compose instalados en su servidor.
  • Accede al DNS de tu dominio donde quieras desplegar Plausible.
  • Configuración del proxy inverso de Nginx si opta por el segundo método de implementación.

Paso 1:[Método 1] Preparar la implementación de Plausible de forma independiente (servidor único, servicio único)

En esta sección, supondré que desea alojar directamente su dominio en el puerto 80 en un servidor independiente.

Comencemos por descubrir primero los elementos esenciales mínimos más básicos. Tenga en cuenta que se requiere docker-compose de antemano.

La configuración de implementación plausible consta básicamente de 3 componentes principales:

  • Base de datos de Postgres para datos de usuario
  • Base de datos de Clickhouse para datos analíticos
  • Verosímil en sí mismo que se basa en las dos bases de datos

Dado que Plausible se implementa con Docker, los tres componentes anteriores se implementan como sus propios contenedores respectivos.

Ahora mira cómo se configuran con Docker Compose uno por uno:

Para Postgres, aquí debe usar la imagen oficial de Postgres 12 disponible en Docker Hub (al momento de escribir este tutorial). Esto es absolutamente necesario ya que se usa el latest etiqueta en este caso no es recomendable.

  plausible_db:
    image: postgres:12
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres

Use un nombre de volumen db-data para almacenar los datos del usuario en /var/lib/postgresql/data . También sería necesario configurar una variable de entorno para asignar la contraseña de Postgres.

Para Clickhouse, use la imagen de Yandex Clickhouse Docker Hub:

  plausible_events_db:
    image: yandex/clickhouse-server:latest
    volumes:
      - event-data:/var/lib/clickhouse
      - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

¡Déjame explicarte lo que está haciendo! Está utilizando un nombre de volumen event-data para almacenar los datos analíticos en /var/lib/clickhouse . Luego, los archivos de configuración se montan para deshabilitar las tablas de registro para evitar problemas como calmar el clickhouse a largo plazo. Siguiendo los archivos XML montados en enlace, ulimit se utiliza para restringir la utilización de recursos dentro del contenedor Clickhouse.

Para el servicio Plausible en sí, use la imagen de Docker Hub que está etiquetada como latest por los desarrolladores como una versión estable:

plausible:
    image: plausible/analytics:latest
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
      - mail
      - geoip
    ports:
      - 80:8000
    env_file:
      - plausible-conf.env

En la primera ejecución, crea una base de datos de Postgres para datos de usuario, una base de datos de Clickhouse para datos analíticos, los migra para preparar el esquema y crea la cuenta de administrador para usted.

Como también puede ver, el servicio se basa en plausible_db y plausible_events_db para que sea operativo. mail y geoip son otros dos servicios adicionales de los que hablaré más adelante.

Dado que está utilizando un método independiente, puede especificar directamente que el puerto 8000 del contenedor esté disponible a través del nombre de host en el puerto 80. En cuanto al env_file , lo discutiré en la sección "Archivos de entorno" más adelante en esta guía.

Cada uno de los servicios de base de datos tendrá sus propios volúmenes de Docker respectivos para almacenar datos analíticos y de usuarios. Por lo tanto, también debe incluir una sección de volúmenes dentro del archivo de composición de la ventana acoplable con los siguientes detalles::

volumes:
  db-data:
    driver: local
  event-data:
    driver: local
  geoip:
    driver: local

Ahora tiene los componentes necesarios para la implementación plausible básica.

Como ahora conocemos los tres componentes básicos para una implementación plausible básica, todavía no es la configuración completa que desearíamos. También necesitamos configurarlo con dos adiciones más que lo convertirán en una implementación completa de análisis web:

Configuración de SMTP para informes por correo electrónico [opcional]

Puede utilizar el servicio SMTP de Bytemark que Plausible utilizará para enviar informes analíticos semanales o mensuales. Esta configuración adicional es simple pero debe especificarse en la configuración del servicio plausible más adelante:

  mail:
    image: bytemark/smtp
    restart: always

Voy a usar SendGrid como ejemplo para esta guía. Puede crear su clave API gratuita desde aquí una vez que haya iniciado sesión en SendGrid. Guarde la cadena de 69 caracteres, ya que la necesitará más adelante como contraseña para su configuración SMTP .

GeoIP para mapa de panel [opcional]

Esta parte es necesaria para mostrar los recuentos de visitantes por país a medida que pasa el cursor sobre el mapa mundial en el tablero plausible de su dominio.

Para esto, debe usar el servicio gratuito GeoLite2. Las bases de datos GeoIP2 de MaxMind proporcionan datos de inteligencia IP para entornos de gran volumen. Al hospedar automáticamente sus bases de datos, elimina cualquier latencia de red y cargos por consulta. Plausible utiliza bases de datos GeoLite2 que son bases de datos de geolocalización de IP gratuitas implementadas como un contenedor.

Para configurar una base de datos GeoIP y permitir que se actualice automáticamente, debe registrarse para obtener una cuenta gratuita en MaxMind. Después de registrarse, vaya a Servicios>Mi clave de licencia desde el panel izquierdo en la página de su cuenta de Maxmind. Haga clic en "Generar nueva clave de licencia" y guárdela localmente, ya que solo puede verla una vez al generarla .

  plausible_geoip:
    image: maxmindinc/geoipupdate
    environment:
      - GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
      - GEOIPUPDATE_FREQUENCY=168 # update every 7 days
    env_file:
      - geoip-conf.env
    volumes:
      - geoip:/usr/share/GeoIP
    restart: always

A través de las dos variables de entorno anteriores, establecemos el ID de la edición y la frecuencia con la que se actualizará la base de datos. Las bases de datos de país, ciudad y ASN de GeoLite2 se actualizan semanalmente, todos los martes. El geoip-conf.env discutido más adelante en esta guía tendrá que incluir todas las credenciales que obtiene después de generar la clave de licencia discutida anteriormente.

Archivos de entorno

Esta sección es quizás la más importante, ya que cubre todas las variables de entorno esenciales que deben existir para que los cinco componentes anteriores de la instancia plausible funcionen correctamente. A lo largo de toda la configuración, hacemos uso de ellos directamente y a través de archivos de entorno.

Archivo de entorno para configuración plausible

El archivo plausible-conf.env almacena las variables de entorno más esenciales para implementar la instancia de Plausible.

ADMIN_USER_EMAIL=replace-me
ADMIN_USER_NAME=replace-me
ADMIN_USER_PWD=replace-me
BASE_URL=replace-me
SECRET_KEY_BASE=replace-me
  • ADMIN_USER_EMAIL es la dirección de correo electrónico en la que desea iniciar sesión y recibir informes analíticos semanales o mensuales.
  • Para ADMIN_USER_NAME , puede mencionar su propio nombre aquí.
  • El valor para ADMIN_USER_PWD es su contraseña de inicio de sesión.
  • BASE_URL puede tener el formato:http://plausible.domain.com . Tenga en cuenta que para habilitar HTTPS, se recomienda utilizar un método de proxy inverso (discutido en la segunda parte de esta guía) para utilizar un certificado SSL.
  • La SECRET_KEY_BASE es una clave secreta aleatoria de 64 caracteres utilizada para asegurar Plausible. Para generar uno, use:openssl rand -base64 64
También es posible que desee configurar adicionalmente la variable DISABLE_REGISTRATION en verdadero en el archivo de configuración anterior. Esta configuración tiene sentido si no desea permitir el registro de nuevos usuarios una vez que su instancia de Plausible esté en funcionamiento. Pero mantenga sus credenciales de administrador respaldadas correctamente.

Archivo de entorno para la configuración plausible de SMTP con Sendgrid

Aunque también puede incluir las variables de entorno SMTP en el mismo archivo, el uso de una separada hace que sea más claro seguir. Entonces, aquí he usado un archivo llamado plausible-smtp.env para el mismo propósito.

La siguiente configuración es específica de Sendgrid, pero puede cambiarla en consecuencia si prefiere un servicio SMTP diferente:

[email protected]
SMTP_HOST_ADDR=smtp.sendgrid.net
SMTP_HOST_PORT=465
SMTP_USER_NAME=apikey
SMTP_USER_PWD=replace-me
SMTP_HOST_SSL_ENABLED=true
SMTP_RETRIES=20
CRON_ENABLED=true
  • MAILER_EMAIL es la dirección de correo electrónico "de" personalizable que aparecerá en su bandeja de entrada cuando reciba sus informes semanales o mensuales.
  • SMTP_HOST_ADDR es el nombre de host del servidor SMTP. En el caso de SendGrid, es smtp.sendgrid.net .
  • Aquí usa 465 para el número de puerto de host SMTP a través de SMTP_HOST_PORT .
  • apikey es la credencial de nombre de usuario para SendGrid en particular, establecida a través de SMTP_USER_NAME .
  • SMTP_USER_PWD es la clave de 69 caracteres utilizada como contraseña que obtuvo de SendGrid (discutido en la sección de configuración de SMTP).
  • Habilité SSL en verdadero a través de SMTP_HOST_SSL_ENABLED para SendGrid.
  • El número de reintentos hasta que el remitente se da por vencido se puede establecer a través de SMTP_RETRIES .

CRON_ENABLED no es en realidad una configuración de SMTP para ser específicos. Pero la razón por la que he incluido esto aquí es porque sin esta variable establecida en true , no recibirá ningún informe semanal o mensual por correo electrónico. De forma predeterminada, este valor es falso, pero probablemente se actualizará en la próxima versión de Plausible, como se explica aquí. Pero a partir de ahora, esta configuración es absolutamente crucial.

Archivo de entorno para estadísticas globales en plausible con GeoIP

Con geoip-conf.env , incluye las credenciales esenciales obtenidas de MaxMind como se mencionó anteriormente:

GEOIPUPDATE_ACCOUNT_ID=replace-me
GEOIPUPDATE_LICENSE_KEY=replace-me

Para obtener una referencia completa de cada tipo de variable de entorno en Plausible, puede visitar su página de documentación aquí.

Ahora, en este punto, ha analizado todos los detalles necesarios para alojar una implementación independiente de Plausible. La configuración completa de composición de la ventana acoplable se vería así:

version: "3.3"
services:
  plausible_db:
    image: postgres:12
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres

  plausible_events_db:
    image: yandex/clickhouse-server:latest
    volumes:
      - event-data:/var/lib/clickhouse
      - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

  mail:
    image: bytemark/smtp
    restart: always

  geoip:
    image: maxmindinc/geoipupdate
    environment:
      - GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
      - GEOIPUPDATE_FREQUENCY=168 # update every 7 days
    env_file:
      - geoip-conf.env
    volumes:
      - geoip:/usr/share/GeoIP
    restart: always

  plausible:
    image: plausible/analytics:latest
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
      - mail
      - geoip
    ports:
      - 80:8000
    env_file:
      - plausible-conf.env

volumes:
  db-data:
    driver: local
  event-data:
    driver: local
  geoip:
    driver: local

Si siguió este método, salte la siguiente sección.

Paso 1:[Método 2] Preparar el implementación de Plausible con Nginx proxy inverso (servidor único, servicios múltiples)

Este es un método alternativo y no se puede usar con el método 1 que se analizó en la sección anterior. Deberá configurar el proxy inverso aquí.

Repasemos rápidamente las revisiones necesarias para hacer que la configuración plausible anterior también funcione con una configuración de proxy inverso. Estoy usando el ejemplo de nuestro artículo anterior de Nginx Docker.

Para los cuatro servicios que no sean el servicio Plausible, usaré una red interna llamada plausible ya que solo necesita ser visible solo para Plausible.

networks:
  - plausible

Pero para el servicio Plausible, el mismo net la red utilizada en la configuración del proxy inverso debe especificarse junto con el plausible red, por supuesto. Solo entonces podrá hacer que funcione con el contenedor Nginx Docker.

networks:
  - net
  - plausible

También necesita reemplazar nuestros ports parámetro con expose dentro de su servicio Plausible ya que ahora está utilizando un proxy inverso:

    expose:
      - 8000

Al final de la configuración, también debe especificar cuáles de las redes son internas y externas:

networks:
  net:
    external: true
  plausible:
    internal: true

Variables de entorno adicionales

También debe asegurarse de actualizar plausible-conf.env archivo con las siguientes variables para que la instalación funcione correctamente:

VIRTUAL_HOST=plausible.domain.com
LETSENCRYPT_HOST=plausible.domain.com
TRUSTED_PROXIES=172.x.0.0/16

Especifique el nombre de dominio sin https:// en VIRTUAL_HOST y LETSENCRYPT_HOST que están destinados al proxy inverso y al certificado SSL respectivamente.

Con TRUSTED_PROXIES , define explícitamente los servidores proxy para que Plausible confíe. El valor exacto se puede obtener con:

docker inspect -f '{{ json .IPAM.Config }}' net | jq .[].Subnet

Para que el comando anterior funcione, necesitaría jq herramienta ya instalada.

En Ubuntu, puede instalarlo con:

sudo apt -y install jq

En CentOS, primero necesitaría agregar el repositorio:

yum install epel-release -y
yum install jq -y

Entonces, aquí está el archivo docker-compose.yml final, revisado para el proxy inverso:

version: "3.3"
services:
  mail:
    image: bytemark/smtp
    restart: always
    networks:
      - plausible

  plausible_db:
    image: postgres:12
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres
    restart: always
    networks:
      - plausible

  plausible_events_db:
    image: yandex/clickhouse-server:latest
    volumes:
      - event-data:/var/lib/clickhouse
      - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    restart: always
    networks:
      - plausible

  geoip:
    image: maxmindinc/geoipupdate
    environment:
      - GEOIPUPDATE_EDITION_IDS=GeoLite2-Country
      - GEOIPUPDATE_FREQUENCY=168 # update every 7 days
    env_file:
      - geoip-conf.env
    volumes:
      - geoip:/usr/share/GeoIP
    restart: always
    networks:
      - net
      - plausible

  plausible:
    image: plausible/analytics:latest
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
      - mail
      - geoip
    expose:
      - 8000
    env_file:
      - plausible-conf.env
      - plausible-smtp.env
    restart: always
    networks:
      - net
      - plausible

volumes:
  db-data:
    driver: local
  event-data:
    driver: local
  geoip:
    driver: local

networks:
  net:
    external: true
  plausible:
    internal: true

Paso 2:Implementación de Plausible Analytics

Independientemente de si utilizó el método 1 o el método 2, debe tener listo el archivo docker-compose. Es hora de usar ese archivo.

En su servidor, clone el repositorio de hospedaje Plausible:

git clone https://github.com/plausible/hosting

Vaya al directorio para revisar los archivos:

cd hosting

Ahora edite el archivo docker-compose para que tenga el mismo contenido que vio en el método 1 o el método 2 (el que elija). También revise todos los archivos esenciales que requieren modificaciones como se describe utilizando cualquiera de los dos métodos anteriores.

Inicie la instancia plausible:

docker-compose up -d

Accede al dominio plausible que habías especificado en la configuración. Deberías ver una pantalla como esta. Usando las credenciales que proporcionó en el plausible-conf.env archivo, inicie sesión en el tablero plausible.

Paso 3:Usar análisis plausibles para sus sitios web

Es hora de agregar los sitios web que desea rastrear y analizar con Plausible. Cuando haya iniciado sesión en el panel de control de su instancia Plausible, haga clic en "+ Agregar un sitio web".

Ingrese su nombre de dominio (diga domain.com ) sin www o https:// y haga clic en "Agregar fragmento"

Tenga en cuenta que domain.com puede ser cualquier dominio y no tiene nada que ver con hospedar Plausible en su subdominio. Una instancia plausible se puede alojar en cualquier otro nombre de dominio y no necesariamente en el subdominio del dominio que se analiza.

Debe agregar este fragmento de JavaScript en los scripts de encabezado en el sitio web de dominio.com. Depende de usted descubrir cómo agregar un script de encabezado en su sitio web.

En Linux Handbook, usamos Ghost, CMS rápido y liviano.

En Ghost, debe pegarlo en la sección de encabezado en SETTINGS > Code injection y haga clic en "Guardar":

Una vez agregado, podrá observar el análisis web del dominio poco después de hacer clic en él en el panel principal.

Para otras aplicaciones web, como WordPress y Discourse, también puede consultar las guías de integración oficiales.

Habilitar informes semanales o mensuales con Plsuible

Asumiendo domain.com es el dominio que ha agregado para analizar, diríjase a domain.com > Settings > Email Reports después de iniciar sesión en el tablero.

Habilite las opciones que desee según sea necesario:

Si prefiere seguir el camino de los nerds, también puede acceder a la configuración de correo electrónico directamente en función de la siguiente sintaxis de URL:

https://plausible.domain.com/domain.com/settings#email-reports

donde plausible.domain.com es donde aloja su instancia plausible y domain.com es el sitio que desea analizar.

¿Qué pasa con las estadísticas globales?

Si configuró GeoIP, puede ver el mapa global en el tablero donde los países visitantes están sombreados en púrpura. Cuanto más oscuro es el tono del color, mayor es el recuento de visitantes del país.

Al pasar el cursor sobre un país en el mapa, se le mostrará el número de visitantes de su sitio web. Al hacer clic en "MÁS" se le mostrará la lista completa de recuentos de visitantes por país del mapa.

Consejos de mantenimiento

Si desea verificar los registros del contenedor mientras se implementa en tiempo real, puede ejecutar:

docker logs -f hosting_plausible_1

En cualquier momento, si desea detener la instancia, puede utilizar:

docker-compose down

¡Eso es todo! ¡Ha implementado con éxito Plausible Analytics con informes por correo electrónico y estadísticas de mapas por país en el tablero!

Notas personales sobre Plausible

Entonces, aprendió a implementar análisis plausibles en su servidor. ¿Qué método eligió para este propósito?

Prefiero usar el método de proxy inverso cada vez porque siempre deja una opción para implementar otros servicios web y, por lo tanto, ahorrar el costo del servidor.

Un método de proxy inverso es preferible incluso para un modo de operación de un solo servidor y un solo servicio, ya que hace que toda la configuración esté preparada para el futuro. Si planeo implementar una segunda instancia en el método discutido en la sección anterior, requeriría mucho esfuerzo adicional para cambiar y adoptar la nueva configuración de proxy inverso. Así que es mejor tenerlo ya listo desde el principio mismo.

Además, tampoco tiene que preocuparse por los certificados SSL.

Si tiene habilitada la restauración en vivo en Docker, querrá usar la política de reinicio on-failure en lugar de always mostrado en esta guía. Evitará reiniciar los contenedores en caso de que se reinicie el demonio Docker.

En lugar de Google Analytics, disfrute de un análisis sin Google :)

Si encuentra algún error, enfrenta algún problema o tiene alguna sugerencia, hágamelo saber dejando un comentario.


Linux
  1. Cómo instalar Void Linux:una guía completa paso a paso

  2. Una guía del administrador de sistemas para configurar un servidor de correo electrónico

  3. Guía completa para usar AsciiDoc en Linux

  4. Guía completa para Rocket.Chat de alojamiento propio con Docker

  5. Instalar Zabbix en Ubuntu Server 16.04 LTS - Guía completa

Una guía completa para instalar Tomcat en Linux

Ubuntu Firewall UFW:una guía completa

La guía completa para instalar MySQL en Ubuntu

Comandos de directorio de Linux:una guía completa

Instalar FOG Server en Ubuntu Server - Guía definitiva

Cronjob - La guía completa de Cronjobs