Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions mission-control/docs/guide/notifications/channels/bark.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
sidebar_custom_props:
icon: bark
---

# Bark

Bark is a push notification service for iOS devices.

:::info URL Format
bark://**`devicekey`**@**`host`**
:::

import Fields from '@site/src/components/Fields';

<Fields rows={[
{
field: "devicekey",
description: "The authentication key for your Bark app installation",
required: true,
scheme: "string",
},
{
field: "host",
description: "Bark server hostname",
default: "api.day.app",
scheme: "string",
},
{
field: "title",
description: "The title of your notification",
scheme: "string",
},
{
field: "body",
description: "The message or body content",
scheme: "string",
},
{
field: "group",
description: "Bark notification group name",
scheme: "string",
},
{
field: "icon",
description: "URL to an image to show as an icon",
scheme: "string",
},
{
field: "url",
description: "A URL that opens when the notification is tapped",
scheme: "string",
},
]} />

## Example

```uri
bark://DEVICEKEY@api.day.app/?title=Alert&body=Check+failed&group=monitoring
```
67 changes: 67 additions & 0 deletions mission-control/docs/guide/notifications/channels/googlechat.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
sidebar_custom_props:
icon: google-chat
---

# Google Chat

:::info URL Format
googlechat://chat.googleapis.com/v1/spaces/**`FOO`**/messages?key=**`bar`**&token=**`baz`**
:::

import Fields from '@site/src/components/Fields';

<Fields rows={[
{
field: "space",
description: "The unique identifier for your Google Chat space (room)",
required: true,
scheme: "string",
},
{
field: "key",
description: "Security parameter from webhook configuration",
required: true,
scheme: "string",
},
{
field: "token",
description: "Security parameter from webhook configuration",
required: true,
scheme: "string",
},
]} />

## Setting up a webhook

To use Google Chat notifications, you need to create an Incoming Webhook:

1. Open your Google Chat room
2. Go to the room's menu and select **Configure webhooks**
3. Name the webhook and save it
4. Copy the generated incoming webhook URL

## Extracting the service URL

The webhook URL from Google Chat looks like:

```
https://chat.googleapis.com/v1/spaces/<space-id>/messages?key=<key>&token=<token>
```

For Mission Control, convert it to the Shoutrrr format by replacing `https` with `googlechat`:

```
googlechat://chat.googleapis.com/v1/spaces/<space-id>/messages?key=<key>&token=<token>
```

## Example

```uri
googlechat://chat.googleapis.com/v1/spaces/AAAADdBz1Mk/messages?key=AIzaSyDd-example&token=aX6LdZNnexample
```

![Google Chat Webhook Setup 1](googlechat/hangouts-1.png)
![Google Chat Webhook Setup 2](googlechat/hangouts-2.png)
![Google Chat Webhook Setup 3](googlechat/hangouts-3.png)
![Google Chat Webhook Setup 4](googlechat/hangouts-4.png)
80 changes: 80 additions & 0 deletions mission-control/docs/guide/notifications/channels/gotify.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
sidebar_custom_props:
icon: gotify
---

# Gotify

Gotify is a self-hosted push notification service.

:::info URL Format
gotify://**`host`**/**`token`**
:::

import Fields from '@site/src/components/Fields';

<Fields rows={[
{
field: "host",
description: "The Gotify server hostname, optionally with a port",
required: true,
scheme: "string",
},
{
field: "token",
description: "The application token generated in Gotify for sending notifications",
required: true,
scheme: "string",
},
{
field: "port",
description: "The port for your Gotify server",
default: "80 (HTTP) or 443 (HTTPS)",
scheme: "int",
},
{
field: "path",
description: "Any subpath if your Gotify is running under a URL base path",
scheme: "string",
},
{
field: "title",
description: "Title of your notification",
default: "Shoutrrr notification",
scheme: "string",
},
{
field: "priority",
description: "Notification priority",
default: "0",
scheme: "int",
},
{
field: "DisableTLS",
description: "Disable TLS verification (useful for self-signed certificates)",
default: "false",
scheme: "bool",
},
]} />

## Examples

Standard usage:

```uri
gotify://gotify.example.com:443/AzyoeNS.D4iJLVa/?title=Alert&priority=1
```

With a base path (behind reverse proxy):

```uri
gotify://example.com:443/path/to/gotify/AzyoeNS.D4iJLVa/?title=Update&priority=2
```

## Creating an application token

1. Log in to your Gotify server
2. Navigate to **Apps**
3. Click **Create Application**
4. Give it a name and save
5. Copy the generated application token
6 changes: 5 additions & 1 deletion mission-control/docs/guide/notifications/channels/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ sidebar_custom_props:
icon: octicon:broadcast-24
---

:::tip Shoutrr
:::tip Shoutrrr
Notifications in Mission Control are powered by [github.com/containrrr/shoutrrr](https://github.com/containrrr/shoutrrr)
:::

Expand All @@ -17,9 +17,13 @@ When creating a notification you can either specify a connection or a custom URL

| Service | URL format |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| [Bark](./bark) | _bark://**`devicekey`**@**`host`**_ |
| [Discord](./discord) | _discord://**`token`**@**`id`**_ |
| [Email](./email) | _smtp://**`username`**:**`password`**@**`host`**:**`port`**/?from=**`fromAddress`**&to=**`recipient1`**[,__`recipient2`__,...]_ |
| [Google Chat](./googlechat) | _googlechat://chat.googleapis.com/v1/spaces/**`FOO`**/messages?key=**`bar`**&token=**`baz`**_ |
| [Gotify](./gotify) | _gotify://**`host`**/**`token`**_ |
| [IFTTT](./ifttt) | _ifttt://**`key`**/?events=**`event1`**[,__`event2`__,...]&value1=**`value1`**&value2=**`value2`**&value3=**`value3`**_ |
| [Join](./join) | _join://shoutrrr:**`api-key`**@join/?devices=**`device1`**[,__`device2`__,...]_ |
| [Mattermost](./mattermost) | _mattermost://[__`username`__@]**`mattermost-host`**/**`token`**[/__`channel`__]_ |
| [Matrix](./matrix) | _matrix://**`username`**:**`password`**@**`host`**:**`port`**/[?rooms=**`!roomID1`**[,__`roomAlias2`__]]_ |
| [Ntfy](./ntfy) | _ntfy://**`username`**:**`password`**@ntfy.sh/**`topic`**_ |
Expand Down
52 changes: 52 additions & 0 deletions mission-control/docs/guide/notifications/channels/join.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
sidebar_custom_props:
icon: join
---

# Join

Join is a notification service that syncs notifications across your devices.

:::info URL Format
join://shoutrrr:**`api-key`**@join/?devices=**`device1`**[,**`device2`**,...]
:::

import Fields from '@site/src/components/Fields';

<Fields rows={[
{
field: "api-key",
description: "Your Join API key",
required: true,
scheme: "string",
},
{
field: "devices",
description: "Comma-separated list of device IDs to send the notification to",
required: true,
scheme: "string",
},
{
field: "icon",
description: "URL of an icon to display with the notification",
scheme: "string",
},
{
field: "title",
description: "Title for the notification",
scheme: "string",
},
]} />

## Example

```uri
join://shoutrrr:YOUR_API_KEY@join/?devices=deviceA,deviceB&icon=https://link.to/icon.png&title=Alert
```

## Getting your API key and device IDs

1. Visit [Join by joaoapps](https://joaoapps.com/join/)
2. Sign in with your Google account
3. Your API key is displayed in your account settings
4. Device IDs are shown for each registered device
3 changes: 3 additions & 0 deletions mission-control/docs/guide/notifications/events/configs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Configs emit events when their health changes or when they are created, modified

- `config.healthy`
- `config.unhealthy`
- `config.degraded`
- `config.warning`
- `config.unknown`

Expand Down Expand Up @@ -56,6 +57,7 @@ The default notification template for health events is:

- `config.created`
- `config.updated`
- `config.changed`
- `config.deleted`

```yaml title="ec2-instance-updates.yaml"
Expand All @@ -68,6 +70,7 @@ spec:
events:
- config.created
- config.updated
- config.changed
- config.deleted
filter: config.type == 'AWS::EC2::Instance'
to:
Expand Down
43 changes: 22 additions & 21 deletions mission-control/docs/reference/notifications/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,26 @@ sidebar_custom_props:

Mission control uses [Shoutrrr](https://github.com/containrrr/shoutrrr/) under the hood to deliver notifications. Most of the services in the Shoutrrr are supported. Here's the complete list:

| Services | URL Format |
| ----------- | ---------------------------------------------------------------------------------------- |
| Bark | `bark://devicekey@host` |
| Discord | `discord://token@id ` |
| Email | `smtp://username:password@host:port/?from=fromAddress&to=recipient1[,recipient2,...]` |
| Gotify | `gotify://gotify-host/token` |
| Google Chat | `googlechat://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz ` |
| IFTTT | `ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3 ` |
| Join | `join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]` |
| Mattermost | `mattermost://[username@]mattermost-host/token[/channel]` |
| Matrix | `matrix://username:password@host:port/[?rooms=!roomID1[,roomAlias2]] ` |
| Ntfy | `ntfy://username:password@ntfy.sh/topic` |
| OpsGenie | `opsgenie://host/token?responders=responder1[,responder2] ` |
| Pushbullet | `pushbullet://api-token[/device/#channel/email]` |
| Pushover | `pushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...]` |
| Rocketchat | `rocketchat://[username@]rocketchat-host/token[/channel\| @recipient]` |
| Slack | `slack://[botname@]token-a/token-b/token-c` |
| Teams | `teams://group@tenant/altId/groupOwner?host=organization.webhook.office.com` |
| Telegram | `telegram://token@telegram?chats=@channel-1[,chat-id-1,...]` |
| Zulip Chat | `zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name` |
| Services | URL Format |
| -------------- | ---------------------------------------------------------------------------------------- |
| Bark | `bark://devicekey@host` |
| Discord | `discord://token@id ` |
| Email | `smtp://username:password@host:port/?from=fromAddress&to=recipient1[,recipient2,...]` |
| Generic | Sends notifications directly to a webhook |
| Gotify | `gotify://gotify-host/token` |
| Google Chat | `googlechat://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz ` |
| IFTTT | `ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3 ` |
| Join | `join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]` |
| Mattermost | `mattermost://[username@]mattermost-host/token[/channel]` |
| Matrix | `matrix://username:password@host:port/[?rooms=!roomID1[,roomAlias2]] ` |
| Ntfy | `ntfy://username:password@ntfy.sh/topic` |
| OpsGenie | `opsgenie://host/token?responders=responder1[,responder2] ` |
| Pushbullet | `pushbullet://api-token[/device/#channel/email]` |
| Pushover | `pushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...]` |
| Rocketchat | `rocketchat://[username@]rocketchat-host/token[/channel\| @recipient]` |
| Slack | `slack://[botname@]token-a/token-b/token-c` |
| Teams | `teams://group@tenant/altId/groupOwner?host=organization.webhook.office.com` |
| Telegram | `telegram://token@telegram?chats=@channel-1[,chat-id-1,...]` |
| Zulip Chat | `zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name` |

For more details please visit: [https://containrrr.dev/shoutrrr/0.8/services/overview/](https://containrrr.dev/shoutrrr/0.7/services/overview/)
For more details please visit: [https://containrrr.dev/shoutrrr/v0.8/services/overview/](https://containrrr.dev/shoutrrr/v0.8/services/overview/)
Loading