Skip to content

FA Notifications

Arian Omrani edited this page Oct 11, 2026 · 7 revisions

اعلان‌ها

زبان: English · فارسی

pulsecheck برای هر آدرس، دستور shoutrrr send --url <url> --message <text> را اجرا می‌کند. اینکه shoutrrr چطور اجرا شود را shoutrrr_bin تعیین می‌کند:

مقدار رفتار
auto (پیش‌فرض) اگر Docker کار کند (docker info موفق باشد) از docker run --rm nickfedor/shoutrrr:<version> send … استفاده می‌کند، وگرنه از فایل اجرایی shoutrrr در PATH
docker همیشه image داکر
یک مسیر، مثل /usr/local/bin/shoutrrr همیشه همان فایل اجرایی

shoutrrr_image (پیش‌فرض nickfedor/shoutrrr:0.21.2) image را مشخص می‌کند و اولین ارسال آن را دانلود می‌کند. اگر Docker ندارید، فایل اجرایی را از صفحه‌ی releases نصب کنید (pulsecheck init این کار را هم برایتان انجام می‌دهد):

curl -fsSL https://github.com/nicholas-fedor/shoutrrr/releases/download/v0.21.2/shoutrrr_linux_amd64_0.21.2.tar.gz | sudo tar xz -C /usr/local/bin shoutrrr
shoutrrr --version

برای سیستم‌های دیگر فایل مناسب (linux_arm64v8، macOS_arm64v8 و …) را از همان release بردارید.

نمونه آدرس‌ها (با shoutrrr نسخه‌ی 0.21.2 بررسی شده‌اند)

سرویس آدرس
تلگرام telegram://BOT_TOKEN@telegram?chats=@channel (یا شناسه‌ی عددی چت)
دیسکورد discord://TOKEN@WEBHOOK_ID
ntfy ntfy://ntfy.sh/your-topic
ایمیل smtp://user:pass@mail.example.com:587/?from=a@example.com&to=b@example.com
اسلک (بات) slack://xoxb:BOT_TOKEN@CHANNEL_ID
وب‌هوک عمومی generic://example.com/hook

سرویس‌های بسیار بیشتری هست. این دستورها کمک می‌کنند:

shoutrrr docs                   # فهرست سرویس‌ها
shoutrrr docs telegram          # گزینه‌های یک سرویس
shoutrrr verify --url "<url>"   # درستی آدرس را بدون ارسال بررسی می‌کند
shoutrrr generate telegram      # آدرس را به‌صورت پرسش و پاسخ می‌سازد

سرورلس (Vercel و Cloudflare Workers)

در این دو محیط shoutrrr اجرا نمی‌شود، برای همین pulsecheck هشدار را خودش با یک درخواست HTTPS می‌فرستد. قالب آدرس‌ها همان قالب shoutrrr است و این سرویس‌ها پشتیبانی می‌شوند (همه‌ی نمونه‌های زیر با shoutrrr verify بررسی شده‌اند):

سرویس آدرس
تلگرام telegram://BOT_TOKEN@telegram?chats=@channel
دیسکورد discord://TOKEN@WEBHOOK_ID
وب‌هوک اسلک slack://hook:T0000000-B0000000-XXXXXXXXXXXXXXXX@webhook
بات اسلک slack://xoxb:123456789012-1234567890123-TOKEN@CHANNEL_ID
ntfy ntfy://ntfy.sh/topic (همچنین ntfy://user:pass@host/topic و ?scheme=http)
Gotify gotify://host/path/TOKEN (?disabletls=yes)
Pushover pushover://:API_TOKEN@USER_KEY?devices=phone
Mattermost mattermost://bot@host/HOOK_TOKEN/channel
Rocket.Chat rocketchat://bot@host/TOKEN_A/TOKEN_B/channel
Google Chat googlechat://chat.googleapis.com/v1/spaces/ID/messages?key=K&token=T
Zulip zulip://bot%40host:KEY@host/?stream=alerts&topic=pulsecheck
Bark bark://:DEVICE_KEY@host/
هر وب‌هوک generic://host/path (بدنه‌ی JSON به شکل {"message": "..."}؛ با ?disabletls=yes و ?messagekey=text)

برای هر آدرس دیگری (ایمیل، Matrix، Teams و …) پیام notify failed: ... not supported here چاپ می‌شود و چیزی ارسال نمی‌شود. روی Vercel این‌ها هم کار می‌کنند، چون shoutrrr واقعی در صورت نیاز دانلود می‌شود. روی Cloudflare باید حالت CLI/CI/cron را به کار ببرید، یا generic:// را به وب‌هوکی وصل کنید که پیام را به مقصد برساند. جزئیات در سرورلس است.

آدرس‌ها توکن دارند. توکن را در متغیر محیطی (${TG_TOKEN}) یا secret سیستم CI نگه دارید و داخل فایل ننویسید.

مسیردهی

notify:                      # به‌طور پیش‌فرض همه‌ی هشدارها به اینجا می‌روند
  urls: ["ntfy://ntfy.sh/team-alerts"]
  events: [down, up]
sites:
  - name: payments
    url: https://pay.example.com
    notify:                  # هشدارهای این سایت فقط به کانال آنکال می‌روند، از جمله degraded
      urls: ["telegram://${TG_TOKEN}@telegram?chats=${ONCALL}"]
      events: [down, up, degraded]

هر تغییری را با pulsecheck test-notify امتحان کنید؛ این دستور هم آدرس‌های سراسری و هم آدرس‌های هر سایت را می‌آزماید.

متن پیام‌ها

متن‌های پیش‌فرض داخلی‌اند و با messages: در YAML عوض می‌شوند (کلیدهای down، reminder، degraded، up، ssl_warn، test). جزئیات در مرجع YAML است.

Clone this wiki locally