bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de Plausible Analytics

calendar_month Jul 16, 2026 schedule 21 min de lectura visibility 16 vistas
Установка Plausible Analytics на VPS: с Docker, Caddy и PostgreSQL
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación de Plausible Analytics en un VPS: con Docker, Caddy y PostgreSQL

TL;DR

En esta guía detallada, configuraremos paso a paso Plausible Analytics en su propio servidor VPS, utilizando la pila de tecnologías Docker Compose para la orquestación de servicios, PostgreSQL como base de datos y Caddy como un servidor web potente y fácil de configurar con emisión y renovación automática de certificados SSL/TLS. Obtendrá un sistema de análisis web completamente funcional, privado y controlado, desplegado en su servidor.

  • Plausible Analytics funcionará en su VPS bajo control total.
  • Se utiliza Docker Compose para una fácil instalación y gestión de todos los componentes.
  • Caddy configurará automáticamente HTTPS para su dominio.
  • PostgreSQL garantizará un almacenamiento fiable de los datos analíticos.
  • La guía incluye la configuración de seguridad, copia de seguridad y mantenimiento del sistema.
  • Todos los pasos son verificables y están listos para ser ejecutados en un servidor con Ubuntu 24.04 LTS.

¿Qué configuramos y por qué?

Diagrama: ¿Qué configuramos y por qué?
Diagrama: ¿Qué configuramos y por qué?

Estamos configurando Plausible Analytics, una alternativa ligera y centrada en la privacidad a Google Analytics. A diferencia de las plataformas de análisis tradicionales, Plausible no utiliza cookies, no recopila datos personales y cumple totalmente con los requisitos de GDPR, CCPA y PECR. Es la solución ideal para quienes desean obtener datos valiosos sobre los visitantes del sitio web sin comprometer su privacidad ni complicar su infraestructura.

Al final, obtendrá su propia instancia de Plausible Analytics, accesible a través de su nombre de dominio (por ejemplo, analytics.yourdomain.com), totalmente controlada y ejecutándose en su VPS. Todos los datos se almacenarán en su servidor, garantizando la máxima confidencialidad y seguridad. Podrá añadir un número ilimitado de sitios web para el seguimiento y ver las estadísticas en una interfaz cómoda e intuitiva.

Alternativas: servicios en la nube vs. autoalojamiento en un VPS

Existen varios enfoques para obtener análisis web:

  • Servicios en la nube (cloud-managed): Estos incluyen Google Analytics, Yandex.Metrica, así como las versiones de pago de Plausible Cloud, Fathom Analytics y Matomo Cloud. Ofrecen la comodidad de una solución "llave en mano": no tiene que preocuparse por la infraestructura, las actualizaciones o las copias de seguridad. Sin embargo, usted cede el control de los datos a una empresa externa, lo que puede ser inaceptable desde el punto de vista de la privacidad o los requisitos legales.
  • Autoalojamiento (self-hosted) en un VPS: Este es nuestro camino. Desplegar Plausible en su propio VPS le da control total sobre los datos, la infraestructura y la configuración. Usted mismo gestiona las actualizaciones, la seguridad y las copias de seguridad. Esto requiere ciertas habilidades técnicas y tiempo de configuración, pero proporciona máxima flexibilidad, privacidad y rentabilidad a largo plazo, especialmente con un gran número de sitios web a rastrear.

La elección del autoalojamiento en un VPS es especialmente relevante para desarrolladores, fundadores individuales de proyectos SaaS, entusiastas de las criptomonedas que valoran la descentralización y la privacidad, así como para aquellos que desean comprender y controlar más profundamente su infraestructura de servidor.

¿Qué configuración de VPS se necesita para esta tarea?

Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?
Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?

Para Plausible Analytics, especialmente al usar Docker Compose, Caddy y PostgreSQL, se requieren ciertos recursos mínimos. Estos requisitos pueden variar según el volumen de tráfico que planee rastrear.

Requisitos mínimos para Plausible Analytics (a partir de 2026)

  • CPU: Mínimo 1 núcleo. Para proyectos pequeños y medianos (hasta 1-2 millones de páginas vistas al mes), 1-2 núcleos son suficientes. Para sistemas con mayor carga, se recomiendan 2-4 núcleos.
  • RAM: Mínimo 2 GB de RAM. Plausible, PostgreSQL y los contenedores Docker requieren una cantidad significativa de RAM. Para un funcionamiento estable y el manejo de tráfico moderado, 4 GB serán una opción óptima. Si planea rastrear muchos sitios web o millones de visitas, considere 8 GB.
  • Disco: Mínimo 20-40 GB de SSD. El SSD es crítico para el rendimiento de la base de datos. La instalación de Plausible y sus dependencias ocupará varios gigabytes. El espacio restante será necesario para almacenar los datos de PostgreSQL, los registros y las copias de seguridad. Para el almacenamiento de datos a largo plazo y la escalabilidad, es mejor tener 80-100 GB.
  • Red: Puerto de 100 Mbps o 1 Gbps. Para el análisis web, un alto ancho de banda de red no suele ser un factor crítico, ya que los datos se transmiten en pequeños volúmenes. Una conexión estable con buen ancho de banda es importante para la disponibilidad general del servidor.

Plan de VPS específico para la tarea

Para la mayoría de los usuarios que comienzan con Plausible Analytics, un plan de VPS con las siguientes características será adecuado:

CriterioMínimo recomendadoÓptimo para el crecimiento
CPU2 núcleos4 núcleos
RAM4 GB8 GB
Disco80 GB SSD160 GB SSD
Red1 Gbps1 Gbps

Se puede considerar un VPS con estas características para asegurar el funcionamiento estable de Plausible Analytics y tener margen para el crecimiento de su proyecto.

Cuándo se necesita un dedicado, no un VPS

Un servidor dedicado se vuelve necesario cuando su proyecto alcanza una escala muy grande:

  • Proyectos de alta carga: Si rastrea cientos de sitios web o millones de páginas vistas al día (decenas y cientos de millones al mes), donde el rendimiento de la base de datos y la velocidad de procesamiento de las solicitudes se vuelven críticos.
  • Requisitos estrictos de seguridad y aislamiento: Un servidor dedicado proporciona un aislamiento físico completo, lo que puede ser importante para ciertas industrias reguladas o datos muy sensibles.
  • Necesidad de hardware personalizado: Si necesita configuraciones específicas de CPU, GPU, arreglos RAID o un volumen muy grande de RAM/disco que no se ofrecen en los planes de VPS estándar.

Para la mayoría de las instalaciones de Plausible Analytics, un VPS será más que suficiente y económicamente ventajoso. Si aún así decide que necesita un servidor dedicado, entonces un servidor dedicado adecuado proporcionará el máximo rendimiento y control.

Ubicación: qué factores influye

La elección de la ubicación geográfica del servidor VPS influye en varios aspectos:

  • Latencia: Cuanto más cerca esté el servidor de su audiencia objetivo (visitantes de los sitios web que rastrea) y de usted (si consulta con frecuencia los análisis), menor será la latencia. Esto afecta la velocidad de carga del script JS de Plausible en su sitio web y la velocidad de visualización de los informes en el panel de control.
  • Aspectos legales: En algunas jurisdicciones puede haber requisitos estrictos para el almacenamiento de datos. Elegir un servidor en un país con leyes de privacidad favorables (por ejemplo, en países de la UE para datos de usuarios europeos) puede ser preferible.
  • Disponibilidad y peering: Algunas ubicaciones tienen mejor conectividad con los principales proveedores de servicios de Internet, lo que puede proporcionar una conexión más estable y rápida.

Para Plausible, generalmente se recomienda elegir una ubicación geográficamente cercana a la mayoría de sus visitantes o a su propia ubicación para un trabajo cómodo con el panel de administración.

Preparación del servidor

Esquema: Preparación del servidor
Esquema: Preparación del servidor

Antes de instalar Plausible Analytics, es necesario realizar una configuración básica y reforzar la seguridad de su VPS. Utilizaremos Ubuntu Server 24.04 LTS como base, ya que es una de las distribuciones más populares y estables para servidores.

1. Acceso por SSH

Asegúrese de tener acceso al servidor por SSH. Normalmente, el proveedor proporciona una dirección IP y un nombre de usuario (por ejemplo, root) con una contraseña. Se recomienda configurar inmediatamente el acceso por claves SSH y deshabilitar el inicio de sesión con contraseña para root.


ssh root@ВАШ_IP_СЕРВЕРА

2. Actualización del sistema y creación de usuario sudo

Primero, actualizaremos todos los paquetes y crearemos un nuevo usuario con permisos sudo para evitar trabajar como root.


# Обновление списка пакетов
sudo apt update

# Обновление установленных пакетов до последних версий
sudo apt upgrade -y

# Создание нового пользователя (замените 'youruser' на желаемое имя)
sudo adduser youruser

# Добавление пользователя в группу sudo
sudo usermod -aG sudo youruser

# Переключение на нового пользователя (необязательно, можно выйти и зайти заново)
# su - youruser

Después de crear el usuario, salga de la sesión de root e inicie sesión con el nuevo usuario. Todos los comandos posteriores que requieran privilegios de administrador se ejecutarán con el prefijo sudo.


exit
ssh youruser@ВАШ_IP_СЕРВЕРА

3. Configuración de claves SSH para el nuevo usuario (recomendado)

Si aún no lo ha configurado, copie su clave pública SSH al servidor.


# Выполнить на вашей локальной машине
ssh-copy-id youruser@ВАШ_IP_СЕРВЕРА

# Если ssh-copy-id не работает, можно сделать вручную:
# ssh youruser@ВАШ_IP_СЕРВЕРА 'mkdir -p ~/.ssh && chmod 700 ~/.ssh'
# cat ~/.ssh/id_rsa.pub | ssh youruser@ВАШ_IP_СЕРВЕРА 'cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

Después de esto, puede deshabilitar la autenticación por contraseña en SSH para mejorar la seguridad. Edite el archivo /etc/ssh/sshd_config.


sudo nano /etc/ssh/sshd_config

Busque y modifique las siguientes líneas (o añádalas si no existen):


PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X). Luego, reinicie el servicio SSH:


sudo systemctl restart ssh

IMPORTANTE: Antes de cerrar la sesión SSH actual, abra una nueva ventana de terminal e intente acceder al servidor como youruser, utilizando la clave SSH. Asegúrese de que el inicio de sesión funciona. Si no es así, no cierre la sesión actual para poder revertir los cambios.

4. Instalación de Fail2Ban

Fail2Ban ayuda a proteger el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las que se producen demasiados intentos fallidos de inicio de sesión.


# Установка Fail2Ban
sudo apt install fail2ban -y

# Копирование файла конфигурации по умолчанию для настройки
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# Можно настроить jail.local, но для базовой защиты стандартные настройки подойдут
# sudo nano /etc/fail2ban/jail.local

# Перезапуск службы Fail2Ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Проверка статуса Fail2Ban
sudo systemctl status fail2ban

5. Configuración del Firewall (UFW)

El firewall UFW (Uncomplicated Firewall) permite restringir el acceso a los puertos del servidor, permitiendo solo las conexiones necesarias.


# Установка UFW
sudo apt install ufw -y

# Разрешить SSH (порт 22)
sudo ufw allow ssh

# Разрешить HTTP (порт 80) и HTTPS (порт 443) - для Caddy
sudo ufw allow http
sudo ufw allow https

# Включить UFW
sudo ufw enable

# Подтвердить включение (ввести 'y')
# Проверка статуса UFW
sudo ufw status verbose

Ahora su servidor está listo para la instalación del software necesario.

Instalación de software — paso a paso

Esquema: Instalación de software — paso a paso
Esquema: Instalación de software — paso a paso

Para desplegar Plausible Analytics, utilizaremos Docker Compose, que simplifica la gestión de múltiples contenedores (Plausible, PostgreSQL, ClickHouse). Como proxy inverso y para la configuración automática de HTTPS, utilizaremos Caddy.

1. Instalación de Docker y Docker Compose (válido para 2026)

Docker es una plataforma para desarrollar, entregar y ejecutar aplicaciones en contenedores. Docker Compose permite definir y ejecutar aplicaciones Docker multicontenedor.


# Удаление старых версий Docker (если есть)
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove $pkg; done

# Установка зависимостей для добавления репозитория Docker
sudo apt update
sudo apt install ca-certificates curl gnupg -y

# Добавление официального GPG-ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Добавление репозитория Docker в APT sources
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Обновление индекса пакетов APT
sudo apt update

# Установка Docker Engine, Docker CLI и Containerd
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Добавление текущего пользователя в группу docker для запуска команд без sudo
sudo usermod -aG docker $USER

# Применение изменений группы (выйдите и войдите снова или перезапустите сессию)
# newgrp docker

# Проверка установки Docker
docker run hello-world

# Проверка версии Docker Compose (ожидается docker compose version 2.x.x)
docker compose version

Nota: Después de ejecutar sudo usermod -aG docker $USER, deberá cerrar la sesión SSH y volver a iniciarla, o ejecutar newgrp docker, para que los cambios en los grupos surtan efecto.

2. Instalación de Caddy (válido para 2026)

Caddy es un potente servidor web con soporte HTTPS automático que actuará como proxy inverso para Plausible.


# Установка зависимостей
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

# Добавление официального GPG-ключа Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

# Добавление репозитория Caddy в APT sources
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

# Обновление индекса пакетов APT
sudo apt update

# Установка Caddy
sudo apt install caddy -y

# Проверка установки Caddy
caddy version

3. Preparación de la estructura de directorios para Plausible

Crearemos un directorio para Plausible y nos moveremos a él. Aquí se almacenarán todos los archivos de configuración.


# Создание директории для Plausible
mkdir plausible
cd plausible

4. Configuración de DNS

Antes de continuar, asegúrese de que su dominio o subdominio (por ejemplo, analytics.yourdomain.com) apunta a la dirección IP de su VPS. Cree un registro A en la configuración DNS de su dominio.

Tipo de registroHost/NombreValorTTL
Aanalytics (o @ si основной домен)IP_ВАШЕГО_VPSAuto (o 3600)

Espere un tiempo hasta que los registros DNS se actualicen (puede tardar desde unos minutos hasta varias horas). Puede verificar si los DNS se han actualizado usando ping o dig.


ping analytics.yourdomain.com

Configuración

Diagrama: Configuración
Diagrama: Configuración

Ahora que todos los componentes necesarios están instalados, es hora de configurar Plausible, PostgreSQL y Caddy.

1. Creación del archivo docker-compose.yml

Este archivo define los servicios (Plausible, PostgreSQL, ClickHouse), sus imágenes, puertos y dependencias.


nano docker-compose.yml

Pegue el siguiente contenido:


version: '3.8'

services:
  plausible_db:
    image: postgres:16-alpine # Versión actual de PostgreSQL para 2026
    restart: always
    environment:
      POSTGRES_DB: plausible
      POSTGRES_USER: plausible
      POSTGRES_PASSWORD: ${DB_PASSWORD} # Se tomará de .env
    volumes:
      - plausible_db_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U plausible"]
      interval: 5s
      timeout: 5s
      retries: 5

  plausible_events_db:
    image: clickhouse/clickhouse-server:24.3 # Versión actual de ClickHouse para 2026
    restart: always
    volumes:
      - plausible_events_db_data:/var/lib/clickhouse
      - ./clickhouse/config.xml:/etc/clickhouse-server/config.xml:ro
      - ./clickhouse/users.xml:/etc/clickhouse-server/users.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    healthcheck:
      test: ["CMD", "curl", "--fail", "http://localhost:8123/ping"]
      interval: 5s
      timeout: 5s
      retries: 5

  plausible:
    image: plausible/analytics:v2.0 # Versión actual de Plausible Analytics para 2026
    restart: always
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    depends_on:
      plausible_db:
        condition: service_healthy
      plausible_events_db:
        condition: service_healthy
    environment:
      DATABASE_URL: postgresql://plausible:${DB_PASSWORD}@plausible_db:5432/plausible
      CLICKHOUSE_DATABASE_URL: http://plausible:${CLICKHOUSE_PASSWORD}@plausible_events_db:8123/plausible
      BASE_URL: https://${YOUR_DOMAIN} # Su dominio
      SECRET_KEY_BASE: ${SECRET_KEY_BASE} # Genere con openssl rand -hex 64
      TOTP_SALT: ${TOTP_SALT} # Genere con openssl rand -hex 32
      ADMIN_USER_EMAIL: ${ADMIN_USER_EMAIL} # Su correo electrónico para el primer usuario
      ADMIN_USER_PASSWORD: ${ADMIN_USER_PASSWORD} # Contraseña para el primer usuario
      DISABLE_REGISTRATION: "true" # Deshabilitar el registro público
      # Para el envío de correo (opcional, pero recomendado para restablecer la contraseña)
      # SMTP_HOST: smtp.your-provider.com
      # SMTP_PORT: 587
      # SMTP_USER: your-smtp-user
      # SMTP_PASSWORD: your-smtp-password
      # SMTP_MAIL_FROM: [email protected]
      # SMTP_AUTH_METHOD: plain
      # SMTP_TLS_MODE: :auto
    ports:
      - "127.0.0.1:8000:8000" # Enlace a localhost, Caddy hará proxy de las solicitudes
    volumes:
      - plausible_data:/var/lib/plausible/data # Para los datos de Plausible, si los hay

volumes:
  plausible_db_data:
  plausible_events_db_data:
  plausible_data:

Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X).

2. Creación del archivo .env para secretos

Todos los datos confidenciales se almacenarán en el archivo .env, que no debe incluirse en el sistema de control de versiones (Git). Créelo:


nano .env

Pegue el siguiente contenido, reemplazando los marcadores de posición con sus valores:


YOUR_DOMAIN=analytics.yourdomain.com # Su dominio o subdominio para Plausible
DB_PASSWORD=YOUR_STRONG_POSTGRES_PASSWORD # Genere una contraseña segura para PostgreSQL
CLICKHOUSE_PASSWORD=YOUR_STRONG_CLICKHOUSE_PASSWORD # Genere una contraseña segura para ClickHouse
SECRET_KEY_BASE=YOUR_SECRET_KEY_BASE # Genere openssl rand -hex 64
TOTP_SALT=YOUR_TOTP_SALT # Genere openssl rand -hex 32
[email protected] # Su correo electrónico para el primer usuario de Plausible
ADMIN_USER_PASSWORD=YOUR_ADMIN_PASSWORD # Contraseña segura para el administrador de Plausible

Cómo generar claves:


openssl rand -hex 64 # Para SECRET_KEY_BASE
openssl rand -hex 32 # Para TOTP_SALT

Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X).

3. Configuración de ClickHouse

Cree los directorios y archivos de configuración para ClickHouse. Esto asegurará el correcto funcionamiento de la base de datos de eventos.


mkdir -p clickhouse
nano clickhouse/config.xml

Pegue el siguiente contenido en clickhouse/config.xml:



    
        information
        true
    
    ::
    262144
    10000000000
    100

Guarde y cierre. Luego, cree el archivo de usuarios:


nano clickhouse/users.xml

Pegue el siguiente contenido en clickhouse/users.xml (reemplace YOUR_STRONG_CLICKHOUSE_PASSWORD con la contraseña de su archivo .env):



    
        
            default
            
                ::/0
            
            YOUR_STRONG_CLICKHOUSE_PASSWORD
            default
        
    

Guarde y cierre.

4. Inicio de Plausible con Docker Compose

Ahora inicie todos los servicios de Docker Compose. El flag -d los inicia en segundo plano.


# Inicio de todos los servicios de Docker Compose
docker compose up -d

# Comprobación del estado de los contenedores en ejecución
docker compose ps

Asegúrese de que todos los contenedores tengan el estado running y healthy. Si algún contenedor no se inicia, revise los logs:


docker compose logs plausible
docker compose logs plausible_db
docker compose logs plausible_events_db

5. Configuración de Caddyfile

Caddy hará proxy de las solicitudes a Plausible y gestionará automáticamente HTTPS. Elimine el archivo Caddyfile predeterminado y cree el suyo propio.


# Eliminación del Caddyfile predeterminado
sudo rm /etc/caddy/Caddyfile

# Creación de un nuevo Caddyfile
sudo nano /etc/caddy/Caddyfile

Pegue el siguiente contenido, reemplazando analytics.yourdomain.com con su dominio:


analytics.yourdomain.com {
  reverse_proxy 127.0.0.1:8000
  header {
    # HSTS (por 1 año) - obligatorio por seguridad
    Strict-Transport-Security "max-age=31536000; includeSubDomains"
  }
}

Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X).

6. Inicio y verificación de Caddy

Verifique la configuración de Caddy y reinicie el servicio.


# Verificación de la configuración de Caddyfile
sudo caddy validate --config /etc/caddy/Caddyfile

# Recarga del servicio Caddy para aplicar los cambios
sudo systemctl reload caddy

# Verificación del estado del servicio Caddy
sudo systemctl status caddy

Asegúrese de que Caddy esté funcionando y no muestre errores. En los logs de Caddy (sudo journalctl -u caddy --no-pager) debería ver que los certificados de Let's Encrypt se emitieron correctamente.

7. Verificación de la operatividad

Abra su dominio (por ejemplo, https://analytics.yourdomain.com) en el navegador. Debería ver la página de inicio de sesión de Plausible Analytics.

Inicie sesión usando ADMIN_USER_EMAIL y ADMIN_USER_PASSWORD que especificó en el archivo .env. Después de iniciar sesión, agregue su primer sitio web y copie el fragmento JS para incrustarlo en su sitio.

También puede verificar la disponibilidad localmente con curl para asegurarse de que Plausible responde en el puerto 8000:


# Verificación de la disponibilidad de Plausible a través de localhost
curl http://127.0.0.1:8000

Debería recibir el código HTML de la página de Plausible. Si no, revise los logs de Docker Compose.

Copias de seguridad y mantenimiento

Esquema: Copias de seguridad y mantenimiento
Esquema: Copias de seguridad y mantenimiento

La configuración de copias de seguridad y el mantenimiento regular son cruciales para cualquier sistema en producción, incluyendo Plausible Analytics.

Qué respaldar

Para Plausible Analytics, es necesario respaldar regularmente los siguientes componentes:

  • Base de datos PostgreSQL: Contiene las cuentas de usuario de Plausible, la configuración de los sitios, los dominios y otra metainformación. Esta es la parte más importante.
  • Base de datos ClickHouse: Almacena todos los eventos recopilados (vistas de página, visitantes únicos, etc.). Aunque Plausible puede funcionar sin datos antiguos de ClickHouse, la restauración del volumen completo de análisis requiere su copia de seguridad.
  • Archivos de configuración de Plausible: El archivo docker-compose.yml, .env, y la carpeta clickhouse/.

Script simple de copia de seguridad automática

Crearemos un script simple que creará un volcado de las bases de datos y archivará los archivos de configuración. Para almacenar las copias de seguridad, se recomienda utilizar un almacenamiento externo, no el mismo servidor.

Cree el archivo backup_plausible.sh en el directorio /home/youruser/plausible/:


nano backup_plausible.sh

Pegue el siguiente contenido (reemplace YOUR_DOMAIN y DB_PASSWORD con sus valores):


#!/bin/bash

# Путь к директории Plausible
PLAUSIBLE_DIR="/home/youruser/plausible"
# Директория для хранения бэкапов на сервере (временное хранение)
BACKUP_DIR="${PLAUSIBLE_DIR}/backups"
# Домен, используемый для Plausible
YOUR_DOMAIN="analytics.yourdomain.com"

# Загрузка переменных окружения
set -a
. "${PLAUSIBLE_DIR}/.env"
set +a

# Убедитесь, что директория для бэкапов существует
mkdir -p "${BACKUP_DIR}"

TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/plausible_backup_${TIMESTAMP}.tar.gz"

echo "Iniciando la copia de seguridad de Plausible Analytics..."

# 1. Бэкап PostgreSQL
echo "Volcando la base de datos PostgreSQL..."
docker compose exec -T plausible_db pg_dump -U plausible -d plausible > "${BACKUP_DIR}/plausible_db_${TIMESTAMP}.sql"
if [ $? -eq 0 ]; then
  echo "Base de datos PostgreSQL archivada con éxito."
else
  echo "Error al archivar la base de datos PostgreSQL."
  exit 1
fi

# 2. Бэкап ClickHouse (если данные большие, можно использовать clickhouse-backup или другие методы)
# Для простоты, копируем директорию данных (останавливая ClickHouse на время копирования)
echo "Copia de seguridad de datos de ClickHouse (copiando)..."
docker compose stop plausible_events_db
tar -czvf "${BACKUP_DIR}/plausible_events_db_data_${TIMESTAMP}.tar.gz" -C "${PLAUSIBLE_DIR}/plausible_events_db_data" .
docker compose start plausible_events_db
if [ $? -eq 0 ]; then
  echo "Datos de ClickHouse archivados con éxito."
else
  echo "Error al archivar datos de ClickHouse."
  exit 1
fi

# 3. Архивирование конфигурационных файлов
echo "Archivando archivos de configuración..."
tar -czvf "${BACKUP_DIR}/plausible_configs_${TIMESTAMP}.tar.gz" \
  -C "${PLAUSIBLE_DIR}" docker-compose.yml .env clickhouse/
if [ $? -eq 0 ]; then
  echo "Archivos de configuración archivados con éxito."
else
  echo "Error al archivar archivos de configuración."
  exit 1
fi

# 4. Объединение всех бэкапов в один tar.gz архив
echo "Creando un archivo de copias de seguridad unificado..."
tar -czvf "${BACKUP_FILE}" -C "${BACKUP_DIR}" plausible_db_${TIMESTAMP}.sql plausible_events_db_data_${TIMESTAMP}.tar.gz plausible_configs_${TIMESTAMP}.tar.gz
if [ $? -eq 0 ]; then
  echo "Archivo de copias de seguridad unificado creado: ${BACKUP_FILE}"
else
  echo "Error al crear el archivo unificado."
  exit 1
fi

# Удаление промежуточных файлов
rm "${BACKUP_DIR}/plausible_db_${TIMESTAMP}.sql"
rm "${BACKUP_DIR}/plausible_events_db_data_${TIMESTAMP}.tar.gz"
rm "${BACKUP_DIR}/plausible_configs_${TIMESTAMP}.tar.gz"

echo "Copia de seguridad completada."

# Здесь можно добавить команды для загрузки бэкапа на удаленное хранилище
# Например, через rsync, scp, s3cmd или Restic
# rsync -avz "${BACKUP_FILE}" user@remotehost:/path/to/remote/backups/
# s3cmd put "${BACKUP_FILE}" s3://your-s3-bucket/plausible/
# restic backup --repo /mnt/backup_repo "${BACKUP_FILE}"

Haga que el script sea ejecutable:


chmod +x backup_plausible.sh

Dónde almacenar las copias de seguridad

Nunca almacene las copias de seguridad en el mismo servidor que los datos originales. Si el servidor falla, perderá tanto los datos como las copias de seguridad. Lugares de almacenamiento recomendados:

  • Almacenamiento externo compatible con S3: Servicios en la nube como AWS S3, DigitalOcean Spaces, Backblaze B2, o MinIO en otro servidor. Esta es una opción fiable y escalable.
  • VPS o servidor dedicado separado: Puede usar otro VPS menos potente para almacenar copias de seguridad con rsync, scp o herramientas especializadas como Restic o BorgBackup.
  • Ordenador local: Para proyectos muy pequeños, puede descargar periódicamente las copias de seguridad a su ordenador local.

Para la carga automática a un almacenamiento compatible con S3, puede usar s3cmd o aws cli. Para Restic:


# Установка Restic
sudo apt install restic -y
# Инициализация репозитория (выполняется один раз)
restic init --repo s3:s3.eu-central-1.amazonaws.com/your-plausible-bucket --password-file /path/to/s3_password.txt
# Пример команды для бэкапа в скрипте:
# restic backup --repo s3:s3.eu-central-1.amazonaws.com/your-plausible-bucket "${BACKUP_FILE}" --password-file /path/to/s3_password.txt

Configuración de Cron para la copia de seguridad automática

Añada una tarea a Cron para que el script se ejecute regularmente (por ejemplo, diariamente).


crontab -e

Añada la siguiente línea al final del archivo para que el script se ejecute diariamente a las 3:00 de la madrugada:


0 3 * * * /home/youruser/plausible/backup_plausible.sh >> /var/log/plausible_backup.log 2>&1

Guarde y cierre. Asegúrese de que el usuario youruser tenga todos los permisos necesarios para ejecutar el script y acceder a Docker.

Actualizaciones: rolling vs. ventana de mantenimiento

Las actualizaciones regulares de software son importantes para la seguridad y para obtener nuevas funciones.

  • Actualización del SO: Se recomienda realizarla una vez al mes o cuando se publiquen parches críticos. Use sudo apt update && sudo apt upgrade -y.
  • Actualización de imágenes Docker: Para Plausible, PostgreSQL, ClickHouse.
    • Actualización continua (para Docker): Puede ejecutar periódicamente docker compose pull para descargar nuevas versiones de las imágenes, y luego docker compose up -d. Docker reemplazará los contenedores con las nuevas versiones, conservando los datos. Es aconsejable hacerlo durante períodos de baja carga.
    • Ventana de mantenimiento: Para actualizaciones más grandes o al cambiar versiones mayores de Plausible/PostgreSQL/ClickHouse, se recomienda programar una "ventana de mantenimiento". Esto significa que detiene temporalmente los servicios, realiza una copia de seguridad, actualiza docker-compose.yml (si cambian las versiones de las imágenes o las configuraciones), y luego los inicia de nuevo.

Ejemplo de actualización de imágenes Docker:


cd /home/youruser/plausible
# Остановка сервисов
docker compose down
# Загрузка последних версий образов
docker compose pull
# Запуск сервисов с обновленными образами
docker compose up -d

Siempre consulte la documentación oficial de Plausible para obtener recomendaciones de actualización antes de ejecutarla.

Solución de problemas + Preguntas frecuentes

Esta sección recopila problemas comunes que pueden surgir durante la instalación y operación de Plausible Analytics, así como respuestas a preguntas frecuentes.

Plausible no se inicia o no está disponible a través del dominio

Qué verificar:

  1. Registros DNS: Asegúrese de que su dominio (por ejemplo, analytics.yourdomain.com) apunte correctamente a la dirección IP de su VPS. Use ping analytics.yourdomain.com.
  2. Puertos del Firewall (UFW): Asegúrese de que los puertos 80 (HTTP) y 443 (HTTPS) estén abiertos. Ejecute sudo ufw status verbose.
  3. Estado de los contenedores Docker: Verifique que todos los contenedores de Plausible, PostgreSQL y ClickHouse estén en ejecución y en estado healthy. Use docker compose ps en el directorio de Plausible.
  4. Logs de los contenedores Docker: Si un contenedor no se inicia, verifique sus logs: docker compose logs plausible, docker compose logs plausible_db, docker compose logs plausible_events_db. Busque errores relacionados con la conexión a la base de datos, variables de entorno o falta de recursos.
  5. Estado de Caddy: Asegúrese de que Caddy esté en ejecución y no muestre errores. sudo systemctl status caddy y sudo journalctl -u caddy --no-pager. Verifique que Caddy haya podido obtener un certificado SSL.
  6. Configuración de Caddyfile: Verifique que el dominio en Caddyfile coincida con su dominio y que el proxy esté configurado en 127.0.0.1:8000.
  7. Configuración de .env: Asegúrese de que BASE_URL en el archivo .env de Plausible coincida con su dominio con https://.

Cómo solucionarlo: Corrija los registros DNS correspondientes, abra los puertos en UFW, verifique y corrija los errores en los archivos .env, docker-compose.yml o Caddyfile, luego reinicie Docker Compose (docker compose down && docker compose up -d) o Caddy (sudo systemctl reload caddy).

Error "Database connection error" o "Plausible is unavailable"

Qué verificar:

  1. Logs de Plausible: docker compose logs plausible. Busque mensajes relacionados con la conexión a PostgreSQL o ClickHouse.
  2. Estado y logs de PostgreSQL/ClickHouse: Asegúrese de que las bases de datos estén en ejecución y saludables: docker compose ps. Verifique sus logs: docker compose logs plausible_db, docker compose logs plausible_events_db.
  3. Variables de entorno de la base de datos: Asegúrese de que DATABASE_URL y CLICKHOUSE_DATABASE_URL en el archivo .env de Plausible estén configuradas correctamente y que las contraseñas coincidan con las especificadas para PostgreSQL y ClickHouse.

Cómo solucionarlo: Corrija las contraseñas o las URL en .env, luego reinicie el contenedor de Plausible (docker compose restart plausible). Si el problema está en las bases de datos, verifique su configuración y asegúrese de que se inicien correctamente.

No llegan los correos electrónicos para restablecer la contraseña o registrarse

Qué verificar:

  1. Configuración SMTP en .env: Asegúrese de que todas las variables SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_MAIL_FROM estén configuradas correctamente para su proveedor de correo electrónico.
  2. Logs de Plausible: docker compose logs plausible. Busque errores relacionados con el envío de correo.
  3. Firewall: Asegúrese de que el puerto utilizado para SMTP (normalmente 587 o 465) esté abierto para conexiones salientes desde su VPS.

Cómo solucionarlo: Verifique los datos de inicio de sesión del servidor SMTP. Si no está seguro, consulte la documentación de su proveedor de correo electrónico. Después de los cambios en .env, reinicie el contenedor de Plausible (docker compose restart plausible).

¿Qué configuración mínima de VPS es adecuada para esta tarea?

Para una instalación mínima de Plausible Analytics con Docker, Caddy y PostgreSQL, se recomienda un VPS con 2 núcleos de CPU, 4 GB de RAM y 80 GB de SSD. Esto será suficiente para manejar un tráfico de varios cientos de miles de visitas de página al mes. Es importante que el disco sea SSD para garantizar un buen rendimiento de la base de datos. Con un crecimiento significativo del tráfico o la adición de un gran número de sitios, será necesario aumentar los recursos, principalmente la RAM y el espacio en disco.

¿Qué elegir: VPS o dedicado para esta tarea?

Para la mayoría de los usuarios y proyectos, un VPS es la opción óptima. Ofrece suficiente rendimiento, flexibilidad y un costo significativamente menor en comparación con un servidor dedicado. Un servidor dedicado solo debe considerarse en casos de carga muy alta (millones de visitas de página por día), cuando se requiere el máximo rendimiento, aislamiento físico completo o configuraciones de hardware específicas no disponibles en un VPS. Para el uso típico de Plausible Analytics, un VPS tendrá recursos y capacidades de escalado más que suficientes.

¿Cómo actualizar Plausible Analytics a una nueva versión?

Qué verificar:

  1. Documentación oficial de Plausible: Siempre consulte el repositorio oficial de GitHub de Plausible Analytics para obtener las últimas versiones e instrucciones de actualización.
  2. Cambios en docker-compose.yml: Las nuevas versiones pueden requerir la actualización de imágenes (por ejemplo, plausible/analytics:v2.1), la adición de nuevas variables de entorno o cambios en la estructura de docker-compose.yml.

Cómo solucionarlo:


# Vaya al directorio de Plausible
cd /home/youruser/plausible

# Haga una copia de seguridad antes de actualizar (altamente recomendado)
./backup_plausible.sh

# Edite docker-compose.yml para usar la nueva imagen de Plausible
# Por ejemplo, cambie 'plausible/analytics:v2.0' a 'plausible/analytics:v2.1'
nano docker-compose.yml

# Descargue las nuevas imágenes
docker compose pull

# Detenga los contenedores antiguos e inicie los nuevos
docker compose up -d

# Verifique los logs en busca de errores
docker compose logs plausible

Si la actualización incluye migraciones de base de datos, Plausible generalmente las ejecuta automáticamente al iniciar. Asegúrese de que todos los contenedores estén nuevamente en estado healthy.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha instalado y configurado con éxito Plausible Analytics en su servidor VPS utilizando Docker, Caddy y PostgreSQL. Ahora tiene un sistema de análisis web completamente funcional, privado y controlado, que no recopila datos personales y le brinda control total sobre su información.

Su nueva instancia de Plausible Analytics está lista para funcionar, brindándole información valiosa sobre los visitantes de sus sitios sin comprometer la privacidad. Ha obtenido no solo una herramienta, sino también la experiencia de implementar una aplicación web compleja en su propio servidor, lo cual es una habilidad valiosa para cualquier desarrollador o propietario de proyecto.

Próximos pasos:

  • Escalado: Si su tráfico aumenta significativamente, considere aumentar los recursos del VPS (CPU, RAM, disco) u optimizar la configuración de Plausible/ClickHouse.
  • Monitoreo: Configure un sistema de monitoreo (por ejemplo, Prometheus + Grafana) para rastrear el estado de su VPS, los contenedores Docker y el rendimiento de Plausible.
  • Funciones adicionales: Explore las capacidades de Plausible, como eventos personalizados, objetivos y segmentación, para analizar más a fondo el comportamiento del usuario.

¿Te fue útil esta guía?

Instalación de Plausible Analytics en VPS: con Docker, Caddy y PostgreSQL
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.