# Self-Hosting

**URL:** https://meta.discourse.org/c/documentation/self-hosting/55.md?page=1

[Latest](https://meta.discourse.org/latest.md) · [Categories](https://meta.discourse.org/categories.md) · [Tags](https://meta.discourse.org/tags.md)

**Page:** 2

---

## [Enable a CDN for your Discourse](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 72\
**Last updated:** [October 4, 2025, 12:09pm UTC](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857 "2025-10-04T12:09:57Z")

</div>

So you’d like to use a CDN to speed up worldwide access to common assets on your Discourse forum? You might want to go all-in and Set up file and image uploads to S3 (see also Configure an S3 compatible object storage pr…

---

## [Set up file and image uploads to S3](https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 35\
**Last updated:** [October 25, 2025, 2:43am UTC](https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229 "2025-10-25T02:43:17Z")

</div>

So, you want to use S3 to handle image uploads? Here’s the definitive guide, but also see Configure an S3 compatible object storage provider for uploads to see how to configure your app.yml. S3 registration Head over t…

---

## [Allow SSL / HTTPS for your Discourse Docker setup](https://meta.discourse.org/t/allow-ssl-https-for-your-discourse-docker-setup/13847)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [March 18, 2014, 11:45pm UTC](https://meta.discourse.org/t/allow-ssl-https-for-your-discourse-docker-setup/13847 "2014-03-18T23:45:27Z")

</div>

This guide is likely out of date as there are now very few reasons not to use the built-in Let’s Encrypt certificate that Just Works. See also: 2023-04-10 @pfaffman says: This is left here mostly for historical purpos…

---

## [Configure Discourse Docker on servers with more RAM and CPU](https://meta.discourse.org/t/configure-discourse-docker-on-servers-with-more-ram-and-cpu/18569)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [August 7, 2014, 5:35am UTC](https://meta.discourse.org/t/configure-discourse-docker-on-servers-with-more-ram-and-cpu/18569 "2014-08-07T05:35:27Z")

</div>

When you install Discourse on an instance with 4GB or more you should consider the following: Monitor your setup If you elect to use a higher end setup we strongly recommend you set up monitoring using a service such a…

---

## [Multisite configuration with Docker](https://meta.discourse.org/t/multisite-configuration-with-docker/14084)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [March 25, 2014, 5:21am UTC](https://meta.discourse.org/t/multisite-configuration-with-docker/14084 "2014-03-25T05:21:03Z")

</div>

:warning: While multisite is supported in the Discourse application, this is an advanced sysadmin setup. If you don’t know what you’re doing, do not set up multisite. The Discourse team is unable to provide multisite c…

---

## [Install plugins on a self-hosted site](https://meta.discourse.org/t/install-plugins-on-a-self-hosted-site/19157)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 42\
**Last updated:** [March 10, 2026, 8:47pm UTC](https://meta.discourse.org/t/install-plugins-on-a-self-hosted-site/19157 "2026-03-10T20:47:49Z")

</div>

:warning: This guide assumes that you have a self-hosted standard installation. We only support the standard method of install here, so these instructions assume you have a standard install. :warning: This guide only…

---

## [Full site CDN acceleration for Discourse](https://meta.discourse.org/t/full-site-cdn-acceleration-for-discourse/21467)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 45\
**Last updated:** [August 22, 2025, 12:39pm UTC](https://meta.discourse.org/t/full-site-cdn-acceleration-for-discourse/21467 "2025-08-22T12:39:03Z")

</div>

Fastly , CloudFlare and a few other CDNs offer a mode where they accelerate dynamic content. In a nutshell you point your domain IP address at the CDN and the CDN will intelligently decide how to deal with the request. …

---

## [Change staff email address from console](https://meta.discourse.org/t/change-staff-email-address-from-console/42062)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 1\
**Last updated:** [February 23, 2026, 3:30am UTC](https://meta.discourse.org/t/change-staff-email-address-from-console/42062 "2026-02-23T03:30:15Z")

</div>

:bookmark: This guide describes how to change a staff member’s email address from the console using the Rails console. It applies to situations where an administrator needs to update an email without confirmation from t…

---

## [Configure Discourse to use a separate PostgreSQL server](https://meta.discourse.org/t/configure-discourse-to-use-a-separate-postgresql-server/46375)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 50\
**Last updated:** [January 8, 2026, 8:30pm UTC](https://meta.discourse.org/t/configure-discourse-to-use-a-separate-postgresql-server/46375 "2026-01-08T20:30:56Z")

</div>

Let’s say you’re using AWS RDS, or an existing PostgreSQL server managed elsewhere. It’s fairly straightforward to get Discourse to use such a setup, without needing to grant superuser privileges to anything that Discou…

---

## [Install Discourse in production with the official supported instructions](https://meta.discourse.org/t/install-discourse-in-production-with-the-official-supported-instructions/142537)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [February 25, 2020, 12:52am UTC](https://meta.discourse.org/t/install-discourse-in-production-with-the-official-supported-instructions/142537 "2020-02-25T00:52:05Z")

</div>

Our install guide lives in GitHub alongside Discourse code at discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. Last edited by @Falco 2026-02-04T21:00:34Z (UTC) ▶ Check document

---

## [Setup Cross-Origin Resource Sharing (CORS)](https://meta.discourse.org/t/setup-cross-origin-resource-sharing-cors/270819)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 8\
**Last updated:** [January 13, 2026, 9:56pm UTC](https://meta.discourse.org/t/setup-cross-origin-resource-sharing-cors/270819 "2026-01-13T21:56:29Z")

</div>

:notebook\_with\_decorative\_cover: This is a how-to guide that will guide you through the process of setting up Cross-Origin Resource Sharing (CORS) in Discourse. CORS is a mechanism that allows many resources (e.g., fo…

---

## [Enable hidden setting to include S3 uploads in the backups](https://meta.discourse.org/t/enable-hidden-setting-to-include-s3-uploads-in-the-backups/276535)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 10\
**Last updated:** [January 12, 2026, 10:18am UTC](https://meta.discourse.org/t/enable-hidden-setting-to-include-s3-uploads-in-the-backups/276535 "2026-01-12T10:18:53Z")

</div>

:bookmark: This guide explains how to enable a hidden setting in Discourse to include Amazon S3 (Simple Storage Service) uploads in your backups. Discourse has the ability to store media uploads on Amazon S3 for scala…

---

## [Where does Discourse store and show logs?](https://meta.discourse.org/t/where-does-discourse-store-and-show-logs/58022)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 8\
**Last updated:** [December 10, 2025, 8:12pm UTC](https://meta.discourse.org/t/where-does-discourse-store-and-show-logs/58022 "2025-12-10T20:12:59Z")

</div>

When troubleshooting issues or errors with Discourse it is important you look at your logs. Here’s a listing of where they are and what’s in there. Your site domain Administration logs shown in the UI The Discours…

---

## [Replace a string in all posts](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 26\
**Last updated:** [December 9, 2025, 11:55am UTC](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729 "2025-12-09T11:55:29Z")

</div>

:bookmark: This guide explains how to replace a string in all posts within a Discourse instance. :person\_raising\_hand: Required user level: System Administrator :warning: Console Access Required Want to replace a st…

---

## [Email delivery configuration checklist](https://meta.discourse.org/t/email-delivery-configuration-checklist/209839)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 4\
**Last updated:** [November 23, 2021, 5:53pm UTC](https://meta.discourse.org/t/email-delivery-configuration-checklist/209839 "2021-11-23T17:53:59Z")

</div>

Email deliverability is complicated. Here are a few important things you should check first: Be sure to set the DISCOURSE\_NOTIFICATION\_EMAIL: correctly in your app.yml file. The domain specified in the “from” address …

---

## [Available settings for global rate limits and throttling](https://meta.discourse.org/t/available-settings-for-global-rate-limits-and-throttling/78612)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 4\
**Last updated:** [November 2, 2025, 11:00am UTC](https://meta.discourse.org/t/available-settings-for-global-rate-limits-and-throttling/78612 "2025-11-02T11:00:27Z")

</div>

Discourse ships with 3 different global rate limits that can be configured by site admins. Global per-ip rate limits These limits apply to every unique IP address that hits the Discourse application. (files that are se…

---

## [Managing IP request rate limits in Discourse](https://meta.discourse.org/t/managing-ip-request-rate-limits-in-discourse/385608)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 0\
**Last updated:** [October 14, 2025, 8:55pm UTC](https://meta.discourse.org/t/managing-ip-request-rate-limits-in-discourse/385608 "2025-10-14T20:55:59Z")

</div>

Discourse implements global per-IP rate limits to protect sites from excessive traffic and abuse. In some legitimate cases, however, you may need to allowlist certain IPs so they can bypass these limits and prevent erro…

---

## [Restore a backup from the command line](https://meta.discourse.org/t/restore-a-backup-from-the-command-line/108034)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 18\
**Last updated:** [May 18, 2025, 10:22pm UTC](https://meta.discourse.org/t/restore-a-backup-from-the-command-line/108034 "2025-05-18T22:22:02Z")

</div>

:bookmark: This guide explains how to restore a Discourse backup from the command line without using the Discourse web UI. :person\_raising\_hand: Required user level: Administrator :wrench: Console access required He…

---

## [Discourse AI - Self-Hosted Guide](https://meta.discourse.org/t/discourse-ai-self-hosted-guide/259598)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 59\
**Last updated:** [May 20, 2024, 3:05am UTC](https://meta.discourse.org/t/discourse-ai-self-hosted-guide/259598 "2024-05-20T03:05:46Z")

</div>

This is a guide aimed at running your own instances of the services that power Discourse AI modules. Introduction If you want to use Discourse AI on your self-hosted instance, you may need to also run the companion s…

---

## [Self-Hosting Embeddings for DiscourseAI](https://meta.discourse.org/t/self-hosting-embeddings-for-discourseai/290925)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 21\
**Last updated:** [April 14, 2025, 9:02pm UTC](https://meta.discourse.org/t/self-hosting-embeddings-for-discourseai/290925 "2025-04-14T21:02:08Z")

</div>

The Discourse AI plugin has many features that require embeddings to work, such as Related Topics, AI Search, AI Helper Category and Tag suggestion, etc. While you can use a third-party API, like Configure API Keys for O…

---

## [Undo an Official Warning](https://meta.discourse.org/t/undo-an-official-warning/103655)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 8\
**Last updated:** [January 30, 2025, 7:06pm UTC](https://meta.discourse.org/t/undo-an-official-warning/103655 "2025-01-30T19:06:17Z")

</div>

:bookmark: This guide explains how to remove an official warning in Discourse via the console, particularly aimed at self-hosting users. :person\_raising\_hand: Required user level: System Administrator …

---

## [Modify trust level for all users](https://meta.discourse.org/t/modify-trust-level-for-all-users/103628)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [March 9, 2016, 8:58am UTC](https://meta.discourse.org/t/modify-trust-level-for-all-users/103628 "2016-03-09T08:58:35Z")

</div>

Here’s an example of a bulk operation to set the trust level to 2 for all users currently at trust level 0 or 1: This is slow, but properly triggers all side effects (group membership updates, badge grants, and logging)…

---

## [Apply auto-close to existing topics](https://meta.discourse.org/t/apply-auto-close-to-existing-topics/70450)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [September 20, 2017, 2:44pm UTC](https://meta.discourse.org/t/apply-auto-close-to-existing-topics/70450 "2017-09-20T14:44:41Z")

</div>

:bookmark: This documentation provides instructions on how to apply the auto-close feature to existing topics using a specific script. When you configure categories in Discourse to auto-close topics, this setting appl…

---

## [Move Uploads and Backups to DigitalOcean Block Storage](https://meta.discourse.org/t/move-uploads-and-backups-to-digitalocean-block-storage/89274)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 6\
**Last updated:** [January 3, 2025, 5:04pm UTC](https://meta.discourse.org/t/move-uploads-and-backups-to-digitalocean-block-storage/89274 "2025-01-03T17:04:50Z")

</div>

So you want to move all uploads and backups to DigitalOcean Block Storage? Before you do this, though, you might instead consider Configure an S3 compatible object storage provider for uploads. It is no more complicated…

---

## [Logout all users through the rails console](https://meta.discourse.org/t/logout-all-users-through-the-rails-console/93239)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [July 26, 2018, 10:13pm UTC](https://meta.discourse.org/t/logout-all-users-through-the-rails-console/93239 "2018-07-26T22:13:01Z")

</div>

To logout all users, enter the rails console and then run UserAuthToken.destroy\_all Last edited by @JammyDodger 2024-05-25T11:35:07Z (UTC) ▶ Check document

---

## [Award a non-custom badge through the console](https://meta.discourse.org/t/award-a-non-custom-badge-through-the-console/103269)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [December 2, 2018, 1:17am UTC](https://meta.discourse.org/t/award-a-non-custom-badge-through-the-console/103269 "2018-12-02T01:17:00Z")

</div>

:bookmark: This guide explains how to award a non-custom badge through the Discourse console. :person\_raising\_hand: Required user level: System Administrator :warning: Console access required In specific scenarios, …

---

## [Delete all the likes](https://meta.discourse.org/t/delete-all-the-likes/65102)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [June 26, 2017, 2:54am UTC](https://meta.discourse.org/t/delete-all-the-likes/65102 "2017-06-26T02:54:55Z")

</div>

:bookmark: This guide explains how to remove all existing likes on your Discourse instance. It’s intended for users with console access. :person\_raising\_hand: Required user level: System Administrator :warning: Consol…

---

## [Change ownership of all posts by a specific user](https://meta.discourse.org/t/change-ownership-of-all-posts-by-a-specific-user/48921)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [August 20, 2016, 3:30pm UTC](https://meta.discourse.org/t/change-ownership-of-all-posts-by-a-specific-user/48921 "2016-08-20T15:30:02Z")

</div>

:bookmark: This guide outlines the process to change the ownership of all posts by a specific user. This task requires console access. :person\_raising\_hand: Required user level: Server administrator with SSH access I…

---

## [Enable Badge SQL](https://meta.discourse.org/t/enable-badge-sql/47894)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [July 27, 2016, 11:18pm UTC](https://meta.discourse.org/t/enable-badge-sql/47894 "2016-07-27T23:18:24Z")

</div>

:bookmark: This guide explains how to enable Badge SQL in Discourse and discusses the associated security and performance risks. :person\_raising\_hand: Required user level: Administrator :warning: Enabling Badge SQL ca…

---

## [Rebake all posts matching a pattern](https://meta.discourse.org/t/rebake-all-posts-matching-a-pattern/48713)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 1\
**Last updated:** [May 30, 2024, 11:18pm UTC](https://meta.discourse.org/t/rebake-all-posts-matching-a-pattern/48713 "2024-05-30T23:18:42Z")

</div>

:bookmark: This guide provides instructions on how to rebake all posts in Discourse that match a specific string or regular expression, utilizing the Rails console for additional advanced options. :person\_raising\_hand: …

[Previous page](https://meta.discourse.org/c/documentation/self-hosting/55.md)

[Next page](https://meta.discourse.org/c/documentation/self-hosting/55.md?page=2)
