Symon 52edbcc2f8 feat: add operator config options for Apprise notifications (closes #1576)
Adds three new environment variables that give instance operators control
over Apprise notification services, addressing GDPR and compliance concerns
around third-party data transfers.

## New environment variables

- APPRISE_ENABLED (default: true)
  Set to "false" to globally prevent users from creating Apprise notification
  services and to silently skip sending any Apprise notifications. Existing
  services in the database are preserved but not used while disabled.

- APPRISE_ALLOWED_SCHEMAS (default: empty — no restriction)
  Comma-separated allowlist of Apprise URL schemas (e.g. "slack,tgram").
  When set, only services whose URL schema appears in this list can be
  created or will be sent. Takes priority over APPRISE_BLOCKED_SCHEMAS.
  Uses Apprise's internal schema names (e.g. "tgram" for Telegram).

- APPRISE_BLOCKED_SCHEMAS (default: empty — built-in list applies)
  Comma-separated blocklist of Apprise URL schemas (e.g. "discord,slack").
  When set, replaces the built-in blocked list entirely. When empty, the
  built-in list (syslog, dbus, kde, qt, glib, gnome, macosx, windows)
  continues to apply as a fallback.

## Enforcement

Validation happens at two layers:

1. API layer (create endpoints for user and board notification services)
   Returns HTTP 403 when Apprise is disabled, HTTP 422 when the URL schema
   is not permitted. This gives users immediate feedback in the UI.

2. Python send layer (send_notifications.py)
   The schema config is passed as a JSON argument so the same allow/block
   rules apply at send time, guarding against services that were created
   before the config was tightened.

## Files changed

- server/config/custom.js — parse new env vars via existing envToArray helper
- server/utils/send_notifications.py — accept schemaConfig as argv[4]; replace
  hard-coded BLOCKED_SCHEMAS_SET with dynamic allowed/blocked resolution
- server/api/helpers/utils/send-notifications.js — short-circuit when disabled;
  pass schemaConfig JSON to the Python script
- server/api/helpers/notification-services/create-one-in-{user,board}.js — add
  appriseDisabled and schemaNotAllowed exits with schema validation logic
- server/api/controllers/notification-services/create-in-{user,board}.js — wire
  new exits to forbidden (403) and unprocessableEntity (422) responses
- server/.env.sample — document all three new variables with comments
2026-04-26 23:44:52 +03:00
2025-05-10 02:09:06 +02:00
2026-02-12 16:03:53 +01:00
2026-03-19 11:13:08 +01:00
2020-05-29 21:46:08 +05:00
2025-11-28 17:45:31 +01:00
2025-05-10 02:09:06 +02:00
2025-05-10 02:09:06 +02:00
2026-02-12 16:03:53 +01:00
2025-05-10 02:09:06 +02:00

Logo

PLANKA

Project mastering driven by fun

Version Docker Pulls Contributors Chat

Install · Demo · Docs · API · Cloud · Pro version

Demo

Key Features

  • Collaborative Kanban Boards: Create projects, boards, lists, cards, and manage tasks with an intuitive drag-and-drop interface
  • Real-Time Updates: Instant syncing across all users, no refresh needed
  • Rich Markdown Support: Write beautifully formatted card descriptions with a powerful markdown editor
  • Flexible Notifications: Get alerts through 100+ providers, fully customizable to your workflow
  • Seamless Authentication: Single sign-on with OpenID Connect integration
  • Multilingual & Easy to Translate: Full internationalization support for a global audience

How to Deploy

PLANKA is easy to install using multiple methods - learn more in the installation guide.

For configuration and environment settings, see the configuration section.

Interested in a hosted or Pro version of PLANKA? Check out the pricing on our website.

Notes App

A testing version of the Notes app is now available on multiple platforms:

  • iOS: Join the TestFlight to try the app
  • Windows & Android: Download the app here

Contact

For any security issues, please do not create a public issue on GitHub - instead, report it privately by emailing security@planka.group.

Note: We do NOT offer any public support via email, please use GitHub.

Join our community: Get help, share ideas, or contribute on our Discord server.

License

PLANKA is fair-code distributed under the Fair Use License and PLANKA Pro/Enterprise License.

  • Source Available: The source code is always visible
  • Self-Hostable: Deploy and host it anywhere
  • Extensible: Customize with your own functionality
  • Enterprise Licenses: Available for additional features and support

For more details, check the License Guide.

Contributing

Found a bug or have a feature request? Check out our Contributing Guide to get started.

For setting up the project locally, see the development section.

Thanks to all our contributors!

Contributors

S
Description
Project mastering driven by fun - Collaborative Kanban boards, real-time updates, rich markdown, 100+ notification providers. Self-hosted and free to deploy.
Readme
29 MiB
Languages
JavaScript 95.2%
SCSS 4.3%
Shell 0.3%