Estadísticas sencillas para tu blog con Shynet
2021-06-28
Índice
Si tienes un blog o sitio web puede que estós utilizando alguna herramienta de análisis web como Google Analitycs o alguna alternativa libre como Matomo o Plausible, los problemas que presenta utilizar Google Analitycs respecto a la privacidad son obvias y salvo que alojes tu mismo estos servicios, estarás entregando toda la información de tus visitantes a una empresa externa.
Características
- Shynet no utiliza cokies para rastrear a los visitantes, no necesitaras mostrar un aviso de que las estás utilizando
- Es de código abierto
- Es muy sencillo de utilizar
- Consume muy pocos recursos y es muy sencillo de implementar
- No te llena a la pantalla con multitud de estadísticas, recolecta solo los datos suficientes como para ser útil
- Interfaz fácil de usar.
- Es ideal para proyectos personales y sitios web de tamaño pequeño a mediano
Como digo ocupa muy pocos recursos, está construido con Django y permite múltiples usuarios y cada uno ellos puede rastrear múltiples sitios
No necesita JavaScript para que funcione el rastreo, en caso de que el navegador no lo utilice se puede utilizar un píxel de seguimiento transparente de 1x1, el script de seguimiento pesa menos de un kilobyte.
Hasta aquí las características más importantes de Shynet, veamos ahora como instalarlo en nuestro equipo.
Instalación
En el repositorio de Shynet cuentas con la documentación necesaria para instalarlo mediante docker o docker-compose como mótodos recomendados, yo utilizaró docker-compose
Vamos a necesitar tres ficheros de configuración, docker-compose.yml
, .env
y ngnix.conf
, puedes clonar el repositorio y modificarlo a tu gusto o bien crearlo tu mismo.
docker-compose.yml
Si no quieres modificar el puerto de escucha para el servidor no modifiques nada, copia y pega tal cual.
version: '3'
services:
shynet:
container_name: shynet_main
image: milesmcc/shynet:latest
restart: unless-stopped
expose:
- 8090
env_file:
# Create a file called '.env' if it doesn't already exist.
# You can use `TEMPLATE.env` as a guide.
- .env
environment:
- DB_HOST=db
networks:
- internal
depends_on:
- db
db:
container_name: shynet_database
image: postgres
restart: always
environment:
- "POSTGRES_USER=${DB_USER}"
- "POSTGRES_PASSWORD=${DB_PASSWORD}"
- "POSTGRES_DB=${DB_NAME}"
volumes:
- /volume1/docker/shynet:/var/lib/postgresql/data
networks:
- internal
webserver:
container_name: shynet_webserver
image: nginx
restart: always
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- 8090:80
depends_on:
- shynet
networks:
- internal
volumes:
shynet_db:
networks:
internal:
.env
Modifica este fichero para configurar el entorno de Shynet
# file shows all of the environment variables you can
# set to configure Shynet, as well as information about their
# effects. Make a copy of this file to configure your deployment.
# Database settings (PostgreSQL)
DB_NAME=shynet_db
DB_USER=shynet_db_user
DB_PASSWORD=tu_contraseña
DB_HOST=db
DB_PORT=5432
# Email settings (optional)
EMAIL_HOST_USER=example
EMAIL_HOST_PASSWORD=example_password
EMAIL_HOST=smtp.example.com
EMAIL_PORT=465
EMAIL_USE_SSL=True
# Comment out EMAIL_USE_SSL & uncomment EMAIL_USE_TLS if your SMTP server uses TLS.
# EMAIL_USE_TLS=True
SERVER_EMAIL=Shynet <[email protected]>
# General Django settings
DJANGO_SECRET_KEY=random_string
# For better security, set this to your deployment's domain. Comma separated.
ALLOWED_HOSTS=*
# Set to True (capitalized) if you want people to be able to sign up for your Shynet instance (not recommended)
ACCOUNT_SIGNUPS_ENABLED=False
# Should user email addresses be verified? Only set this to `required` if you've setup the email settings and allow
# public sign-ups; otherwise, it's unnecessary.
ACCOUNT_EMAIL_VERIFICATION=none
# The timezone of the admin panel. Affects how dates are displayed.
TIME_ZONE=Europe/Madrid
# Set to "False" if you will not be serving content over HTTPS
SCRIPT_USE_HTTPS=True
# How frequently should the monitoring script "phone home" (in ms)?
SCRIPT_HEARTBEAT_FREQUENCY=5000
# How much time can elapse between requests from the same user before a new
# session is created, in seconds?
SESSION_MEMORY_TIMEOUT=1800
# Should only superusers (admins) be able to create services? This is helpful
# when you'd like to invite others to your Shynet instance but don't want
# them to be able to create services of their own.
ONLY_SUPERUSERS_CREATE=True
# Whether to perform checks and setup at startup, including applying unapplied
# migrations. For most setups, the recommended value is True. Defaults to True.
# Will skip only if value is False.
PERFORM_CHECKS_AND_SETUP=True
# The port that Shynet should bind to. Don't set this if you're deploying on Heroku.
PORT=8090
# Set to "False" if you do not want the version to be displayed on the frontend.
SHOW_SHYNET_VERSION=False
# Redis, queue, and parellization settings; not necessary for single-instance deployments.
# Don't uncomment these unless you know what you are doing!
# NUM_WORKERS=1
# Make sure you set a REDIS_CACHE_LOCATION if you have more than one frontend worker/instance.
# REDIS_CACHE_LOCATION=redis://redis.default.svc.cluster.local/0
# If CELERY_BROKER_URL is set, make sure CELERY_TASK_ALWAYS_EAGER is False and
# that you have a separate queue consumer running somewhere via `celeryworker.sh`.
# CELERY_TASK_ALWAYS_EAGER=False
# CELERY_BROKER_URL=redis://redis.default.svc.cluster.local/1
# Should Shynet show third-party icons in the dashboard?
SHOW_THIRD_PARTY_ICONS=True
Presta especial atención a
DB_PASSWORD
la contraseña de la base de datosALLOWED_HOSTS
cambia * por el la dirección IP o nombre de dominio del servidorACCOUNT_SIGNUPS_ENABLED=False
evita que se registren nuevos usuarios
nginx.conf
Sólo hay que modificar la segunda línea para poner el nombre de dominio del servidor donde está ejecutándose Shynet, por ejemplo https://shynet.elblogdelazro.org
server {
server_name tu.dominio.org;
access_log /var/log/nginx/bin.access.log;
error_log /var/log/nginx/bin.error.log error;
location / {
proxy_pass http://shynet:8090;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Url-Scheme $scheme;
}
listen 80;
}
Los tres ficheros han de estar en la misma carpeta, ahora desplegamos los contenedores, abre un terminal en la carpeta donde residen los tres ficheros y ejecuta
sudo docker-compose up -d
Usuario admin
Cuando terminen de desplegarse los contenedores, debemos de crear un usuario administrador ejecutando
sudo docker exec -it shynet_main ./manage.py registeradmin una_direccion_de_correo
Este comando nos devolverá una contraseña temporal para el usuario admin para poder acceder por primera vez
Hostname
Para configurar el nombre del servidor de la instancia donde esta corriendo Shynet, es el mismo que pusimos en la linea numero 2 del fichero nginix.conf
, https://shynet.elblogdelazaro.org
sudo docker exec -it shynet_main ./manage.py hostname nombre_del_dominio
Etiqueta
Para etiquetar la instancia que estañamos creando en Shynet, por ejemplo “El Blog de Lázaro” o “ebdl”
sudo docker exec -it shynet_main ./manage.py whitelabel ebdl
Ahora podremos acceder a Shynet a travós de http://hostname:puerto
y terminar de configurar Shynet, por ejemplo https://shynet.elblogdelazaro.org
Configuración
Como usuario pondremos la dirección de correo y contraseña temporal que obtuvimos en el paso anterior
Hacemos clic en New Service
Rellenamos los campos para la creación del nuevo servicio como el nombre del servicio, y hacemos clic en Advanced settings para configurar si vamos a recolectar las direcciones IP de los visitantes, si vas a respetar las peticiones Don’t Track del navegador de los visitantes, las direcciones IP de las que no queremos recolectar datos, etc.
Despuós de crear el servicio hacemos clic en Manage, y podremos ver el script que debemos de insertar dentro de la etiqueta <body>
de cada pagina que queremos trackear
Te dejo unas capturas de pantalla despuós de un tiempo recolectando datos
Contras de utilizar Shynet
Ya vimos las bondades de utilizar Shynet pero tiene un par de características que han hecho que finalmente me decante por otra opción para llevar un seguimiento de los artículos mas leídos y el número de visitantes en el blog utilizando alternativas Open Source.
Contras
-
Te da la posibilidad de poder trackear y guardar las direcciones IP de tus visitantes, y aunque tu no lo habilites, tus visitantes no saben si realmente es así, queda a criterio del administrador del sitio, además de no cumplir con la GDPR
-
Además de utilizar la geolocalización por países, al permitir guardar las direcciones IP tambión puedes ver la localización aproximada del domicilio de cada visitante, GDPR
Espero que te haya gustado, pasa un buen día. 🐧