Перейти до вмісту
Обрати мову:Українська

Пошта, Push-сповіщення та стрічка календаря

Kept звертається до людей поза застосунком через електронну пошту, веб-Push у браузері або встановлений застосунок, ntfy, Telegram та Apprise, а також через стрічку календаря, на яку підписується їхній календарний застосунок. Усе також надходить до внутрішнього центру сповіщень, для якого не потрібне налаштування. Користувачі обирають, що отримувати, у розділі Налаштування → Сповіщення (Нагадування та сповіщення → Відкрити). Ця сторінка — сторона оператора. Усі змінні перелічено в довіднику з налаштування.

Змінна Що робить
KEPT_SMTP_URL SMTP-сервер у вигляді smtp:// або smtps://, з обліковими даними, якщо вони потрібні: smtps://user:password@mail.example.org:465.
KEPT_SMTP_FROM Адреса відправника (From) для кожної пошти. За замовчуванням: Kept <no-reply@<your KEPT_PUBLIC_URL host>>. Більшість постачальників дозволяють надсилати лише з адреси, яку вони перевірили, тому встановіть її.

З Compose помістіть обидві у .env; compose.yaml передає їх до kept і migrate. З Helm-чартом smtp.existingSecret називає Secret, що містить KEPT_SMTP_URL, а smtp.from задає відправника. Kept відкриває одне з’єднання на кожен лист; власні параметри URL nodemailer (наприклад, ?pool=true) передаються через URL.

Коли KEPT_SMTP_URL не встановлено

Section titled “Коли KEPT_SMTP_URL не встановлено”

Пошту лише реєструють як таку, що має бути надіслана: одне попередження на лист, mail not sent: no mail transport is configured, де зазначають тип листа, але ніколи не адресу, посилання чи токен. Адміністрування → Статус показує Пошта: не налаштовано і сповіщення Пошту не налаштовано. Без пошти не буде посилань для входу, скидання паролів, електронних запрошень, надісланих поштою сповіщень та звітів. Запрошення за посиланням і паролі працюють без неї, а нагадування все одно надходять до людей через Push і всередині застосунку. У Друк інвентарю заблоковано Надіслати мені електронною поштою та Надіслати ще раз, а власники й адміністратори отримують посилання Налаштувати електронну пошту на цю сторінку; API відмовляє email: true та розкладам звітів із 409 mail_not_configured.

Коли пошту налаштовано, обліковий запис, чия адреса не підтверджена, не може додати ключ доступу чи застосунок автентифікатора, доки не підтвердить її.

Кожен лист виходить як текст і HTML мовою отримувача (англійською, якщо Kept не знає мову). Посилання містять свій токен після #, тож сканер пошти чи журнал сервера ніколи не має придатного до використання.

  • Вхід і обліковий запис: посилання для входу, скидання паролів, підтвердження й перевірка нової адреси електронної пошти та примітка до старої, примітка, коли хтось намагається зареєструватися з адресою, що вже має обліковий запис, а також повідомлення, коли змінюються облікові дані: пароль, додавання або видалення ключа доступу, від’єднання зовнішнього входу, увімкнення двофакторної автентифікації, повторне налаштування чи вимкнення, нові резервні коди, а також вхід із резервним кодом (із часом, пристроєм і кількістю залишених кодів).
  • Люди та місця: електронні запрошення; власнику місця — кожен новий учасник або керований обліковий запис і кожне членство, що досягає дати завершення.
  • Прозорість: коли адміністратор екземпляра (або kept admin) діє щодо чийогось облікового запису; а також усім активним користувачам, коли змінюється OIDC-вхід екземпляра, його вихідна пошта чи типовий постачальник ШІ.
  • Нагадування: прострочений елемент одразу, щоденний дайджест, тест каналу і примітка, коли власний вебхук людини не вдається надіслати.
  • ШІ: місячний ліміт, що досягає 80% або 100%, та необов’язковий місячний підсумок ШІ.
  • Адміністраторам екземпляра: адміністративні сповіщення, не частіше одного разу на день для кожного сповіщення (сторінка статусу та сповіщення).

Зміна поштового сервера

Section titled “Зміна поштового сервера”

Kept порівнює SMTP-хост і відправника з тим, що він бачив уостаннє, при кожному запуску, ніколи не пароль. Якщо що-небудь змінилося, зміну аудитують, і про неї повідомляють усіх активних користувачів новим маршрутом. Перший запуск із налаштованою поштою лише реєструє це.

Push не потребує жодних ключів від вас. При першому запуску Kept створює пару ключів VAPID і зберігає її в базі даних; приватний ключ запечатує з KEPT_SECRET_KEY. Щоб використати власну пару, встановіть обидві:

Змінна Що робить
KEPT_VAPID_PUBLIC_KEY Публічний ключ: непаддований base64url 65 байтів, як записує generateVAPIDKeys() у web-push.
KEPT_VAPID_PRIVATE_KEY Його приватна частина (32 байти, те саме кодування). Ніколи не потрапляє до логів. Встановлення лише одного без іншого зупиняє Kept при запуску.
KEPT_VAPID_SUBJECT З ким можуть зв’язуватися служби Push: https: URL або mailto: адреса. За замовчуванням: KEPT_PUBLIC_URL, якщо він https, інакше mailto: адреса KEPT_SMTP_FROM.

Push недоступний, коли:

  • KEPT_PUBLIC_URL є звичайним http будь-де, крім localhost: браузери підписуються лише на захищеній сторінці. Користувачі бачать “Push потребує HTTPS.” (HTTPS)
  • немає адресата: немає KEPT_VAPID_SUBJECT, немає публічного URL з https і немає KEPT_SMTP_FROM. Користувачі бачать “Push не налаштовано на цьому сервері.”

Пошта та центр сповіщень усе одно працюють у будь-якому разі.

Користувачі вмикають Push для кожного пристрою кнопкою Увімкнути у розділі Як Kept до вас звертається, після запиту браузера. На iPhone та iPad сповіщення працюють лише із встановленого застосунку: Kept повідомляє про це і пропонує Як встановити (застосунок для телефону).

Що залишає сервер: Kept надсилає кожен Push через HTTPS до сервісу Push, на який підписався браузер, тому йому потрібен вихідний доступ до інтернету; приватні та локальні адреси відхиляються. Push містить заголовок, рядок тексту та посилання, менше ніж 3 KB, ніколи не гроші чи контактні дані. Сервіс Push зберігає його до дня, поки пристрій офлайн. Підписку, про яку сервіс повідомляє як видалену, видаляють.

Користувачі додають їх самі в розділі Налаштування → Я → Сповіщення; на сервері нічого не треба налаштовувати. Kept надсилає повідомлення до JSON-кінцевої точки сервера ntfy і до Bot API Telegram (api.telegram.org), одночасно і через той самий захист, що й для вебхуків: сервер ntfy на приватній адресі працює лише тоді, коли Дозволити приватні адреси увімкнено (Адміністрування → Налаштування), а перенаправлення відхиляються. Їхні налаштування (тема й токен ntfy, токен бота Telegram) шифруються як секрет вебхука і охоплюються ротацією ключів. Невдале надсилання повторюється разом із нагадуванням і позначає канал «Failing since»; наступне надсилання, що проходить, знімає позначку. Адміністративні сповіщення до них не надходять.

Apprise забезпечує зв’язок із Discord, Slack, Matrix, Signal, Pushover та понад 100 іншими сервісами. Kept спілкується із сервером Apprise API, який ви запускаєте поруч із ним, і пропонує Додати Apprise людям лише тоді, коли KEPT_APPRISE_URL вказує на такий сервер:

# compose.yaml, beside the kept service
apprise:
image: caronc/apprise:2.0.0
restart: unless-stopped
# and in the kept service's environment
KEPT_APPRISE_URL: http://apprise:8000
  • Кожна людина додає власні URL-адреси Apprise (одну або кілька, наприклад discord://… або mailto://…). Їх шифрують як секрет вебхука, ніколи більше не показують і охоплюють ротацією ключів.
  • Kept використовує безстатний POST /notify/ Apprise API і надсилає URL-адреси з кожним повідомленням, тож сервер Apprise нічого не зберігає. До нього звертаються у приватній мережі навмисно, а перенаправлення відхиляють.
  • Загальні URL json://, xml:// та form:// Apprise (і їхні форми з s) можуть вказувати на будь-який хост, включно з машинами у вашій мережі, тому Kept відхиляє їх, якщо Дозволити приватні адреси не увімкнено (Адміністрування → Налаштування).
  • Невдале надсилання (Apprise відповідає 424, коли сервіс відмовив) повторюється разом із нагадуванням і позначає канал «Failing since». Адміністративні сповіщення не надходять до Apprise.

Кожна людина може створити приватне посилання iCal того, що має бути виконане, і того, що закінчується, у розділі Налаштування → Сповіщення → Календарна стрічка → Створити посилання. На сервері нічого не треба налаштовувати.

  • Що містить: цілоденні події від місяця тому до 13 місяців уперед у всіх місцях користувача: назви, шляхи місць, назви місць та посилання в Kept. Ніколи грошей, секретів, нотаток чи чужих контактних даних. Лише ті види, які людина отримує на якомусь каналі, і нічого з частини Kept, яку місце вимкнуло. Місця, що вимагають двофакторну автентифікацію, пропускають.
  • Посилання: https://kept.example.org/cal/<token>.ics, показується один раз. Kept зберігає лише SHA-256 токена і видаляє його з журналів запитів. Його будують із KEPT_PUBLIC_URL під час створення, тому посилання, створене до зміни адреси, все ще вказує на стару адресу.
  • Хто може читати: будь-хто, хто має посилання, без входу. Невідоме або відкликане посилання, або посилання облікового запису, що вимкнено, відповідає 404, не кажучи, яке саме. Кожне посилання можна отримувати 60 разів на хвилину.
  • Відкликання: Відкликати на посиланні завершує його назавжди; календарі, підписані на нього, перестануть оновлюватися. Список зберігає відкликаний рядок і показує, коли кожне живе посилання було востаннє отримане. Одна людина може мати не більше ніж 3 живих посилання.

Google Calendar отримує посилання із серверів Google, тому там воно працює лише тоді, коли Kept доступний з інтернету.