Healthchecks mit einem Klick auf Pethost deployen
Überwachung für Cronjobs und Hintergrundaufgaben: Jeder Job pingt seine URL, und du erfährst es, wenn ein Ping ausbleibt
Was passiert
- Du meldest dich bei Pethost an oder legst ein Konto an, mit Passkey, GitHub oder Google.
- Noch keine Maschine? Du wählst einen Tarif, und wir bereiten eine für dich vor. Der Link wartet in deinem Browser, bis sie bereit ist.
- „Neues Projekt“ öffnet sich bei der App. Du füllst aus, was sie braucht, und klickst auf „Projekt erstellen“: E-Mail, Admin-Passwort.
- In ein, zwei Minuten läuft die App unter eigener Adresse mit HTTPS. Ihre Secrets werden zufällig für sie erzeugt, und ihre Daten sind im nächtlichen Backup.
- Sie ist ein Projekt wie jedes andere: compose.yaml, .env, Logs und ein Terminal findest du im Panel, und dein Agent kann sie ändern, zurückrollen oder wiederherstellen.
Erste Schritte
Melde dich mit der angegebenen E-Mail und dem Admin-Passwort an; die Registrierung ist geschlossen, sodass niemand sonst ein Konto bekommt. Lege einen Check an und lass deinen Job seine Ping-URL aufrufen. Alarme gehen an die Integrationen, die du unter Integrations hinzufügst: E-Mail braucht zuerst einen SMTP-Server.
Was läuft
Die Vorlage ist diese compose.yaml und die Variablen, die sie in die .env des Projekts schreibt. Pethost führt die Datei so aus, wie sie geschrieben ist.
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: