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
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, essmtp.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 deSMTP_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.