Set up Discourse in the cloud in under 30 minutes with zero knowledge of Rails or Linux shell. One example is DigitalOcean, but these steps will work on any Docker-compatible cloud provider or local server.
🔔Don't have 30 minutes to set this up? For a flat one-time fee of $99, the community can install Discourse in the cloud for you. Click here to purchase a self-supported community install.
Create New Cloud Server
Create your new cloud server, for example on DigitalOcean:
The default of Ubuntu 18.04 LTS x64 works fine. At minimum, a 64-bit Linux OS with a kernel version of 3.10+ is required.
The default of 1 GB RAM works fine for small Discourse communities. We recommend 2 GB RAM for larger communities.
The default of New York is a good choice for most US and European audiences. Or select a region that is geographically closer to your audience.
Enter your domain
discourse.example.comas the Droplet name.
Create your new Droplet. You will receive an email with the root password. (However, if you know how to use SSH keys, you may not need a password to log in.)
Access Your Cloud Server
Connect to your server via its IP address using SSH, or Putty on Windows:
Enter the root password from the email DigitalOcean sent you when the server was set up. You will be prompted to change the root password.
Install Docker / Git (Optional)
If you have reason to install your own version of Docker, you may do so. If docker is not installed,
discourse-setup will automatically install it from get.docker.com.
Clone the Official Discourse Docker Image into
sudo -s git clone https://github.com/discourse/discourse_docker.git /var/discourse cd /var/discourse
You will need to be root through the rest of the setup and bootstrap process.
⚠️Email is CRITICAL for account creation and notifications in Discourse. If you do not properly configure email before bootstrapping YOU WILL HAVE A BROKEN SITE!
Already have a mail server? Great. Use your existing mail server credentials.
No existing mail server? Check out our Recommended Email Providers for Discourse.
To ensure mail deliverability, you must add valid SPF and DKIM records in your DNS. See your mail provider instructions for specifics.
🔔Discourse will not work from an IP address, you must own a domain name such as
Already own a domain name? Great. Select a subdomain such as
forum.example.comfor your Discourse instance.
Your DNS controls should be accessible from the place where you purchased your domain name. Create a DNS A record for the
discourse.example.comsubdomain in your DNS control panel, pointing to the IP address of your cloud instance where you are installing Discourse.
Edit Discourse Configuration
Launch the setup tool at
Answer the following questions when prompted:
Hostname for your Discourse? [discourse.example.com]: Email address for admin account(s)? [firstname.lastname@example.org,email@example.com]: SMTP server address? [smtp.example.com]: SMTP port? : SMTP user name? [firstname.lastname@example.org]: SMTP password? [pa$$word]: Let's Encrypt account email? (ENTER to skip) [email@example.com]:
This will generate an
app.yml configuration file on your behalf, and then kicks off bootstrap. Bootstrapping takes between 2-8 minutes to set up your Discourse. If you need to change these settings after bootstrapping, you can run
./discourse-setup again (it will re-use your previous values from the file) or edit
/containers/app.yml manually with
nano and then
./launcher rebuild app, otherwise your changes will not take effect.
Once bootstrapping is complete, your Discourse should be accessible in your web browser via the domain name
discourse.example.com you entered earlier.
Register New Account and Become Admin
Register a new admin account using one of the email addresses you entered before bootstrapping.
(If you are unable to register your admin account, check the logs at
/var/discourse/shared/standalone/log/rails/production.log and see our Email Troubleshooting checklist.)
After registering your admin account, the setup wizard will launch and guide you through basic configuration of your Discourse.
After completing the setup wizard, you should see Staff topics and READ ME FIRST: Admin Quick Start Guide. This guide contains advice for further configuring and customizing your Discourse install.
- We strongly suggest you turn on automatic security updates for your OS. In Ubuntu use the
dpkg-reconfigure -plow unattended-upgradescommand. In CentOS/RHEL, use the
- If you are using a password and not a SSH key, be sure to enforce a strong root password. In Ubuntu use the
apt-get install libpam-cracklibpackage. We also recommend
fail2banwhich blocks any IP addresses for 10 minutes that attempt more than 3 password retries.
apt-get install fail2ban
sudo yum install fail2ban(requires EPEL)
- If you need or want a default firewall, turn on ufw for Ubuntu or use
firewalldfor CentOS/RHEL 7 or later.
You will get email reminders as new versions of Discourse are released. Please stay current to get the latest features and security fixes. To upgrade Discourse to the latest version, visit
/admin/upgrade in your browser and click the Upgrade button.
launcher command in the
/var/discourse folder can be used for various kinds of maintenance:
Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING] Commands: start: Start/initialize a container stop: Stop a running container restart: Restart a container destroy: Stop and remove a container enter: Use nsenter to get a shell into a container logs: View the Docker logs for a container bootstrap: Bootstrap a container for the config based on a template rebuild: Rebuild a container (destroy old, bootstrap, start new) cleanup: Remove all containers that have stopped for > 24 hours Options: --skip-prereqs Don't check launcher prerequisites --docker-args Extra arguments to pass when running docker
Add More Discourse Features
Do you want...
- Users to log in only via your pre-existing website's registration system? Configure Single-Sign-On.
Users to post replies via email? Configure reply via email.
Automatic daily backups? Configure backups.
Multiple Discourse sites on the same server? Configure multisite.
Webhooks when events happen in Discourse? Configure webhooks.
Import old content from vBulletin, PHPbb, Vanilla, Drupal, BBPress, etc? See our open source importers.
A user friendly offline page when rebuilding or upgrading?
Help us improve this guide! Feel free to ask about it on meta.discourse.org, or even better, submit a pull request.