Español
Empezar
← Todas las plantillas

Despliega Healthchecks en Pethost con un clic

Monitorización de tareas cron y en segundo plano: cada tarea hace ping a su URL y te enteras cuando un ping se retrasa

Qué pasa

  1. Inicias sesión en Pethost o creas una cuenta, con una passkey, GitHub o Google.
  2. ¿Aún no tienes máquina? Eliges un plan y te preparamos una. El enlace espera en tu navegador hasta que esté lista.
  3. Nuevo proyecto se abre en la app. Rellenas lo que pide y haces clic en Crear proyecto: Correo electrónico, Contraseña de administrador.
  4. En un par de minutos la app está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar para ella, y sus datos entran en el backup de cada noche.
  5. Es un proyecto como cualquier otro: su compose.yaml, su .env, sus logs y un terminal están en el panel, y tu agente puede cambiarlo, volver a una versión anterior o restaurarlo.

Primeros pasos

Entra con el correo y la contraseña de administrador que indicaste; el registro está cerrado, así que nadie más obtiene una cuenta. Añade un check y haz que tu tarea llame a su URL de ping. Las alertas van a las integraciones que añadas en Integrations: el correo necesita antes un servidor SMTP.

Qué ejecuta

La plantilla es este compose.yaml y las variables que escribe en el .env del proyecto. Pethost ejecuta el archivo tal como está escrito.

services:
  healthchecks:
    image: healthchecks/healthchecks:v4.4
    restart: unless-stopped
    environment:
      DB: postgres
      DB_HOST: postgres
      DB_NAME: hc
      DB_USER: hc
      DB_PASSWORD: ${POSTGRES_PASSWORD}
      SECRET_KEY: ${SECRET_KEY}
      SITE_ROOT: ${URL}
      PING_ENDPOINT: ${URL}/ping/
      SITE_NAME: Healthchecks
      DEBUG: "False"
      # Only the account below signs in: nobody signs up by the address.
      REGISTRATION_OPEN: "False"
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    # The account is made before the server answers, the first time only.
    command:
      - sh
      - -c
      - |
        ./manage.py migrate || exit 1
        ./manage.py shell -c '
        import os, sys
        from django.contrib.auth.models import User
        sys.exit(0 if User.objects.filter(email=os.environ["ADMIN_EMAIL"].lower()).exists() else 1)
        ' || ./manage.py createsuperuser --email "$$ADMIN_EMAIL" --password "$$ADMIN_PASSWORD" || exit 1
        exec uwsgi /opt/healthchecks/docker/uwsgi.ini
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: hc
      POSTGRES_USER: hc
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U hc -d hc"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 30s

volumes:
  db: