How To Self Host A Discourse Forum

January 31, 2026

Web forums are good and there should be more of them, but setting one up to be self-sufficient can be a little tricky. I really like the Discourse forum software as it's modern, regularly updated and made by people that seem to genuinely care about internet community building. I've set up dozens in my time and I'd like to share a setup that's worked for me.

Discourse does offer a paid service which is great (imho expensive for many non-commercial communities), but running your own server can incredibly liberating and educational - maybe even fun if you're a dork like me!

I'm going to assume you're familiar with Linux and self-hosting, but not with the particulars of Discourse and the various accessories you need to set it up with. There's a bit of mucking around to get started, but once setup it's pretty damn solid with minimal maintenance. I've run four Discourse servers for many years and they don't take up much time at all.

Before You Start

Get a domain domain name. If you've already got a domain name, a subdomain like forum.cooldomain.com works well. If you don't have a domain name, have fun picking one! I recommend Porkbun as a domain registrar or VentraIP for .au domain names.

Setup that domain name with DNS. Porkbun has DNS hosting included with the domain (many registrars do) but you can also use deSEC for free if your domain registrar sucks. There's also Cloudflare but I find it very complex for DNS alone plus there's some ethics issues with Cloudflare you may or may not care about (I kinda do).

Get a Linux server. This is the computer you run Discourse on. The important factors here are server location and how much RAM it has, CPU performance isn't a big deal. Discourse runs on as little as 2GB of RAM, but is much happier on 4GB and from my experience you want 2x CPU cores otherwise image processing and updates are really slow. Location should be as close as possible to the majority of your visitors, but that's less important when using a CDN.

Tips for picking a VPS:

Stash your user uploads in the cloud. Discourse itself doesn't use much space (it's text in a database) but the images people upload can quickly fill up your VPS's storage. By using S3-compatible object storage (a fancy way of accessing files via an API) you get "unlimited" storage (well up to the max bucket size) without having to think about it and is much cheaper than getting a bigger VPS disk.

Use a CDN to speed things up and reduce load. Serving images direct from object storage is slow and expensive. By putting a CDN in front of it you speed things up immensely as the data is closer to the visitor. Also means you don't have to worry about running out of bandwidth on your VPS. BunnyCDN is my go-to for CDN as their offerings are simple to use and they charge pay as you go rates so very cheap for low volume sites.

Pay someone else to handle email. Discourse requires a working mail server so it can send user registration confirmation emails, password resets, notifications, etc. Instead of running your own server (which you're welcome to do!) you can pay a few bucks a month for it. Maileroo (3,000 emails/m for free) and SMTP2GO (1,000/m for free) are my preferred services at the moment. You can setup a server now without an email server if you use the "Login via Discourse ID" option - their single sign-on system where a visitor can make an account via Discourse (and use it on multiple Discourse servers) or via Google/Apple/Facebook/GitHub.

Use Tailscale to securely access your server. By using Tailscale, you can lock down all the ports on your server except for 443/80 (so strangers can visit your forum), but lets you log into it via SSH for admin tasks without having to open a port for SSH or even use a password. Make a free Tailscale account and you can access your VPS as if it was on your LAN, very cool and very easy. I really hope they don't enshittify their product.

Server Setup Tips

Server administration can be daunting, but I'm a dummy and have run servers pretty successfully for decades. Now that I've jinxed it and will probably get hacked next week, here's some tips to get you started:

That's it. That's all you need to do to get a robust server going that's ready for Discourse. If you're unsure on how to do any of that, honestly just ask an LLM. They're great at this kinda basic Linux stuff.

Discourse Installation

Discourse has good installation instructions. If you're familiar with Linux it shouldn't be much of a hassle. The install wizard is great at guiding you through it. It'll even generate an SSL certificate via Let's Encrypt so you get that HTTPS goodness.

Make sure your domain name is setup (e.g: A-record pointing at the VPS's IP address) properly. You can check by running dig +short forum.yourdomain.com A and the IP address spat back at you should match the IP address of your server. Also setup your SMTP server DNS same domain so emails are sent from the same domain name as your server - your SMTP provider (Maileroo, SMTP2GO, etc) will have very detailed instructions on how to setup your DNS appropriately.

Once the installer is done you need to setup your object storage and CDN. The Discourse forums have instructions:

The final piece of the puzzle is backups. Discourse's backup system is quite good. It'll archive the forum, ship it off to an S3 bucket and then you can restore from it on a fresh Discourse setup should shit hit the fan. So the restore process would work like this:

By default the items stored in S3 will not be backed up by the process. You need to back them up separately. But there is a "hidden" option to include S3 files in your backup that's documented on the Discourse forums.

If you're running on a fancier VPS provider that has block/server backups enabled, you should do that too. Way less mucking around to restore from and handy for taking a quick snapshot before a forum upgrade, so if it breaks something you can just roll back.

Discourse Forum Maintenance

There's really not much to do once you've got a Discourse forum setup. They've changed the release schedule to be a bit less chaotic, doing monthly updates by default now. You just login, do the update and they're pretty uneventful for the most part. I like to have a test setup somewhere to run the update first so there's as few surprises as possible, they've even got Extended Support Releases (ESR) that you can hang on to for 8 months before they stop getting updates.

On the Debian server side of things, the unattended upgrades you setup will keep you more or less safe, but I still login once a month, do a full upgrade of all the software and then a reboot. Do a backup/snapshot before making changes so you can restore from it should an update go rogue!

Happy forum server admin folks! If you need help, the Discourse forums are a good place to start, but feel free to contact me and the worst I'll respond with is "I don't know, sorry".