From ff2f78f7f82c1f8bc0d74e1a3dc1563e25a63ee4 Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Thu, 29 Aug 2024 14:34:35 +0200 Subject: [PATCH 1/8] WIP Signed-off-by: Danny Kopping --- codersdk/deployment.go | 1 + docs/admin/notifications.md | 251 ++++++++++++++++++ .../images/admin/notification-admin-prefs.png | Bin 0 -> 67374 bytes docs/images/admin/notification-states.png | Bin 0 -> 36747 bytes docs/manifest.json | 6 + 5 files changed, 258 insertions(+) create mode 100644 docs/admin/notifications.md create mode 100644 docs/images/admin/notification-admin-prefs.png create mode 100644 docs/images/admin/notification-states.png diff --git a/codersdk/deployment.go b/codersdk/deployment.go index d7c1ddce4fec9..47595b08e910d 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2419,6 +2419,7 @@ Write out the current server config as YAML to stdout.`, Description: "Password to use with PLAIN/LOGIN authentication.", Flag: "notifications-email-auth-password", Env: "CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD", + Annotations: serpent.Annotations{}.Mark(annotationSecretKey, "true"), Value: &c.Notifications.SMTP.Auth.Password, Group: &deploymentGroupNotificationsEmailAuth, YAML: "password", diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md new file mode 100644 index 0000000000000..985f5252d6477 --- /dev/null +++ b/docs/admin/notifications.md @@ -0,0 +1,251 @@ +# Notifications + +Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user +being created. + +**Notifications are currently an experimental feature.** + +## Enable experiment + +In order to activate the notifications feature, you'll need to enable the `notifications` experiment. + +```bash +# Using the CLI flag +$ coder server --experiments=notifications + +# Alternatively, using the `CODER_EXPERIMENTS` environment variable +$ CODER_EXPERIMENTS=notifications coder server +``` + +More information on experiments can be found [here](/docs/contributing/feature-stages#experimental-features). + +## Event Types + +Notifications are sent in response to internal events, to alert the affected user(s) of this event. Currently we support +the following list of events: + +### Workspace Events + +_These notifications are sent to the workspace owner._ + +- Workspace Deleted +- Workspace Manual Build Failure +- Workspace Automatic Build Failure +- Workspace Automatically Updated +- Workspace Dormant +- Workspace Marked For Deletion + +### User Events + +_These notifications are sent to users with **owner** and **user admin** roles._ + +- User Account Created +- User Account Deleted +- User Account Suspended +- User Account Activated +- _(coming soon) User Password Reset_ +- _(coming soon) User Email Verification_ + +_These notifications are sent to the user themselves._ + +- User Account Suspended +- User Account Activated + +### Template Events + +_These notifications are sent to users with **template admin** roles._ + +- Template Deleted + +## Configuration + +| Required | CLI | Env | Type | Description | Default | +|:--------:|-------------------------------------|-----------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------|---------| +| ✔️ | `--notifications-dispatch-timeout` | `CODER_NOTIFICATIONS_DISPATCH_TIMEOUT` | `duration` | How long to wait while a notification is being sent before giving up. | 1m | +| ✔️ | `--notifications-method` | `CODER_NOTIFICATIONS_METHOD` | `string` | Which delivery method to use (available options: 'smtp', 'webhook'). See [Delivery Methods](#delivery-methods) below. | smtp | +| -️ | `--notifications-max-send-attempts` | `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` | `int` | The upper limit of attempts to send a notification. | 5 | + +## Delivery Methods + +Notifications can currently be delivery by either SMTP or webhook. Each message can only be delivered to one method, and +this method is configured globally +with [`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) +(default: `smtp`). + +Enterprise customers can configured which method to use for each of the supported [Events](#events); see +the [Preferences](#preferences) +section below for more details. + +## SMTP + +Use the `smtp` method to deliver notifications by email to your users. Coder does not ship with an SMTP server, so you +will need to configure Coder to use an existing one. + +**Server Settings:** + +| Required | CLI | Env | Type | Description | Default | +|:--------:|-----------------------------------|---------------------------------------|-------------|-------------------------------------------|---------------| +| ✔️ | `--notifications-email-from` | `CODER_NOTIFICATIONS_EMAIL_FROM` | `string` | The sender's address to use. | | +| ✔️ | `--notifications-email-smarthost` | `CODER_NOTIFICATIONS_EMAIL_SMARTHOST` | `host:port` | The SMTP relay to send messages through. | localhost:587 | +| -️ | `--notifications-email-hello` | `CODER_NOTIFICATIONS_EMAIL_HELLO` | `string` | The hostname identifying the SMTP server. | localhost | + +**Authentication Settings:** + +| Required | CLI | Env | Type | Description | +|:--------:|--------------------------------------------|------------------------------------------------|----------|---------------------------------------------------------------------------| +| - | `--notifications-email-auth-username` | `CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME` | `string` | Username to use with PLAIN/LOGIN authentication. | +| - | `--notifications-email-auth-password` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD` | `string` | Password to use with PLAIN/LOGIN authentication. | +| - | `--notifications-email-auth-password-file` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD_FILE` | `string` | File from which to load password for use with PLAIN/LOGIN authentication. | +| - | `--notifications-email-auth-identity` | `CODER_NOTIFICATIONS_EMAIL_AUTH_IDENTITY` | `string` | Identity to use with PLAIN authentication. | + +**TLS Settings:** + +| Required | CLI | Env | Type | Description | Default | +|:--------:|-------------------------------------------|---------------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| - | `--notifications-email-force-tls` | `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` | `bool` | Force a TLS connection to the configured SMTP smarthost. If port 465 is used, TLS will be forced. See https://datatracker.ietf.org/doc/html/rfc8314#section-3.3. | false | +| - | `--notifications-email-tls-starttls` | `CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS` | `bool` | Enable STARTTLS to upgrade insecure SMTP connections using TLS. Ignored if `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` is set. | false | +| - | `--notifications-email-tls-skip-verify` | `CODER_NOTIFICATIONS_EMAIL_TLS_SKIPVERIFY` | `bool` | Skip verification of the target server's certificate (**insecure**). | false | +| - | `--notifications-email-tls-server-name` | `CODER_NOTIFICATIONS_EMAIL_TLS_SERVERNAME` | `string` | Server name to verify against the target certificate. | | +| - | `--notifications-email-tls-cert-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTFILE` | `string` | Certificate file to use. | | +| - | `--notifications-email-tls-cert-key-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTKEYFILE` | `string` | Certificate key file to use. | | + +**NOTE:** you _MUST_ use `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` if your smarthost supports TLS on a port other than `465`. + +### Send emails using G-Suite + +After setting the required fields above: + +1. Create an [App Password](https://myaccount.google.com/apppasswords) using the account you wish to send from +2. Set the following configuration options: + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp.gmail.com:465 + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See [this help article from Google](https://support.google.com/a/answer/176600?hl=en) for more options. + +### Send emails using Outlook.com + +After setting the required fields above: + +1. Setup an account on Microsoft 365 or outlook.com +2. Set the following configuration options: + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp-mail.outlook.com:587 + CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS=true + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See [this help article from Microsoft](https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-for-outlook-com-d088b986-291d-42b8-9564-9c414e2aa040) +for more options. + +## Webhook + +The webhook delivery method sends an HTTP POST request to the defined endpoint. The purpose of webhook notifications is +to enable integrations with other systems. + +**Settings**: + +| Required | CLI | Env | Type | Description | +|:--------:|------------------------------------|----------------------------------------|-------|-----------------------------------------| +| ✔️ | `--notifications-webhook-endpoint` | `CODER_NOTIFICATIONS_WEBHOOK_ENDPOINT` | `url` | The endpoint to which to send webhooks. | + +Here is an example payload for Coder's webhook notification: + +```json +{ + "_version": "1.0", + "msg_id": "88750cad-77d4-4663-8bc0-f46855f5019b", + "payload": { + "_version": "1.0", + "notification_name": "Workspace Deleted", + "user_id": "4ac34fcb-8155-44d5-8301-e3cd46e88b35", + "user_email": "danny@coder.com", + "user_name": "danny", + "user_username": "danny", + "actions": [ + { + "label": "View workspaces", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/workspaces" + }, + { + "label": "View templates", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/templates" + } + ], + "labels": { + "initiator": "danny", + "name": "my-workspace", + "reason": "initiated by user" + } + }, + "title": "Workspace \"my-workspace\" deleted", + "body": "Hi danny\n\nYour workspace my-workspace was deleted.\nThe specified reason was \"initiated by user (danny)\"." +} +``` + +The top-level object has these keys: + +- `_version`: describes the version of this schema; follows semantic versioning +- `msg_id`: the UUID of the notification (matches the ID in the `notification_messages` table) +- `payload`: contains the specific details of the notification; described below +- `title`: the title of the notification message (equivalent to a subject in SMTP delivery) +- `body`: the body of the notification message (equivalent to the message body in SMTP delivery) + +The `payload` object has these keys: + +- `_version`: describes the version of this inner schema; follows semantic versioning +- `notification_name`: name of the event which triggered the notification +- `user_id`: Coder internal user identifier of the target user (UUID) +- `user_email`: email address of the target user +- `user_name`: name of the target user +- `user_username`: username of the target user +- `actions`: a list of CTAs (Call-To-Action); these are mainly relevant for SMTP delivery in which they're shown as + buttons +- `labels`: dynamic map of zero or more string key-value pairs; these vary from event to event + +## Preferences (enterprise) + +Administrators can configure which delivery methods are used for each different [event type](#event-types). + +![preferences](../images/admin/notification-admin-prefs.png) + +You can find this page under `https://$CODER_ACCESS_URL/deployment/notifications?tab=events`. + +## Stop sending notifications + +To pause sending notifications, execute `coder notifications pause`. + +To resume sending notifications, execute `coder notifications resume`. + +## Internals + +The notification system is built to operate concurrently in a single- or multi-replica Coder deployment, and has a +built-in +retry mechanism. It uses the configured Postgres database to store notifications in a queue and facilitate concurrency. + +All messages are stored in the `notification_messages` table. + +Messages older than 7 days are deleted. + +### Message States + +![states](../images/admin/notification-states.png) + +_A notifier here refers to a Coder replica which is responsible for dispatching the notification. All running replicas +act as notifiers to process pending messages._ + +- a message begins in `pending` state +- transitions to `leased` when a Coder replica acquires new messages from the database + - new messages are checked for every `CODER_NOTIFICATIONS_FETCH_INTERVAL` (default: 15s) +- if a message is delivered successfully, it transitions to `sent` state +- if a message encounters a non-retryable error (e.g. misconfiguration), it transitions to `permanent_failure` +- if a message encounters a retryable error (e.g. temporary server outage), it transitions to `temporary_failure` + - this message will be retried up to `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` (default: 5) + - this message will transition back to `pending` state after `CODER_NOTIFICATIONS_RETRY_INTERVAL` (default: 5m) and + be retried + - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to `permanent_failure` + +Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. \ No newline at end of file diff --git a/docs/images/admin/notification-admin-prefs.png b/docs/images/admin/notification-admin-prefs.png new file mode 100644 index 0000000000000000000000000000000000000000..435dfbde646c92c2c6c38049191a52692a512765 GIT binary patch literal 67374 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 z�eHy#Dj60aw$%)FktIM@T8G1K#F? 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 literal 0 HcmV?d00001 diff --git a/docs/images/admin/notification-states.png b/docs/images/admin/notification-states.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd3de7ff0f9114fb32e3511c6cc4f92b730a0ce GIT binary patch literal 36747 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 Date: Thu, 29 Aug 2024 22:29:34 +0000 Subject: [PATCH 2/8] minor link additions, started user preferences --- docs/admin/notifications.md | 18 ++++++++++++++---- docs/images/user-notification-preferences.PNG | Bin 0 -> 107800 bytes 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 docs/images/user-notification-preferences.PNG diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index 985f5252d6477..58367e997a756 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -59,6 +59,8 @@ _These notifications are sent to users with **template admin** roles._ ## Configuration +You can modify the notification delivery behavior using the following server flags. + | Required | CLI | Env | Type | Description | Default | |:--------:|-------------------------------------|-----------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------|---------| | ✔️ | `--notifications-dispatch-timeout` | `CODER_NOTIFICATIONS_DISPATCH_TIMEOUT` | `duration` | How long to wait while a notification is being sent before giving up. | 1m | @@ -206,7 +208,13 @@ The `payload` object has these keys: buttons - `labels`: dynamic map of zero or more string key-value pairs; these vary from event to event -## Preferences (enterprise) +## User Preferences + +All users have the option to opt-out of any notifications. Go to **Account** -> **Notifications** to turn notifications on or off. The delivery method for each notification is indicated on the right hand side of this table. + +![User Notification Preferences](../images/user-notification-preferences.PNG) + +## Delivery Preferences (enterprise) Administrators can configure which delivery methods are used for each different [event type](#event-types). @@ -216,9 +224,11 @@ You can find this page under `https://$CODER_ACCESS_URL/deployment/notifications ## Stop sending notifications -To pause sending notifications, execute `coder notifications pause`. +Administrators may wish to stop _all_ notifications across the deployment. We support a killswitch in the CLI for these cases. + +To pause sending notifications, execute [`coder notifications pause`](https://coder.com/docs/reference/cli/notifications_pause). -To resume sending notifications, execute `coder notifications resume`. +To resume sending notifications, execute [`coder notifications resume`](https://coder.com/docs/reference/cli/notifications_resume). ## Internals @@ -248,4 +258,4 @@ act as notifiers to process pending messages._ be retried - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to `permanent_failure` -Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. \ No newline at end of file +Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. diff --git a/docs/images/user-notification-preferences.PNG b/docs/images/user-notification-preferences.PNG new file mode 100644 index 0000000000000000000000000000000000000000..818de470a7f771173836686c8c832efed754116a GIT binary patch literal 107800 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 a=)e5gBWVV|3_}z^zV>wWb6Mw<&;$VBebA%; literal 0 HcmV?d00001 From 3051cc0c94158c55961493055aaa4828a5fb55cb Mon Sep 17 00:00:00 2001 From: Stephen Kirby Date: Thu, 29 Aug 2024 22:30:03 +0000 Subject: [PATCH 3/8] make fmt --- docs/admin/notifications.md | 219 ++++++++++++++++++++---------------- 1 file changed, 125 insertions(+), 94 deletions(-) diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index 58367e997a756..d31cbc9cdce80 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -1,13 +1,14 @@ # Notifications -Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user -being created. +Notifications are sent by Coder in response to specific internal events, such as +a workspace being deleted or a user being created. **Notifications are currently an experimental feature.** ## Enable experiment -In order to activate the notifications feature, you'll need to enable the `notifications` experiment. +In order to activate the notifications feature, you'll need to enable the +`notifications` experiment. ```bash # Using the CLI flag @@ -17,12 +18,13 @@ $ coder server --experiments=notifications $ CODER_EXPERIMENTS=notifications coder server ``` -More information on experiments can be found [here](/docs/contributing/feature-stages#experimental-features). +More information on experiments can be found +[here](/docs/contributing/feature-stages#experimental-features). ## Event Types -Notifications are sent in response to internal events, to alert the affected user(s) of this event. Currently we support -the following list of events: +Notifications are sent in response to internal events, to alert the affected +user(s) of this event. Currently we support the following list of events: ### Workspace Events @@ -59,34 +61,36 @@ _These notifications are sent to users with **template admin** roles._ ## Configuration -You can modify the notification delivery behavior using the following server flags. +You can modify the notification delivery behavior using the following server +flags. | Required | CLI | Env | Type | Description | Default | -|:--------:|-------------------------------------|-----------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------|---------| +| :------: | ----------------------------------- | --------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------- | ------- | | ✔️ | `--notifications-dispatch-timeout` | `CODER_NOTIFICATIONS_DISPATCH_TIMEOUT` | `duration` | How long to wait while a notification is being sent before giving up. | 1m | | ✔️ | `--notifications-method` | `CODER_NOTIFICATIONS_METHOD` | `string` | Which delivery method to use (available options: 'smtp', 'webhook'). See [Delivery Methods](#delivery-methods) below. | smtp | | -️ | `--notifications-max-send-attempts` | `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` | `int` | The upper limit of attempts to send a notification. | 5 | ## Delivery Methods -Notifications can currently be delivery by either SMTP or webhook. Each message can only be delivered to one method, and -this method is configured globally -with [`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) +Notifications can currently be delivery by either SMTP or webhook. Each message +can only be delivered to one method, and this method is configured globally with +[`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) (default: `smtp`). -Enterprise customers can configured which method to use for each of the supported [Events](#events); see -the [Preferences](#preferences) -section below for more details. +Enterprise customers can configured which method to use for each of the +supported [Events](#events); see the [Preferences](#preferences) section below +for more details. ## SMTP -Use the `smtp` method to deliver notifications by email to your users. Coder does not ship with an SMTP server, so you -will need to configure Coder to use an existing one. +Use the `smtp` method to deliver notifications by email to your users. Coder +does not ship with an SMTP server, so you will need to configure Coder to use an +existing one. **Server Settings:** | Required | CLI | Env | Type | Description | Default | -|:--------:|-----------------------------------|---------------------------------------|-------------|-------------------------------------------|---------------| +| :------: | --------------------------------- | ------------------------------------- | ----------- | ----------------------------------------- | ------------- | | ✔️ | `--notifications-email-from` | `CODER_NOTIFICATIONS_EMAIL_FROM` | `string` | The sender's address to use. | | | ✔️ | `--notifications-email-smarthost` | `CODER_NOTIFICATIONS_EMAIL_SMARTHOST` | `host:port` | The SMTP relay to send messages through. | localhost:587 | | -️ | `--notifications-email-hello` | `CODER_NOTIFICATIONS_EMAIL_HELLO` | `string` | The hostname identifying the SMTP server. | localhost | @@ -94,7 +98,7 @@ will need to configure Coder to use an existing one. **Authentication Settings:** | Required | CLI | Env | Type | Description | -|:--------:|--------------------------------------------|------------------------------------------------|----------|---------------------------------------------------------------------------| +| :------: | ------------------------------------------ | ---------------------------------------------- | -------- | ------------------------------------------------------------------------- | | - | `--notifications-email-auth-username` | `CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME` | `string` | Username to use with PLAIN/LOGIN authentication. | | - | `--notifications-email-auth-password` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD` | `string` | Password to use with PLAIN/LOGIN authentication. | | - | `--notifications-email-auth-password-file` | `CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD_FILE` | `string` | File from which to load password for use with PLAIN/LOGIN authentication. | @@ -103,7 +107,7 @@ will need to configure Coder to use an existing one. **TLS Settings:** | Required | CLI | Env | Type | Description | Default | -|:--------:|-------------------------------------------|---------------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| :------: | ----------------------------------------- | ------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | - | `--notifications-email-force-tls` | `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` | `bool` | Force a TLS connection to the configured SMTP smarthost. If port 465 is used, TLS will be forced. See https://datatracker.ietf.org/doc/html/rfc8314#section-3.3. | false | | - | `--notifications-email-tls-starttls` | `CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS` | `bool` | Enable STARTTLS to upgrade insecure SMTP connections using TLS. Ignored if `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` is set. | false | | - | `--notifications-email-tls-skip-verify` | `CODER_NOTIFICATIONS_EMAIL_TLS_SKIPVERIFY` | `bool` | Skip verification of the target server's certificate (**insecure**). | false | @@ -111,21 +115,25 @@ will need to configure Coder to use an existing one. | - | `--notifications-email-tls-cert-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTFILE` | `string` | Certificate file to use. | | | - | `--notifications-email-tls-cert-key-file` | `CODER_NOTIFICATIONS_EMAIL_TLS_CERTKEYFILE` | `string` | Certificate key file to use. | | -**NOTE:** you _MUST_ use `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` if your smarthost supports TLS on a port other than `465`. +**NOTE:** you _MUST_ use `CODER_NOTIFICATIONS_EMAIL_FORCE_TLS` if your smarthost +supports TLS on a port other than `465`. ### Send emails using G-Suite After setting the required fields above: -1. Create an [App Password](https://myaccount.google.com/apppasswords) using the account you wish to send from +1. Create an [App Password](https://myaccount.google.com/apppasswords) using the + account you wish to send from 2. Set the following configuration options: - ``` - CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp.gmail.com:465 - CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ - CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" - ``` - -See [this help article from Google](https://support.google.com/a/answer/176600?hl=en) for more options. + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp.gmail.com:465 + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See +[this help article from Google](https://support.google.com/a/answer/176600?hl=en) +for more options. ### Send emails using Outlook.com @@ -133,108 +141,123 @@ After setting the required fields above: 1. Setup an account on Microsoft 365 or outlook.com 2. Set the following configuration options: - ``` - CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp-mail.outlook.com:587 - CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS=true - CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ - CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" - ``` - -See [this help article from Microsoft](https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-for-outlook-com-d088b986-291d-42b8-9564-9c414e2aa040) + ``` + CODER_NOTIFICATIONS_EMAIL_SMARTHOST=smtp-mail.outlook.com:587 + CODER_NOTIFICATIONS_EMAIL_TLS_STARTTLS=true + CODER_NOTIFICATIONS_EMAIL_AUTH_USERNAME=@ + CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD="" + ``` + +See +[this help article from Microsoft](https://support.microsoft.com/en-us/office/pop-imap-and-smtp-settings-for-outlook-com-d088b986-291d-42b8-9564-9c414e2aa040) for more options. ## Webhook -The webhook delivery method sends an HTTP POST request to the defined endpoint. The purpose of webhook notifications is -to enable integrations with other systems. +The webhook delivery method sends an HTTP POST request to the defined endpoint. +The purpose of webhook notifications is to enable integrations with other +systems. **Settings**: | Required | CLI | Env | Type | Description | -|:--------:|------------------------------------|----------------------------------------|-------|-----------------------------------------| +| :------: | ---------------------------------- | -------------------------------------- | ----- | --------------------------------------- | | ✔️ | `--notifications-webhook-endpoint` | `CODER_NOTIFICATIONS_WEBHOOK_ENDPOINT` | `url` | The endpoint to which to send webhooks. | Here is an example payload for Coder's webhook notification: ```json { - "_version": "1.0", - "msg_id": "88750cad-77d4-4663-8bc0-f46855f5019b", - "payload": { - "_version": "1.0", - "notification_name": "Workspace Deleted", - "user_id": "4ac34fcb-8155-44d5-8301-e3cd46e88b35", - "user_email": "danny@coder.com", - "user_name": "danny", - "user_username": "danny", - "actions": [ - { - "label": "View workspaces", - "url": "https://et23ntkhpueak.pit-1.try.coder.app/workspaces" - }, - { - "label": "View templates", - "url": "https://et23ntkhpueak.pit-1.try.coder.app/templates" - } - ], - "labels": { - "initiator": "danny", - "name": "my-workspace", - "reason": "initiated by user" - } - }, - "title": "Workspace \"my-workspace\" deleted", - "body": "Hi danny\n\nYour workspace my-workspace was deleted.\nThe specified reason was \"initiated by user (danny)\"." + "_version": "1.0", + "msg_id": "88750cad-77d4-4663-8bc0-f46855f5019b", + "payload": { + "_version": "1.0", + "notification_name": "Workspace Deleted", + "user_id": "4ac34fcb-8155-44d5-8301-e3cd46e88b35", + "user_email": "danny@coder.com", + "user_name": "danny", + "user_username": "danny", + "actions": [ + { + "label": "View workspaces", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/workspaces" + }, + { + "label": "View templates", + "url": "https://et23ntkhpueak.pit-1.try.coder.app/templates" + } + ], + "labels": { + "initiator": "danny", + "name": "my-workspace", + "reason": "initiated by user" + } + }, + "title": "Workspace \"my-workspace\" deleted", + "body": "Hi danny\n\nYour workspace my-workspace was deleted.\nThe specified reason was \"initiated by user (danny)\"." } ``` The top-level object has these keys: - `_version`: describes the version of this schema; follows semantic versioning -- `msg_id`: the UUID of the notification (matches the ID in the `notification_messages` table) +- `msg_id`: the UUID of the notification (matches the ID in the + `notification_messages` table) - `payload`: contains the specific details of the notification; described below -- `title`: the title of the notification message (equivalent to a subject in SMTP delivery) -- `body`: the body of the notification message (equivalent to the message body in SMTP delivery) +- `title`: the title of the notification message (equivalent to a subject in + SMTP delivery) +- `body`: the body of the notification message (equivalent to the message body + in SMTP delivery) The `payload` object has these keys: -- `_version`: describes the version of this inner schema; follows semantic versioning +- `_version`: describes the version of this inner schema; follows semantic + versioning - `notification_name`: name of the event which triggered the notification - `user_id`: Coder internal user identifier of the target user (UUID) - `user_email`: email address of the target user - `user_name`: name of the target user - `user_username`: username of the target user -- `actions`: a list of CTAs (Call-To-Action); these are mainly relevant for SMTP delivery in which they're shown as - buttons -- `labels`: dynamic map of zero or more string key-value pairs; these vary from event to event +- `actions`: a list of CTAs (Call-To-Action); these are mainly relevant for SMTP + delivery in which they're shown as buttons +- `labels`: dynamic map of zero or more string key-value pairs; these vary from + event to event ## User Preferences -All users have the option to opt-out of any notifications. Go to **Account** -> **Notifications** to turn notifications on or off. The delivery method for each notification is indicated on the right hand side of this table. +All users have the option to opt-out of any notifications. Go to **Account** -> +**Notifications** to turn notifications on or off. The delivery method for each +notification is indicated on the right hand side of this table. ![User Notification Preferences](../images/user-notification-preferences.PNG) ## Delivery Preferences (enterprise) -Administrators can configure which delivery methods are used for each different [event type](#event-types). +Administrators can configure which delivery methods are used for each different +[event type](#event-types). ![preferences](../images/admin/notification-admin-prefs.png) -You can find this page under `https://$CODER_ACCESS_URL/deployment/notifications?tab=events`. +You can find this page under +`https://$CODER_ACCESS_URL/deployment/notifications?tab=events`. ## Stop sending notifications -Administrators may wish to stop _all_ notifications across the deployment. We support a killswitch in the CLI for these cases. +Administrators may wish to stop _all_ notifications across the deployment. We +support a killswitch in the CLI for these cases. -To pause sending notifications, execute [`coder notifications pause`](https://coder.com/docs/reference/cli/notifications_pause). +To pause sending notifications, execute +[`coder notifications pause`](https://coder.com/docs/reference/cli/notifications_pause). -To resume sending notifications, execute [`coder notifications resume`](https://coder.com/docs/reference/cli/notifications_resume). +To resume sending notifications, execute +[`coder notifications resume`](https://coder.com/docs/reference/cli/notifications_resume). ## Internals -The notification system is built to operate concurrently in a single- or multi-replica Coder deployment, and has a -built-in -retry mechanism. It uses the configured Postgres database to store notifications in a queue and facilitate concurrency. +The notification system is built to operate concurrently in a single- or +multi-replica Coder deployment, and has a built-in retry mechanism. It uses the +configured Postgres database to store notifications in a queue and facilitate +concurrency. All messages are stored in the `notification_messages` table. @@ -244,18 +267,26 @@ Messages older than 7 days are deleted. ![states](../images/admin/notification-states.png) -_A notifier here refers to a Coder replica which is responsible for dispatching the notification. All running replicas -act as notifiers to process pending messages._ +_A notifier here refers to a Coder replica which is responsible for dispatching +the notification. All running replicas act as notifiers to process pending +messages._ - a message begins in `pending` state -- transitions to `leased` when a Coder replica acquires new messages from the database - - new messages are checked for every `CODER_NOTIFICATIONS_FETCH_INTERVAL` (default: 15s) +- transitions to `leased` when a Coder replica acquires new messages from the + database + - new messages are checked for every `CODER_NOTIFICATIONS_FETCH_INTERVAL` + (default: 15s) - if a message is delivered successfully, it transitions to `sent` state -- if a message encounters a non-retryable error (e.g. misconfiguration), it transitions to `permanent_failure` -- if a message encounters a retryable error (e.g. temporary server outage), it transitions to `temporary_failure` - - this message will be retried up to `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` (default: 5) - - this message will transition back to `pending` state after `CODER_NOTIFICATIONS_RETRY_INTERVAL` (default: 5m) and - be retried - - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to `permanent_failure` - -Diagnostic messages will be saved in the `notification_messages` table and will be logged, in the case of failure. +- if a message encounters a non-retryable error (e.g. misconfiguration), it + transitions to `permanent_failure` +- if a message encounters a retryable error (e.g. temporary server outage), it + transitions to `temporary_failure` + - this message will be retried up to `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` + (default: 5) + - this message will transition back to `pending` state after + `CODER_NOTIFICATIONS_RETRY_INTERVAL` (default: 5m) and be retried + - after `CODER_NOTIFICATIONS_MAX_SEND_ATTEMPTS` is exceeded, it transitions to + `permanent_failure` + +Diagnostic messages will be saved in the `notification_messages` table and will +be logged, in the case of failure. From 0fb1fc03cc79d44f3bf2b40f518312f94a5ef9b1 Mon Sep 17 00:00:00 2001 From: Stephen Kirby Date: Thu, 29 Aug 2024 22:33:01 +0000 Subject: [PATCH 4/8] added release verison to experimental warning --- docs/admin/notifications.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index d31cbc9cdce80..a1c894b065dfb 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -3,7 +3,8 @@ Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user being created. -**Notifications are currently an experimental feature.** +**Notifications are currently an experimental feature (as of their release in +[2.15.0](https://github.com/coder/coder/releases/tag/v2.15.0)).** ## Enable experiment From b708488ae1d81da8930c765e447e653408bea73f Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 09:28:08 +0200 Subject: [PATCH 5/8] Minor tweaks Signed-off-by: Danny Kopping --- codersdk/deployment.go | 1 - docs/admin/notifications.md | 6 +++--- ...rences.PNG => user-notification-preferences.png} | Bin 3 files changed, 3 insertions(+), 4 deletions(-) rename docs/images/{user-notification-preferences.PNG => user-notification-preferences.png} (100%) diff --git a/codersdk/deployment.go b/codersdk/deployment.go index 47595b08e910d..2e7316ddeeddd 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2422,7 +2422,6 @@ Write out the current server config as YAML to stdout.`, Annotations: serpent.Annotations{}.Mark(annotationSecretKey, "true"), Value: &c.Notifications.SMTP.Auth.Password, Group: &deploymentGroupNotificationsEmailAuth, - YAML: "password", }, { Name: "Notifications: Email Auth: Password File", diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index a1c894b065dfb..fd51a1cd6831e 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -20,7 +20,7 @@ $ CODER_EXPERIMENTS=notifications coder server ``` More information on experiments can be found -[here](/docs/contributing/feature-stages#experimental-features). +[here](https://coder.com/docs/contributing/feature-stages#experimental-features). ## Event Types @@ -82,7 +82,7 @@ Enterprise customers can configured which method to use for each of the supported [Events](#events); see the [Preferences](#preferences) section below for more details. -## SMTP +## SMTP (Email) Use the `smtp` method to deliver notifications by email to your users. Coder does not ship with an SMTP server, so you will need to configure Coder to use an @@ -230,7 +230,7 @@ All users have the option to opt-out of any notifications. Go to **Account** -> **Notifications** to turn notifications on or off. The delivery method for each notification is indicated on the right hand side of this table. -![User Notification Preferences](../images/user-notification-preferences.PNG) +![User Notification Preferences](../images/user-notification-preferences.png) ## Delivery Preferences (enterprise) diff --git a/docs/images/user-notification-preferences.PNG b/docs/images/user-notification-preferences.png similarity index 100% rename from docs/images/user-notification-preferences.PNG rename to docs/images/user-notification-preferences.png From ebbba0edf0c020a618a9434d73c6b2f0761eae52 Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 09:49:33 +0200 Subject: [PATCH 6/8] make gen Signed-off-by: Danny Kopping --- cli/testdata/server-config.yaml.golden | 3 --- docs/admin/notifications.md | 2 +- docs/reference/cli/server.md | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/cli/testdata/server-config.yaml.golden b/cli/testdata/server-config.yaml.golden index b050b662c56fa..cfa3c99d35eca 100644 --- a/cli/testdata/server-config.yaml.golden +++ b/cli/testdata/server-config.yaml.golden @@ -529,9 +529,6 @@ notifications: # Username to use with PLAIN/LOGIN authentication. # (default: , type: string) username: "" - # Password to use with PLAIN/LOGIN authentication. - # (default: , type: string) - password: "" # File from which to load password for use with PLAIN/LOGIN authentication. # (default: , type: string) passwordFile: "" diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index fd51a1cd6831e..611f516ac0dad 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -73,7 +73,7 @@ flags. ## Delivery Methods -Notifications can currently be delivery by either SMTP or webhook. Each message +Notifications can currently be delivered by either SMTP or webhook. Each message can only be delivered to one method, and this method is configured globally with [`CODER_NOTIFICATIONS_METHOD`](https://coder.com/docs/reference/cli/server#--notifications-method) (default: `smtp`). diff --git a/docs/reference/cli/server.md b/docs/reference/cli/server.md index 1ecdd326f1b17..ab97afe956940 100644 --- a/docs/reference/cli/server.md +++ b/docs/reference/cli/server.md @@ -1296,7 +1296,6 @@ Username to use with PLAIN/LOGIN authentication. | ----------- | ----------------------------------------------------- | | Type | string | | Environment | $CODER_NOTIFICATIONS_EMAIL_AUTH_PASSWORD | -| YAML | notifications.email.emailAuth.password | Password to use with PLAIN/LOGIN authentication. From b2b6cd0ea459cc8808a240c6d248e01e486b3c5b Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 10:15:17 +0200 Subject: [PATCH 7/8] Excluding password field from config test Signed-off-by: Danny Kopping --- codersdk/deployment_test.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/codersdk/deployment_test.go b/codersdk/deployment_test.go index b84eda1f7250b..d7eca6323000c 100644 --- a/codersdk/deployment_test.go +++ b/codersdk/deployment_test.go @@ -14,9 +14,10 @@ import ( "github.com/stretchr/testify/require" "gopkg.in/yaml.v3" + "github.com/coder/serpent" + "github.com/coder/coder/v2/coderd/util/ptr" "github.com/coder/coder/v2/codersdk" - "github.com/coder/serpent" ) type exclusion struct { @@ -77,6 +78,9 @@ func TestDeploymentValues_HighlyConfigurable(t *testing.T) { "Provisioner Daemon Pre-shared Key (PSK)": { yaml: true, }, + "Notifications: Email Auth: Password": { + yaml: true, + }, } set := (&codersdk.DeploymentValues{}).Options() From 6a6b903288e757cee5fb2d07c3e2db7ba72824b2 Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Fri, 30 Aug 2024 17:13:00 +0200 Subject: [PATCH 8/8] Remove release link Signed-off-by: Danny Kopping --- docs/admin/notifications.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/admin/notifications.md b/docs/admin/notifications.md index 611f516ac0dad..e4cd9a27b5f53 100644 --- a/docs/admin/notifications.md +++ b/docs/admin/notifications.md @@ -3,8 +3,7 @@ Notifications are sent by Coder in response to specific internal events, such as a workspace being deleted or a user being created. -**Notifications are currently an experimental feature (as of their release in -[2.15.0](https://github.com/coder/coder/releases/tag/v2.15.0)).** +**Notifications are currently an experimental feature.** ## Enable experiment