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

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Implementación de Cachet en un

calendar_month Aug 12, 2026 schedule 24 min de lectura visibility 12 vistas
Развёртывание Cachet на VPS для создания публичной страницы статуса сервисов
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

Despliegue de Cachet en un VPS para crear una página de estado pública de servicios

TL;DR

En esta guía detallada, configuraremos Cachet paso a paso, una solución potente y flexible para crear una página de estado pública para sus servicios. Aprenderá a instalar y configurar Cachet en un VPS con Ubuntu 24.04 LTS, utilizando Nginx, PHP 8.4 y MySQL 8.0, así como a asegurar la conexión con HTTPS y organizar un sistema de copia de seguridad. Como resultado, obtendrá una página de estado completamente funcional que le ayudará a informar eficazmente a los usuarios sobre la disponibilidad de sus servicios, trabajos planificados e incidentes.

  • Configuración de Ubuntu 24.04 LTS, incluyendo SSH, firewall y utilidades básicas.
  • Instalación paso a paso de todos los componentes necesarios: Nginx, PHP 8.4, MySQL 8.0 y Composer.
  • Configuración detallada de Cachet, incluyendo la base de datos, variables de entorno y el servidor web Nginx.
  • Activación de HTTPS con Caddy para asegurar una conexión segura.
  • Creación de un sistema de copia de seguridad para proteger los datos y configuraciones de Cachet.
  • Resolución de problemas comunes y respuestas a preguntas frecuentes.

Qué configuramos y por qué

Esquema: Qué configuramos y por qué
Esquema: Qué configuramos y por qué

En el mundo moderno, la estabilidad y disponibilidad de los servicios en línea son de importancia crítica. Ya sea una plataforma SaaS, un servidor de juegos o un proyecto personal, los usuarios esperan un funcionamiento ininterrumpido. Sin embargo, los incidentes, los trabajos planificados o las fallas imprevistas son inevitables. En tales situaciones, es crucial tener una forma efectiva de informar a su audiencia. Para esto está diseñado Cachet.

Cachet es una solución open-source elegante y potente para crear una página de estado pública (status page). Le permite informar de forma transparente sobre el estado de sus servicios, publicar avisos de trabajos planificados, registrar incidentes y mostrar su historial de resolución. Al usar Cachet, aumenta la confianza de los usuarios, reduce la carga en el soporte técnico durante las interrupciones y demuestra un enfoque profesional en la gestión de la infraestructura.

En resumen, al finalizar esta guía, obtendrá una página de estado completamente funcional, segura y mantenible, alojada en su propio VPS. Podrá crear componentes (por ejemplo, "Servidor web", "Base de datos", "API"), vincularlos con métricas, publicar incidentes con actualizaciones en tiempo real e informar a los suscriptores a través de varios canales.

Existen diferentes enfoques para crear páginas de estado. Algunos prefieren utilizar servicios gestionados en la nube, como Statuspage.io (Atlassian), Instatus, Better Uptime o Atlassian Opsgenie. Estas soluciones ofrecen comodidad, integraciones listas para usar y costos mínimos de configuración, pero a menudo conllevan pagos mensuales, limitaciones en el número de componentes o suscriptores, y menos control sobre los datos y la personalización. Para muchos proyectos, especialmente en las etapas iniciales o con un presupuesto limitado, estos costos pueden ser significativos.

Un enfoque alternativo es una solución autoalojada en su propio VPS. Esto le otorga control total sobre la infraestructura, los datos y las capacidades de personalización. Solo paga por el VPS, lo que a menudo resulta significativamente más económico a largo plazo, especialmente si ya tiene un servidor. También proporciona mayor privacidad, ya que todos los datos se almacenan en su propia máquina. Cachet es una de las mejores soluciones de código abierto para autoalojamiento, ofreciendo una rica funcionalidad y una comunidad activa. Este es el camino que elegiremos en esta guía, desplegando Cachet en un VPS.

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

Esquema: Qué configuración de VPS se necesita para esta tarea
Esquema: Qué configuración de VPS se necesita para esta tarea

La elección de un VPS adecuado para Cachet depende de la carga esperada, el número de componentes, incidentes y suscriptores. Cachet no es una aplicación que consuma muchos recursos para la mayoría de los escenarios, pero es importante asegurar el funcionamiento estable del servidor web, PHP-FPM y la base de datos.

Requisitos mínimos para Cachet (válido para 2026):

  • Procesador (CPU): 1-2 vCPU. Para Cachet es suficiente un núcleo de un procesador moderno (por ejemplo, Intel Xeon E-series o AMD EPYC). Si planea ejecutar otros servicios en el mismo VPS o espera un tráfico muy alto, puede considerar 2 vCPU.
  • Memoria RAM: 2 GB. Este volumen será suficiente para el sistema operativo (Ubuntu 24.04 LTS), el servidor web Nginx, PHP-FPM, MySQL 8.0 y la propia aplicación Cachet. Con un uso activo o un gran número de visitantes a la página de estado, 4 GB de RAM asegurarán un funcionamiento más cómodo.
  • Disco (Almacenamiento): 40 GB SSD. El espacio principal será ocupado por el sistema operativo (alrededor de 10-15 GB), los archivos de Cachet (varios cientos de megabytes) y la base de datos. Un disco SSD es crítico para un buen rendimiento de la base de datos. Para una perspectiva a largo plazo y el almacenamiento de copias de seguridad, se recomiendan 60-80 GB. Un SSD NVMe será la elección ideal para un rendimiento máximo.
  • Red (Network): 100 Mbps - 1 Gbps. Para una página de estado que principalmente entrega contenido estático y pequeños volúmenes de datos de la base de datos, 100 Mbps suele ser suficiente. Sin embargo, los VPS modernos a menudo ofrecen puertos de 1 Gbps, lo cual es preferible para el rendimiento general y la escalabilidad.
  • Sistema operativo: Ubuntu Server 24.04 LTS (u otra versión LTS moderna de una distribución basada en Debian).

Plan de VPS específico para la tarea:

Para una instalación típica de Cachet, capaz de atender a varios miles de visitantes al día y monitorear hasta 20-30 componentes, será adecuado un VPS con las siguientes características: 2 vCPU, 4 GB RAM, 80 GB NVMe SSD, puerto de 1 Gbps. Esta configuración será suficiente con holgura para el funcionamiento estable de Cachet y una posible expansión de la funcionalidad.

Puede considerar un VPS con las características indicadas o ofertas similares de otros proveedores.

Cuándo se necesita un servidor dedicado y no un VPS:

Los servidores dedicados suelen ser necesarios para tareas mucho más grandes que una simple página de estado de Cachet. Considere un servidor dedicado si:

  • Planea alojar Cachet junto con docenas de otros servicios de alta carga en la misma máquina.
  • Se requiere un rendimiento de entrada/salida (I/O) muy alto o hardware específico no disponible en un VPS.
  • Tiene miles o decenas de miles de suscriptores activos y espera un tráfico muy alto en la página de estado durante incidentes importantes.
  • Necesita requisitos estrictos de cumplimiento normativo que exigen el aislamiento físico del equipo.
  • Desea un control total sobre el hardware, incluyendo la elección de modelos específicos de CPU, RAM, controladores RAID y tarjetas de red.

Para la mayoría de los usuarios que despliegan Cachet, un VPS será una solución más que suficiente y económicamente ventajosa.

Ubicación: qué factores influye

La elección de la ubicación del VPS es importante por varias razones:

  • Latencia: Aloje el servidor lo más cerca posible de su audiencia principal o de los servidores cuyo estado está monitoreando. Una menor latencia significa un acceso más rápido a la página de estado para sus usuarios.
  • Legislación de datos: Dependiendo de la jurisdicción de su empresa y de sus usuarios, puede haber requisitos para el almacenamiento de datos en un país o región específica (por ejemplo, GDPR en Europa). Asegúrese de que la ubicación elegida cumpla con estos requisitos.
  • Precio: El costo de un VPS puede variar ligeramente entre diferentes regiones.
  • Riesgos geopolíticos: En algunos casos, la elección de la ubicación puede estar dictada por el deseo de evitar ciertos riesgos geopolíticos.

Generalmente se recomienda elegir una ubicación que esté en la misma región geográfica que su audiencia principal. Por ejemplo, si sus usuarios están en Europa, elija un servidor en Alemania, Países Bajos o Finlandia.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de proceder con la instalación de Cachet, es necesario realizar una preparación básica de su nuevo VPS. Utilizaremos Ubuntu Server 24.04 LTS, ya que es una versión actual y estable del sistema operativo, con soporte hasta 2029.

1. Conexión por SSH y creación de usuario

Después de obtener los datos de acceso a su VPS (dirección IP, contraseña de root), conéctese a él a través de SSH. Se recomienda no utilizar el usuario root para el trabajo diario. Cree un nuevo usuario con permisos sudo y configure la autenticación por claves SSH.


ssh root@ВАШ_IP_АДРЕС # Conectarse como root
adduser имя_пользователя # Crear un nuevo usuario
usermod -aG sudo имя_пользователя # Añadir el usuario al grupo sudo

Ahora, copie su clave pública SSH al servidor para el nuevo usuario. Si no tiene una clave SSH, créela en su máquina local usando ssh-keygen.


# En la máquina local:
ssh-copy-id имя_пользователя@ВАШ_IP_АДРЕС

Después de esto, salga de la sesión de root e inicie sesión con el nuevo usuario:


exit
ssh имя_пользователя@ВАШ_IP_АДРЕС

2. Deshabilitar la autenticación por contraseña para root y la contraseña SSH (opcional, pero recomendado)

Para mejorar la seguridad, se recomienda deshabilitar el inicio de sesión por contraseña para root y, posiblemente, para todos los usuarios, permitiendo solo la autenticación por claves SSH. Edite el archivo /etc/ssh/sshd_config.


sudo nano /etc/ssh/sshd_config

Encuentre y modifique las siguientes líneas:


# PermitRootLogin yes # Comente o establezca en no
PermitRootLogin no
PasswordAuthentication no # Deshabilitamos el inicio de sesión por contraseña para todos los usuarios
ChallengeResponseAuthentication no

Reinicie el servicio SSH:


sudo systemctl restart sshd

IMPORTANTE: Asegúrese de poder iniciar sesión con el nuevo usuario mediante clave SSH antes de deshabilitar PasswordAuthentication. De lo contrario, perderá el acceso al servidor.

3. Actualización del sistema e instalación de utilidades básicas

Siempre comience actualizando el gestor de paquetes y los paquetes instalados.


sudo apt update # Actualizamos la lista de paquetes disponibles
sudo apt upgrade -y # Instalamos las actualizaciones para todos los paquetes
sudo apt install -y curl wget git unzip htop # Instalamos utilidades útiles

4. Configuración del firewall (UFW)

Uncomplicated Firewall (UFW) es una interfaz fácil de usar para netfilter. Configúrelo para permitir solo las conexiones necesarias: SSH (puerto 22), HTTP (puerto 80) y HTTPS (puerto 443).


sudo ufw allow OpenSSH # Permitimos la conexión SSH
sudo ufw allow http # Permitimos HTTP (puerto 80)
sudo ufw allow https # Permitimos HTTPS (puerto 443)
sudo ufw enable # Habilitamos el firewall (confirme con 'y')
sudo ufw status # Verificamos el estado del firewall

5. Instalación de Fail2Ban

Fail2Ban escanea los registros del servidor (por ejemplo, los registros SSH) en busca de actividad sospechosa (múltiples intentos fallidos de inicio de sesión) y bloquea temporalmente las direcciones IP de los atacantes. Esto mejora significativamente la seguridad de su servidor.


sudo apt install -y fail2ban # Instalamos Fail2Ban
sudo systemctl enable fail2ban # Habilitamos el inicio automático al arrancar
sudo systemctl start fail2ban # Iniciamos el servicio
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Creamos una copia local para la configuración
sudo nano /etc/fail2ban/jail.local # Editamos la configuración

En el archivo jail.local, asegúrese de que la sección [sshd] esté activa (enabled = true). También puede configurar bantime (tiempo de bloqueo) y findtime (período para detectar intentos) según sus preferencias.


# Ejemplo de configuración en jail.local:
[DEFAULT]
bantime = 1h # Bloquear durante 1 hora
findtime = 10m # Escanear durante 10 minutos
maxretry = 5 # Bloquear después de 5 intentos fallidos

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Después de los cambios, reinicie Fail2Ban:


sudo systemctl restart fail2ban
sudo fail2ban-client status # Verificamos el estado
sudo fail2ban-client status sshd # Verificamos el estado para SSH

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

Instalación de software — paso a paso

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

Cachet está construido sobre el framework Laravel, por lo que necesitaremos un servidor web (Nginx), un intérprete de PHP con las extensiones necesarias, el gestor de dependencias Composer y una base de datos (MySQL). Utilizaremos las versiones de software actuales para el año 2026.

1. Instalación de Nginx 1.28.x

Nginx actuará como el servidor web que atiende las solicitudes a Cachet.


sudo apt install -y nginx # Instalamos Nginx
sudo systemctl enable nginx # Habilitamos el inicio automático de Nginx
sudo systemctl start nginx # Iniciamos Nginx
sudo systemctl status nginx # Verificamos el estado de Nginx

Después de la instalación, Nginx debería ser accesible a través de la dirección IP de su VPS (verá la página de bienvenida de Nginx).

2. Instalación de PHP 8.4 y extensiones necesarias

Cachet requiere PHP 8.1 o superior. Instalaremos PHP 8.4, que será actual en 2026, junto con PHP-FPM (FastCGI Process Manager) y todas las extensiones necesarias.


sudo apt install -y software-properties-common # Instalamos utilidades para trabajar con repositorios
sudo add-apt-repository ppa:ondrej/php -y # Añadimos el repositorio Ondrej PPA para versiones actuales de PHP
sudo apt update # Actualizamos la lista de paquetes después de añadir el PPA
sudo apt install -y php8.4 php8.4-fpm php8.4-mysql php8.4-gd php8.4-mbstring php8.4-xml php8.4-bcmath php8.4-curl php8.4-zip php8.4-tokenizer php8.4-json # Instalamos PHP 8.4 y todas las extensiones necesarias
sudo systemctl enable php8.4-fpm # Habilitamos el inicio automático de PHP-FPM
sudo systemctl start php8.4-fpm # Iniciamos PHP-FPM
sudo systemctl status php8.4-fpm # Verificamos el estado de PHP-FPM

El repositorio Ondrej PPA proporciona acceso a las versiones más recientes de PHP en Ubuntu.

3. Instalación de MySQL Server 8.0.x

Cachet utiliza una base de datos para almacenar toda la información sobre componentes, incidentes, suscriptores y configuraciones. Instalaremos MySQL 8.0.


sudo apt install -y mysql-server # Instalamos MySQL Server
sudo systemctl enable mysql # Habilitamos el inicio automático de MySQL
sudo systemctl start mysql # Iniciamos MySQL
sudo systemctl status mysql # Verificamos el estado de MySQL

Después de la instalación, se recomienda ejecutar el script de seguridad de MySQL para establecer la contraseña de root, eliminar usuarios anónimos y la base de datos de prueba.


sudo mysql_secure_installation # Ejecutamos el script de seguridad de MySQL

Siga las instrucciones en pantalla: establezca una contraseña segura para el usuario root, elimine los usuarios anónimos, prohíba el inicio de sesión remoto de root y elimine la base de datos de prueba.

4. Creación de base de datos y usuario para Cachet

Conéctese a MySQL como root y cree una nueva base de datos y un usuario para Cachet con los permisos correspondientes.


sudo mysql -u root -p # Conectarse a MySQL como root (introduzca la contraseña establecida anteriormente)

Dentro de la consola de MySQL, ejecute los siguientes comandos, reemplazando cachet_db, cachet_user y ВАШ_ПАРОЛЬ_ДЛЯ_БД con sus propios valores:


CREATE DATABASE cachet_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # Creamos la base de datos
CREATE USER 'cachet_user'@'localhost' IDENTIFIED BY 'ВАШ_ПАРОЛЬ_ДЛЯ_БД'; # Creamos el usuario
GRANT ALL PRIVILEGES ON cachet_db. TO 'cachet_user'@'localhost'; # Otorgamos permisos sobre la base de datos
FLUSH PRIVILEGES; # Actualizamos los privilegios
EXIT; # Salimos de la consola de MySQL

IMPORTANTE: Utilice una contraseña compleja y única para la base de datos.

5. Instalación de Composer 2.7.x

Composer es un gestor de dependencias para PHP que Cachet utiliza para instalar sus bibliotecas.


curl -sS https://getcomposer.org/installer -o composer-setup.php # Descargamos el script de instalación de Composer
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer # Instalamos Composer globalmente
rm composer-setup.php # Eliminamos el script de instalación
composer --version # Verificamos la versión instalada (debe ser 2.7.x o superior)

6. Descarga e instalación de Cachet

Descargaremos la última versión estable de Cachet desde el repositorio oficial de GitHub.


cd /var/www/ # Nos movemos al directorio para sitios web
sudo git clone https://github.com/CachetHQ/Cachet.git cachet # Clonamos el repositorio de Cachet
cd cachet # Nos movemos al directorio de Cachet
sudo git checkout v2.4.0 # Cambiamos a la última versión estable (actual para 2026, posiblemente v2.5.x)
sudo cp .env.example .env # Creamos el archivo .env a partir del ejemplo
sudo chown -R www-data:www-data /var/www/cachet # Establecemos el propietario del directorio
sudo chmod -R 775 /var/www/cachet/storage # Establecemos los permisos para el directorio storage
sudo chmod -R 775 /var/www/cachet/bootstrap/cache # Establecemos los permisos para el directorio bootstrap/cache

Ahora instalamos todas las dependencias de PHP usando Composer.


sudo composer install --no-dev -o # Instalamos dependencias, optimizamos el autocargador

Generamos la clave de la aplicación Laravel (para cifrar sesiones y otros datos).


sudo php artisan key:generate # Generamos la clave de la aplicación

Ejecutamos las migraciones de la base de datos para crear las tablas necesarias.


sudo php artisan migrate --force # Ejecutamos las migraciones de la base de datos

Al ejecutar las migraciones por primera vez, Cachet puede ofrecerle crear un usuario. Si desea crear un administrador de inmediato, use php artisan app:install. De lo contrario, podrá registrarse a través de la interfaz web después de configurar Nginx.

Configuración

Esquema: Configuración
Esquema: Configuración

Después de instalar todos los componentes, es necesario configurarlos correctamente para que Cachet pueda funcionar de manera adecuada y segura.

1. Configuración del archivo .env

El archivo .env contiene todas las variables de entorno para la aplicación Laravel, incluyendo la configuración de la base de datos, la URL de la aplicación y otros parámetros importantes. Edítelo para que Cachet pueda conectarse a su base de datos y generar enlaces correctamente.


sudo nano /var/www/cachet/.env

Encuentre y modifique las siguientes líneas, utilizando los datos que creó anteriormente:


APP_NAME="Cachet"
APP_ENV=production
APP_KEY=SU_CLAVE_GENERADA # Ya generada con el comando key:generate
APP_DEBUG=false # En producción siempre false
APP_URL=https://status.yourdomain.com # Especifique su dominio con HTTPS

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cachet_db # Nombre de su base de datos
DB_USERNAME=cachet_user # Nombre de usuario de la base de datos
DB_PASSWORD=SU_CONTRASEÑA_DE_BD # Contraseña del usuario de la base de datos

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database # Usamos la base de datos para las colas

Guarde los cambios (Ctrl+O, Enter, Ctrl+X).

2. Configuración de Nginx para Cachet

Crearemos un nuevo archivo de configuración de Nginx para su dominio. Reemplace status.yourdomain.com con su dominio real.


sudo nano /etc/nginx/sites-available/status.yourdomain.com.conf

Pegue el siguiente bloque de configuración:


server {
    listen 80;
    listen [::]:80;
    server_name status.yourdomain.com; # Su dominio

    root /var/www/cachet/public; # Ruta al directorio public de Cachet

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php index.html index.htm;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.4-fpm.sock; # Especificamos el socket de PHP-FPM
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known). {
        deny all;
    }
}

Guarde el archivo, luego cree un enlace simbólico a él en sites-enabled y verifique la configuración de Nginx.


sudo ln -s /etc/nginx/sites-available/status.yourdomain.com.conf /etc/nginx/sites-enabled/ # Creamos el symlink
sudo nginx -t # Verificamos la sintaxis de la configuración de Nginx
sudo systemctl reload nginx # Recargamos Nginx para aplicar los cambios

3. Configuración de HTTPS con Caddy

El uso de HTTPS es obligatorio para cualquier página pública. Caddy es un servidor web moderno que gestiona automáticamente los certificados de Let's Encrypt, lo que lo hace ideal para una configuración rápida de HTTPS. Si prefiere Nginx + Certbot, puede omitir este paso y pasar al siguiente.

3.1. Instalación de Caddy:


sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # Instalamos los paquetes necesarios
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # Añadimos la clave GPG
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list # Añadimos el repositorio de Caddy
sudo apt update # Actualizamos la lista de paquetes
sudo apt install -y caddy # Instalamos Caddy
sudo systemctl stop nginx # Detenemos Nginx, ya que Caddy usará los puertos 80 y 443
sudo systemctl disable nginx # Deshabilitamos el inicio automático de Nginx

3.2. Configuración de Caddyfile:


sudo nano /etc/caddy/Caddyfile

Elimine el contenido existente y pegue lo siguiente, reemplazando status.yourdomain.com con su dominio:


status.yourdomain.com {
    root * /var/www/cachet/public
    file_server

    php_fastcgi unix//run/php/php8.4-fpm.sock

    # Manejo de errores para Laravel
    handle_errors {
        rewrite * /index.php
    }

    # Habilitamos HTTPS automático
    tls {
        dns cloudflare {env.CLOUDFLARE_API_TOKEN} # Ejemplo para Cloudflare DNS, si su dominio está allí.
                                                 # Si usa registros A/AAAA normales, simplemente deje 'tls'
    }

    log {
        output file /var/log/caddy/cachet_access.log
        format json
    }

    # Encabezados de seguridad adicionales
    header {
        X-Frame-Options "SAMEORIGIN"
        X-XSS-Protection "1; mode=block"
        X-Content-Type-Options "nosniff"
        Referrer-Policy "strict-origin-when-cross-origin"
    }
}

Si utiliza Cloudflare para DNS, deberá crear un token de API de Cloudflare y agregarlo a las variables de entorno de Caddy (por ejemplo, a través de systemd override o /etc/environment) o usar tls internal para certificados autofirmados (no recomendado para servicios públicos). Para la mayoría de los usuarios, simplemente tls es suficiente, y Caddy obtendrá el certificado a través de una solicitud HTTP-01.


sudo systemctl restart caddy # Reiniciamos Caddy
sudo systemctl status caddy # Verificamos el estado de Caddy

4. Configuración de HTTPS con Certbot (para Nginx)

Si ha decidido usar Nginx, necesitará Certbot de Let's Encrypt para HTTPS.


sudo snap install core # Asegúrese de que snap esté instalado
sudo snap refresh core # Actualizamos snap
sudo snap install --classic certbot # Instalamos Certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot # Creamos el symlink
sudo certbot --nginx -d status.yourdomain.com # Ejecutamos Certbot para Nginx

Certbot configurará automáticamente Nginx para HTTPS y creará tareas cron para la renovación automática de certificados. Siga las instrucciones en pantalla.

5. Configuración de tareas Cron para Cachet

Cachet requiere tareas cron para ejecutar tareas en segundo plano, como el envío de notificaciones y la actualización de métricas.


sudo crontab -e -u www-data # Abrimos crontab para el usuario www-data (o el usuario bajo el cual se ejecuta PHP-FPM)

Agregue la siguiente línea al final del archivo:


* * * * * php /var/www/cachet/artisan schedule:run >> /dev/null 2>&1

Este comando ejecutará el planificador de Laravel cada minuto.

6. Verificación de la funcionalidad

Ahora su Cachet debería estar accesible en https://status.yourdomain.com. Ábralo en su navegador y complete la instalación creando una cuenta de administrador.

Verifique que todos los servicios estén en ejecución:


sudo systemctl status php8.4-fpm # Verificamos PHP-FPM
sudo systemctl status mysql # Verificamos MySQL
sudo systemctl status nginx # Verificamos Nginx (si lo usa)
sudo systemctl status caddy # Verificamos Caddy (si lo usa)

Use curl para verificar la disponibilidad de la página:


curl -I https://status.yourdomain.com # Verificamos los encabezados HTTP

Debería ver el estado HTTP/2 200 OK y los encabezados que indican una carga de página exitosa.

Copias de seguridad y mantenimiento

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

La copia de seguridad es una parte críticamente importante de cualquier infraestructura. La pérdida de datos puede tener consecuencias catastróficas. Para Cachet, es necesario hacer copias de seguridad regulares de la base de datos y los archivos de la aplicación.

1. Qué respaldar

  • Base de datos: Esto es lo más importante. Contiene todos los componentes, incidentes, métricas, suscriptores y configuraciones de Cachet.
  • Archivos de la aplicación:
    • .env: Archivo de configuración de Cachet con datos sensibles (claves, contraseñas de BD).
    • storage/: Directorio donde Cachet almacena varios archivos, como logs, caché, sesiones y archivos subidos (si los hay).
    • public/uploads/: Si permite la subida de imágenes u otros archivos.
  • Configuraciones del servidor web: Archivos de configuración de Nginx (/etc/nginx/sites-available/status.yourdomain.com.conf) o Caddy (/etc/caddy/Caddyfile).

2. Script simple de copia de seguridad automática

Crearemos un script simple que realizará un volcado de la base de datos y archivará los archivos importantes.


sudo mkdir -p /opt/backups/cachet # Creamos el directorio para las copias de seguridad
sudo chown nombre_de_usuario:nombre_de_usuario /opt/backups/cachet # Damos permisos a su usuario
nano /opt/backups/cachet/backup_cachet.sh

Pegue el siguiente script, reemplazando las variables con sus valores:


#!/bin/bash

# Configuración de la base de datos
DB_NAME="cachet_db"
DB_USER="cachet_user"
DB_PASS="SU_CONTRASEÑA_DE_BD"

# Rutas
BACKUP_DIR="/opt/backups/cachet"
CACHET_APP_DIR="/var/www/cachet"
NGINX_CONF_DIR="/etc/nginx/sites-available" # O /etc/caddy para Caddy

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/cachet_backup_${DATE}.tar.gz"
DB_DUMP_FILE="${BACKUP_DIR}/cachet_db_dump_${DATE}.sql"

# 1. Volcado de la base de datos
echo "Dumping database..."
mysqldump -u "${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" > "${DB_DUMP_FILE}"
if [ $? -eq 0 ]; then
    echo "Volcado de la base de datos exitoso."
else
    echo "¡Fallo en el volcado de la base de datos!"
    exit 1
fi

# 2. Archivando archivos y configuraciones de Cachet
echo "Archiving Cachet files and configs..."
tar -czf "${BACKUP_FILE}" \
    "${CACHET_APP_DIR}/.env" \
    "${CACHET_APP_DIR}/storage" \
    "${CACHET_APP_DIR}/public/uploads" \
    "${NGINX_CONF_DIR}/status.yourdomain.com.conf" \ # O /etc/caddy/Caddyfile
    "${DB_DUMP_FILE}"
if [ $? -eq 0 ]; then
    echo "Archivado de archivos exitoso."
else
    echo "¡Fallo en el archivado de archivos!"
    exit 1
fi

# 3. Eliminando copias de seguridad antiguas (por ejemplo, más de 7 días)
echo "Limpiando copias de seguridad antiguas..."
find "${BACKUP_DIR}" -type f -name "cachet_backup_*.tar.gz" -mtime +7 -delete
find "${BACKUP_DIR}" -type f -name "cachet_db_dump_*.sql" -mtime +7 -delete
echo "Proceso de copia de seguridad finalizado."

Haga el script ejecutable:


sudo chmod +x /opt/backups/cachet/backup_cachet.sh

3. Configuración de Cron para el inicio automático de la copia de seguridad

Añada el script a cron para que se ejecute diariamente. Por ejemplo, a las 03:00 de la madrugada.


sudo crontab -e # Abrimos crontab para su usuario

Añada la siguiente línea:


0 3 * * * /opt/backups/cachet/backup_cachet.sh >> /var/log/cachet_backup.log 2>&1

Este comando ejecutará el script cada día a las 03:00 y registrará la salida en el archivo de log.

4. Dónde almacenar las copias de seguridad

Almacenar las copias de seguridad en el mismo servidor que el servicio principal es extremadamente arriesgado. Si el servidor falla (fallo del disco, incendio en el centro de datos), perderá tanto el servicio como las copias de seguridad. Se recomienda utilizar almacenamiento remoto:

  • Almacenamiento en la nube compatible con S3: Amazon S3, DigitalOcean Spaces, Backblaze B2. Es una forma fiable y relativamente económica de almacenamiento. Utilice utilidades como s3cmd, rclone o awscli para subir las copias de seguridad.
  • VPS separado: Puede configurar un segundo VPS pequeño y usar rsync o scp para copiar las copias de seguridad a él. Esto proporciona distribución geográfica.
  • Almacenamiento local con sincronización: Si tiene un NAS u otro servidor en su red local, puede sincronizar las copias de seguridad allí.

Para mayor fiabilidad, considere el uso de herramientas para copias de seguridad incrementales y deduplicadas, como Restic o BorgBackup. Pueden almacenar eficientemente múltiples versiones de copias de seguridad, ahorrando espacio y proporcionando una recuperación rápida.

5. Actualizaciones: rolling vs maintenance window

Mantener el software actualizado es crítico para la seguridad y estabilidad. Se distinguen dos enfoques principales para las actualizaciones:

  • Rolling updates (actualizaciones continuas): Se aplican a clústeres de servidores, donde la actualización se realiza secuencialmente, sin un tiempo de inactividad general del servicio. Esto no es aplicable para un solo VPS.
  • Maintenance Window (ventana de mantenimiento): Período de tiempo planificado durante el cual el servicio puede no estar disponible o funcionar con limitaciones para realizar actualizaciones. Este es el enfoque más realista para Cachet en un solo VPS.

Recomendaciones para la actualización:

  • Actualización del SO y paquetes: Regularmente (una vez al mes o trimestralmente) ejecute sudo apt update && sudo apt upgrade -y. Planifique esto para el momento de menor carga.
  • Actualización de Cachet: Siga los lanzamientos de Cachet en GitHub. Para la actualización, normalmente se requiere:
    1. Poner Cachet en modo de mantenimiento (php artisan down).
    2. Hacer una copia de seguridad.
    3. Ejecutar git pull o descargar la nueva versión.
    4. Ejecutar composer install --no-dev -o.
    5. Ejecutar las migraciones de la base de datos (php artisan migrate --force).
    6. Limpiar la caché (php artisan cache:clear && php artisan config:clear).
    7. Sacar Cachet del modo de mantenimiento (php artisan up).
  • Monitorización: Después de cualquier actualización, verifique cuidadosamente el funcionamiento de Cachet y todas sus funciones.

Siempre informe a sus usuarios sobre los trabajos planificados a través de la propia página de estado (si aún funciona) o por otros canales de comunicación.

Solución de problemas + Preguntas frecuentes

Durante la instalación y operación de Cachet, pueden surgir varios problemas. Aquí cubriremos escenarios típicos y ofreceremos soluciones, además de responder a preguntas frecuentes.

1. Cachet muestra un error 500 Internal Server Error

Qué verificar: Este es el error más común. Indica un problema del lado del servidor o de PHP.

  1. Registros de PHP-FPM: Verifique los registros de PHP-FPM en busca de errores. Generalmente se encuentran en /var/log/php8.4-fpm.log o /var/log/nginx/error.log (si Nginx no puede comunicarse con PHP-FPM).
  2. Registros de Laravel: Cachet, como aplicación Laravel, registra errores en /var/www/cachet/storage/logs/laravel.log. Esta es la fuente más informativa.
  3. Permisos de acceso: Asegúrese de que el usuario www-data (o el usuario bajo el cual se ejecuta PHP-FPM) tenga permisos de lectura/escritura en los directorios /var/www/cachet/storage y /var/www/cachet/bootstrap/cache.
  4. Archivo .env: Verifique la configuración correcta de la base de datos y APP_KEY en el archivo /var/www/cachet/.env.
  5. Extensiones de PHP: Asegúrese de que todas las extensiones de PHP necesarias estén instaladas y habilitadas.
Cómo solucionarlo: Corrija los errores encontrados en los registros. A menudo, se trata de permisos de acceso incorrectos (sudo chown -R www-data:www-data /var/www/cachet && sudo chmod -R 775 /var/www/cachet/storage /var/www/cachet/bootstrap/cache), datos de conexión a la base de datos incorrectos o extensiones de PHP faltantes (sudo apt install -y php8.4-extension_name).

2. La página no carga, Nginx/Caddy muestra 403 Forbidden

Qué verificar: Esto significa que al servidor web se le deniega el acceso a los archivos.

  1. Permisos de acceso al directorio raíz: Asegúrese de que el directorio /var/www/cachet/public y su contenido pertenezcan a www-data y tengan los permisos correctos.
  2. Configuración de Nginx/Caddy: Verifique que root en su bloque de servidor Nginx o Caddyfile apunte a /var/www/cachet/public.
  3. SELinux/AppArmor: En algunos sistemas, estos módulos de seguridad pueden bloquear el acceso. En Ubuntu, AppArmor se usa por defecto. Verifique los registros (sudo journalctl -xe) en busca de mensajes de bloqueo. Normalmente, Nginx o Caddy no requieren configuraciones adicionales de AppArmor.
Cómo solucionarlo: Establezca los permisos correctos: sudo chown -R www-data:www-data /var/www/cachet y sudo chmod -R 755 /var/www/cachet/public. Verifique la sintaxis de la configuración de Nginx (sudo nginx -t) o Caddy (sudo caddy validate) y reinicie el servicio.

3. Problemas de conexión a la base de datos

Qué verificar: Si Cachet no puede conectarse a MySQL.

  1. Estado de MySQL: Asegúrese de que MySQL esté en ejecución: sudo systemctl status mysql.
  2. Configuración de .env: Verifique DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD en el archivo .env.
  3. Usuario y permisos: Asegúrese de que el usuario de la base de datos cachet_user exista y tenga permisos sobre la base de datos cachet_db. Intente conectarse a MySQL como este usuario desde la línea de comandos: mysql -u cachet_user -p cachet_db.
  4. Firewall: Asegúrese de que MySQL no esté bloqueado por el firewall (por defecto, MySQL solo escucha en localhost, lo cual es correcto).
Cómo solucionarlo: Corrija los errores en .env. Si el usuario o la base de datos no están creados, créelos como se describe en la sección de instalación. Reinicie PHP-FPM después de modificar .env: sudo systemctl restart php8.4-fpm.

4. Cachet no envía notificaciones

Qué verificar: Si los suscriptores no reciben correos electrónicos u otras notificaciones.

  1. Configuración de correo en .env: Verifique la sección MAIL_DRIVER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION, MAIL_FROM_ADDRESS, MAIL_FROM_NAME en .env.
  2. Tarea Cron: Asegúrese de que la tarea cron para el programador de Laravel (php artisan schedule:run) esté configurada y se ejecute cada minuto. Verifique los registros de cron.
  3. Colas: Cachet utiliza colas para enviar notificaciones. Asegúrese de que QUEUE_DRIVER=database en .env y que la tabla jobs en la base de datos esté creada (php artisan migrate).
  4. Registros de Laravel: Verifique laravel.log en busca de errores relacionados con el envío de correo.
Cómo solucionarlo: Ajuste la configuración de correo. Asegúrese de que su servidor de correo sea accesible desde el VPS. Verifique que la tarea cron se ejecute con el usuario correcto (www-data) y tenga acceso al ejecutable de PHP y al script artisan.

5. ¿Qué configuración mínima de VPS es adecuada?

Para una instalación mínima de Cachet, capaz de servir un proyecto pequeño o un entorno de prueba, un VPS con 1 vCPU, 2 GB de RAM, 40 GB SSD es suficiente. Esta configuración bastará para el sistema operativo, el servidor web (Nginx o Caddy), PHP-FPM y MySQL. Sin embargo, para un funcionamiento más estable y la posibilidad de escalar en el futuro, se recomienda utilizar 2 vCPU, 4 GB de RAM, 80 GB NVMe SSD, como se describe en la sección "Qué configuración de VPS se necesita para esta tarea".

6. ¿Qué elegir — VPS o dedicado para esta tarea?

Para el despliegue de una página de estado pública de Cachet, en la gran mayoría de los casos, un VPS es la opción óptima. Ofrece suficiente rendimiento, flexibilidad y rentabilidad. Los servidores dedicados son excesivos para Cachet, a menos que planee alojar muchos otros servicios de alta carga en él, tenga requisitos estrictos de aislamiento físico o espere un tráfico extremadamente alto (decenas de miles de usuarios simultáneos durante fallos globales). La mayoría de los proyectos utilizan Cachet con éxito en un VPS de configuración media.

7. ¿Cómo actualizar Cachet a una nueva versión?

El proceso de actualización de Cachet incluye varios pasos. Primero, siempre realice una copia de seguridad completa de la base de datos y los archivos de la aplicación. Luego, ponga Cachet en modo de mantenimiento usando el comando php artisan down. Después, vaya al directorio de Cachet (/var/www/cachet), obtenga la última versión del código (por ejemplo, git pull o descargue un nuevo archivo). Actualice las dependencias de Composer con el comando composer install --no-dev -o. Ejecute las migraciones de la base de datos con el comando php artisan migrate --force, y también limpie la caché: php artisan cache:clear && php artisan config:clear. Finalmente, saque Cachet del modo de mantenimiento con el comando php artisan up y verifique su funcionamiento.

8. ¿Cómo configurar métricas y gráficos en Cachet?

Cachet permite añadir métricas para rastrear varios parámetros de servicios, como el tiempo de respuesta, el uso de CPU o la memoria. Para ello, después de iniciar sesión en el panel de administrador, vaya a la sección "Métricas" (Metrics) y cree una nueva métrica. Puede introducir datos manualmente o usar la API de Cachet para enviar datos automáticamente desde sus sistemas de monitoreo existentes (por ejemplo, Prometheus, Zabbix, Grafana). Cachet proporciona un token de API en la configuración que se puede usar para solicitudes POST con datos de métricas. Por ejemplo, puede escribir un pequeño script que analice los datos de su sistema de monitoreo y los envíe a Cachet según un horario.

Conclusiones y próximos pasos

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

¡Felicidades! Ha desplegado y configurado Cachet con éxito en su VPS, creando una página de estado pública fiable y profesional para sus servicios. Ahora puede comunicarse eficazmente con su audiencia, aumentando la transparencia y la confianza en caso de incidentes o trabajos planificados. Ha obtenido control total sobre su página de estado, sus datos y sus opciones de personalización.

Los siguientes pasos para optimizar y ampliar la funcionalidad de su página de estado incluyen:

  • Integración con sistemas de monitoreo: Utilice la API de Cachet para publicar incidentes automáticamente y actualizar métricas desde sus sistemas de monitoreo existentes, como Prometheus, Zabbix o Grafana. Esto permitirá automatizar el proceso de información y reducir el tiempo de reacción.
  • Configuración de notificaciones: Configure varios canales de notificación (Slack, Telegram, Webhooks) para su equipo, con el fin de recibir alertas operativas sobre nuevos incidentes o cambios de estado.
  • Personalización de la apariencia: Explore las opciones de personalización del tema de Cachet para que la página de estado se ajuste a la marca de su proyecto. Puede cambiar colores, fuentes y añadir su logotipo.
  • Auditoría y mantenimiento regular: Mantenga su VPS y Cachet actualizados, aplicando regularmente actualizaciones de seguridad y realizando copias de seguridad. Esto garantizará la estabilidad y seguridad a largo plazo de su página de estado.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

despliegue de Cachet en VPS para crear página pública de estado de servicios
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.