Draft Discourse Playbook: Installation

Here is a play for installing Discourse. The idea is to write out and discuss each point, so we can give a deeper look as to why we are doing it this way.

Ref: Discourse installation notes, steps i took to spin up a new discourse instance at forum.mycelium.garden on digitalocean - #12 by judytuna

Discuss when needed, edit when needed, be bold. :slight_smile:


  • Domain
  • VPS
  • CDN?
  • Email?
1 Like

Having multiple points of view will make the playbook stronger, so I’m glad I’ve taken a crack at it twice now too! Go team!

1 Like

We get a fair amount of questions in the meta.discourse about domains, such as: do folks need a domain to run Discourse?

The is answer is: most likely. There are some hosting platforms that give out instances on sub-domains, but they install it for you. This is a self-hosted Discourse playbook, so the answer is yeah, you’ll need a domain.

You can use an existing domain, of course, and makes perfect sense given Discourse adds forums to a domain, which can be used for other purposes.

The popular advice is to use a sub-domain. Note: we need to seek out examples of advice given.

Reasons to not use a bare domain (talkgroup.xyz):

  • You want to use sub-domains for all the domain projects for future needs
  • You want to serve the entirety of the site via caching layer such as a commercial CDN

I didn’t want to use talkgroup.xyz for anything else, but even if I had, don’t think I’d have a problem switching it to a sub-domain. The reasons for caring appear to be search-engine related, of limited value.

CDNs, specifically “pull zones” are implemented by creating a CNAME record for the resource serving the zone. Bare domains (sans the sub-part) don’t have a standardized way of accepting CNAME records, and there are several reasons this can cause issues, and implementations are done by large players like Cloudflare, which is not the direction we want to go; we want standards.

This is complicated by the HTTPS issue, as the common sense decision is to go in with Let’s Encrypt. It seems tangential, but these technologies and dependencies are being used to pump out a lot of profit, hence so much support and practical requirements.

In Discourse a CDN can be used in two ways: to serve assets (uploads, for instance), or the entire site. In talkgroup we use a CDN solely for uploads, and not for bandwidth issues but for storage reasons: we upload a bunch and I don’t want to worry about it on the VPS. I push uploads into a blob storage bucket, and point the CDN there.

It looks like:

  • maiki uploads image through web interface on VPS
  • Discourse moves image to blob storage
  • Discourse writes links to images with CDN urls
  • Visitor loads page and CDN serves it’s copy of the image

It’s been noted that talkgroup uses more resources than necessary, but my blob storage (DigitalOcean Spaces) is pooled with the account, on which I use many servers, so the cost is folded in the overall account.

My personal experience indicates assets are the bottleneck, and full-site acceleration is of limited use given the nature of most forums. I also like bare domains and single-use domains. That’s why I set up talkgroup like this.

I have some more thoughts on this…

1 Like

this is v. helpful. thank you!

1 Like