Українська
Почати
← Усі шаблони

Healthchecks на Pethost в один клік

Моніторинг cron-задач і фонових завдань: кожне завдання пінгує свій URL, і ви дізнаєтеся, коли пінг запізнюється

Що відбудеться

  1. Ви входите в Pethost або створюєте акаунт — з ключем доступу, через GitHub або Google.
  2. Машини ще немає? Ви обираєте тариф, і ми готуємо машину для вас. Посилання чекає у вашому браузері, доки машина не буде готова.
  3. Вікно «Новий проєкт» відкривається на цьому застосунку. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: Електронна пошта, Пароль адміністратора.
  4. За хвилину-дві застосунок працює за власною адресою з HTTPS. Його секрети створюються випадково, а дані потрапляють у щонічний бекап.
  5. Це проєкт як будь-який інший: його compose.yaml, .env, логи й термінал — у панелі, а ваш агент може його змінити, відкотити або відновити.

Перші кроки

Увійдіть із поштою й паролем адміністратора, які ви вказали; реєстрацію закрито, тож більше ніхто акаунт не отримає. Додайте check і нехай завдання викликає його URL пінгу. Сповіщення йдуть в інтеграції, додані в Integrations: для пошти спершу потрібен SMTP-сервер.

Що запускається

Шаблон — це цей compose.yaml і змінні, які він записує в .env проєкту. Pethost запускає файл так, як його написано.

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: