Best practices for customizing deployment

AI-generated summary

The discussion revolves around best practices for customizing Discourse deployment. aas inquired about versioning files like app.yml and modifying templates, suggesting a possible solution involving a custom git repo and GitHub action using Ansible. aas reiterates the question about a good place to put custom templates. In response, Heliosurge suggests creating backup copies of app.yml with comments, and organizing plugins by categories. Additionally, it is mentioned that replace sections can be added directly to app.yml instead of using templates for customizations.

It is common to edit app.yml in order to tweak Discourse settings.

Additionally, in How to avoid throttling limits with admin API key? - #7 by aas I discovered that I need to modify the nginx config to avoid rate-limiting API requests.

My question is, what are the recommended best practices for things like:

  • Versioning files such as app.yml
    • I’d need to version it outside of /var/discourse and move it to /var/discourse/containers/ any time I change it.
  • Modifying, overriding, or adding new templates
    • templates/web.ratelimited.template.yml is not ignored bit git. While it hasn’t changed for 6 years, editing it directly doesn’t seem wise. It is possible that ./launcher rebuild would clobber it. Or the git pull commands would fail.

Possible solution:

  • Create my own git repo with app.yml and a template.
  • Write a GitHub action that uses Ansible to copy app.yml into /var/discourse/containers/ and also copies the template to the server running Discourse

Questions

  • Where would be a good place to put my custom template?

It looks like I can add replace sections directly to app.yml instead of using templates as mentioned here:

Yes you can say with App.yml you can create backup copies and name them as per your needs

If your changing a particular section you can also add comments. Myself as self hosted I have my plugins organized by official, pavilion and other. I add a comment when installing a new plugin in the appropriate section.

Others though may have better ideas than mine.