Files
computer-playbook/roles/web-app-discourse
kevinveenbirkenbachandClaude Opus 5 ff734fe728 feat(licensing): declare the deployed software's licence per role
The project licence governs this repository's code and says nothing about the application a role installs, which is where a restriction on commercial use usually sits: a deployment cleared to use Infinito.Nexus commercially is still barred from NLLB-200's CC BY-NC weights.

Each invokable role names its licence in meta/<role>/license.yml with the url it was read from. The rights of a named licence live once in meta/licenses.yml, fifteen fields following the taxonomy choosealicense publishes. AND folds to the strictest combination, OR keeps the most favourable whole licence, and the seven contexts are derived from the rights rather than declared, so a heading cannot contradict the matrix under it.

The generated page renders one matrix per context, a lint refuses a role that declares nothing, and a Playwright spec asserts the page against the deployed docs. 21 of 22 deprecated SPDX ids were resolved against the upstream text; EPSON's remains unread because its AUR page blocks automated access.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-20 23:35:00 +02:00
..
…
…

Discourse

Description

Discourse is a popular open-source discussion platform designed to foster community engagement through modern, user-friendly features and robust moderation tools. It creates a dynamic space for discussions, offering seamless notifications and customizable interfaces to keep your community active and engaged.

Overview

This role deploys Discourse using Docker, automating tasks such as container orchestration, service configuration, and routine administrative operations. It integrates key components like Redis and PostgreSQL, sets up domain routing with NGINX, and ensures streamlined updates for a reliable forum experience.

Features

  • Modern Forum Experience: Engage in interactive, real-time discussions with a responsive, mobile-friendly design.
  • Robust Moderation Tools: Benefit from comprehensive tools for content management and community moderation.
  • Customizable Layouts & Themes: Tailor your forum’s look and functionality to suit your community’s unique style.
  • Scalable Architecture: Utilize a Docker-based deployment that adapts easily to increasing traffic and community size.
  • Extensive Plugin Support: Enhance your forum with a wide range of plugins and integrations for additional functionality.

Addons

Addons are declared in meta/addons/ and read at deploy time via lookup('config', application_id, 'addons').

Addon Mechanism Default state Bridges
docker_manager plugin enabled none
discourse-activity-pub plugin enabled mastodon
discourse-akismet plugin enabled none (API key is operator-supplied)
discourse-ai plugin follows services.litellm.enabled litellm
discourse-bbb plugin follows services.bigbluebutton.enabled bigbluebutton
discourse-jitsi plugin follows services.jitsi.enabled jitsi
discourse-chat-integration plugin follows services.matrix.enabled or services.mattermost.enabled matrix, mattermost
discourse-openid-connect plugin follows services.sso.enabled sso
discourse-prometheus plugin follows services.prometheus.enabled prometheus
discourse-ldap-auth plugin follows services.ldap.enabled (currently off) ldap

The bridged partners are co-deployed by variant 1 of meta/variants.yml; variant 0 is the baseline round and keeps them off to stay within its host budget.

discourse-akismet ships the plugin but configures nothing: the role writes no akismet site setting, and akismet_api_key is a SaaS credential an operator enters in the admin UI. Its spec asserts only that the plugin's settings exist.

The ldap service block in meta/services.yml is intentionally pinned to literal false (see TODO.md): the jonmbake/discourse-ldap-auth plugin breaks Discourse bootstrap on recent versions. discourse-ldap-auth therefore resolves to disabled until that block is flipped back to the dynamic group-membership form.

Further Resources