Перейти до вмісту
На сайт

Живе демо

Живе демо: кнопка Спробувати живе демо, яка будь-кому відкриває справжню панель керування з входом у демонстраційну організацію. railhook.io його використовує; на власному сервері воно є, лише якщо його ввімкнути.

Демо є однією організацією, Acme Inc., з одним проєктом, Acme Shop:

  • чотири ендпоінти з підписками, один із яких час від часу збоїть, тож є доставки з повторними спробами і запис у Недоставлених повідомленнях;
  • джерело Stripe і джерело GitHub, чиї перевірені вхідні події переслано в їхні призначення;
  • приблизно півтори доби трафіку, тож панель і аналітика завжди показують останні 24 години.

Відвідувач може відкрити й переглянути кожен екран і нічого не може змінити.

Чому воно типово вимкнене

Section titled “Чому воно типово вимкнене”

Демо видає сесію кожному, хто попросить. На розгортанні для вашої команди це анонімний вхід без потреби, тому з DEMO_ENABLED=false (типово):

  • демонстраційна організація не створюється, а залишена раніше видаляється;
  • кнопки на головній сторінці, на /pricing і в меню Розробникам приховані;
  • ендпоінт сесії, POST /api/v1/public/demo/session, відповідає 404.
  1. Задайте змінну у .env у каталозі встановлення; якщо рядка ще немає, додайте його:

    .env
    DEMO_ENABLED=true
  2. Перестворіть контейнери, щоб її прочитали і API, і панель:

    Terminal window
    ./railhook start

    API створює демонстраційну організацію під час запуску. Панель читає ту саму змінну для кнопок демо.

  3. Відкрийте /demo на адресі вашого Railhook. Сторінка відкриє сесію й перейде до панелі.

У Kubernetes задайте обидві половини у значеннях Helm:

values.yaml
api:
env:
DEMO_ENABLED: "true"
ui:
publicDemo: true

Чому демо лише для читання

Section titled “Чому демо лише для читання”

Демо-сесія є токеном доступу до демонстраційної організації з роллю Спостерігач, і нічим більше:

  • Кожну зміну відхиляє сервер, а не лише панель. Будь-який метод, окрім GET, HEAD чи OPTIONS, отримує 403 на кожному ендпоінті (API-ключі, учасники, налаштування, тарифи, відтворення, надсилання подій, сесії порталу, підключені застосунки, власний профіль відвідувача). Експорт теж заборонено, хоч це й читання. Винятки нічого в демо не змінюють: вихід, відкриття нової демо-сесії, а також контактна форма й тестер вебхуків на публічному сайті.
  • Її не можна подовжити. Refresh-токена немає. Вона діє DEMO_SESSION_TTL_MINUTES (типово 30), потім відвідувач повертається на головну сторінку й може відкрити нову.
  • Вона працює лише в API. Демо-токен не приймається ніде поза /api/.
  • Відкриття обмежено: десять сесій на хвилину з однієї адреси, за CAPTCHA реєстрації, якщо її налаштовано (CAPTCHA_SECRET_KEY і CAPTCHA_SITE_KEY).
  • Нічого ніколи не доставляється. Усі URL ведуть на зарезервовані хости .example, усі доставки й пересилання вже завершені, а джерела демо відхиляють вхідні вебхуки. Воркер ніколи не має роботи з демо.

Як воно лишається актуальним

Section titled “Як воно лишається актуальним”

API переписує історію демо кожні DEMO_REFRESH_INTERVAL_MINUTES (типово 60), тож вона завжди доходить до поточного моменту. Організацію, ендпоінти й джерела створено один раз; замінюються лише події, доставки й вхідні події.

Огляд адміністратора платформи не враховує організацію, обліковий запис і трафік демо, а його недоставлені повідомлення не спричиняють сповіщення webhook_dlq_depth.

Задайте DEMO_ENABLED=false і виконайте ./railhook start. Нову сесію відкрити не можна, кнопки зникають; відкрита сесія діє до кінця строку, але демо в ній порожнє.

Під час запуску API видаляє демо: організацію, обліковий запис, проєкт, ендпоінти, джерела й усю історію. Видаляються лише рядки з ідентифікаторами демо, яких не може мати жодна інша організація, а в журнал API пишеться один рядок про видалене. Наступні запуски нічого не роблять. Повторне ввімкнення створює демо заново.

Усі три змінні є в довіднику конфігурації, ендпоінт сесії в довіднику API.