# \#how-to

**URL:** https://meta.discourse.org/tag/how-to/478.md

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

---

## [Creating and managing polls](https://meta.discourse.org/t/creating-and-managing-polls/77548)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 26\
**Last updated:** [September 22, 2026, 6:02am UTC](https://meta.discourse.org/t/creating-and-managing-polls/77548 "2026-09-22T06:02:19Z")

</div>

:bookmark: This guide explains how to create polls in Discourse to gather votes from users on any topic. :person\_raising\_hand: Required user level: All users :information\_source: By default, polls are enabled in Di…

---

## [Move from standalone container to separate web and data containers](https://meta.discourse.org/t/move-from-standalone-container-to-separate-web-and-data-containers/29413)

<div class="topic-metadata">

**Author:** [@5minpause](https://meta.discourse.org/u/5minpause)\
**Replies:** 138\
**Last updated:** [September 21, 2026, 4:23pm UTC](https://meta.discourse.org/t/move-from-standalone-container-to-separate-web-and-data-containers/29413 "2026-09-21T16:23:04Z")

</div>

:warning: This is an advanced setup. Don’t follow this unless you are experienced with Linux server administration and Docker. You also need to pay close attention to commits to discourse\_docker to make sure you notice …

---

## [Configure your domain name for hosted Discourse](https://meta.discourse.org/t/configure-your-domain-name-for-hosted-discourse/21827)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [November 4, 2014, 10:08pm UTC](https://meta.discourse.org/t/configure-your-domain-name-for-hosted-discourse/21827 "2014-11-04T22:08:46Z")

</div>

:bookmark: This guide explains how to change the domain name of your Discourse-hosted site, whether you want to switch to a different discourse.group address or configure a custom domain you own. …

---

## [Configure an S3 compatible object storage provider for uploads](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 267\
**Last updated:** [September 15, 2026, 1:04am UTC](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916 "2026-09-15T01:04:57Z")

</div>

:information\_source: This topic covers how to configure some common S3 compatible Object Storage providers (S3 clones). See Set up file and image uploads to S3 for more details about Amazon AWS S3 configuration, whic…

---

## [Add settings to your Discourse theme](https://meta.discourse.org/t/add-settings-to-your-discourse-theme/82557)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 6\
**Last updated:** [July 8, 2025, 7:43pm UTC](https://meta.discourse.org/t/add-settings-to-your-discourse-theme/82557 "2025-07-08T19:43:17Z")

</div>

Discourse has the ability for themes to have “settings” that can be added by theme developers to allow site owners to customize themes through UI without having to change any line of code and worry about losing their cha…

---

## [Copy backups to another server with rsync and cron](https://meta.discourse.org/t/copy-backups-to-another-server-with-rsync-and-cron/124346)

<div class="topic-metadata">

**Author:** [@johncs](https://meta.discourse.org/u/johncs)\
**Replies:** 8\
**Last updated:** [September 9, 2026, 7:35am UTC](https://meta.discourse.org/t/copy-backups-to-another-server-with-rsync-and-cron/124346 "2026-09-09T07:35:44Z")

</div>

I have a backup server that coordinates backups across many servers. I want my backup server to grab Discourse backups from my forum’s server. I gave some thought to how I’d allow the backup server to access the backup …

---

## [Set up Discourse for development on Fedora Linux](https://meta.discourse.org/t/set-up-discourse-for-development-on-fedora-linux/163348)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 13\
**Last updated:** [June 19, 2026, 5:20am UTC](https://meta.discourse.org/t/set-up-discourse-for-development-on-fedora-linux/163348 "2026-06-19T05:20:22Z")

</div>

This guide has been tested against a fresh install of Fedora 31 and 33, but may work on older versions that also use dnf as the package management tool. This is not an official guide but may be useful for other developer…

---

## [Install Discourse on Windows for development](https://meta.discourse.org/t/install-discourse-on-windows-for-development/75149)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 16\
**Last updated:** [April 22, 2026, 10:18am UTC](https://meta.discourse.org/t/install-discourse-on-windows-for-development/75149 "2026-04-22T10:18:42Z")

</div>

:information\_source: This tutorial has been tested on Windows 10 and 11. To set up a development environment for Discourse on Windows, you can do it using Windows Subsystem for Linux feature. This setup requires the …

---

## [Install Discourse on Ubuntu or Debian for Development](https://meta.discourse.org/t/install-discourse-on-ubuntu-or-debian-for-development/14727)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 83\
**Last updated:** [June 22, 2025, 12:31am UTC](https://meta.discourse.org/t/install-discourse-on-ubuntu-or-debian-for-development/14727 "2025-06-22T00:31:14Z")

</div>

:warning: This guide covers installation instructions in a development environment. For a production guide see: Install Discourse in production with the official supported instructions So you want to set up Discour…

---

## [Install Discourse on macOS for development](https://meta.discourse.org/t/install-discourse-on-macos-for-development/15772)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 102\
**Last updated:** [April 24, 2026, 6:38pm UTC](https://meta.discourse.org/t/install-discourse-on-macos-for-development/15772 "2026-04-24T18:38:20Z")

</div>

:warning: This guide covers installation instructions for a macOS development environment, for production guides see: Install Discourse in production with the official supported instructions So you want to set up Disc…

---

## [How to back up and restore your hosted Discourse site](https://meta.discourse.org/t/how-to-back-up-and-restore-your-hosted-discourse-site/404408)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [September 7, 2026, 12:33pm UTC](https://meta.discourse.org/t/how-to-back-up-and-restore-your-hosted-discourse-site/404408 "2026-09-07T12:33:46Z")

</div>

:bookmark: This guide explains the difference between the automated backups Discourse manages for its hosting infrastructure and the site-level backups you create and download for your Discourse-hosted site. It covers h…

---

## [Configuring AWS SES for outgoing, bounce, and incoming email](https://meta.discourse.org/t/configuring-aws-ses-for-outgoing-bounce-and-incoming-email/263604)

<div class="topic-metadata">

**Author:** [@dlambert](https://meta.discourse.org/u/dlambert)\
**Replies:** 13\
**Last updated:** [September 4, 2026, 3:30pm UTC](https://meta.discourse.org/t/configuring-aws-ses-for-outgoing-bounce-and-incoming-email/263604 "2026-09-04T15:30:14Z")

</div>

I thought I’d share the configuration I came up with to use AWS SES for outgoing, bounce, and incoming email. There’s definitely some nuance to the SES service, and it took a good deal of trial and error to understand ex…

---

## [Merging user accounts](https://meta.discourse.org/t/merging-user-accounts/275288)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 5\
**Last updated:** [September 3, 2026, 2:39pm UTC](https://meta.discourse.org/t/merging-user-accounts/275288 "2026-09-03T14:39:41Z")

</div>

:bookmark: This guide explains how to merge multiple user accounts into a single Discourse account. It covers merging non-staff users through the Discourse UI and merging staff users via the console. …

---

## [(not recommended) Overriding Discourse templates from a Theme or Plugin](https://meta.discourse.org/t/not-recommended-overriding-discourse-templates-from-a-theme-or-plugin/247487)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 9\
**Last updated:** [March 7, 2024, 1:20pm UTC](https://meta.discourse.org/t/not-recommended-overriding-discourse-templates-from-a-theme-or-plugin/247487 "2024-03-07T13:20:54Z")

</div>

Ideally, when customizing Discourse via themes/plugins, you should use CSS, the JavaScript Plugin API, or plugin outlets. If none of these work for your use-case, feel free to open a PR to Discourse core or start a Devel…

---

## [Using Plugin Outlet Connectors from a Theme or Plugin](https://meta.discourse.org/t/using-plugin-outlet-connectors-from-a-theme-or-plugin/32727)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 12\
**Last updated:** [October 14, 2024, 10:37am UTC](https://meta.discourse.org/t/using-plugin-outlet-connectors-from-a-theme-or-plugin/32727 "2024-10-14T10:37:16Z")

</div>

Discourse includes hundreds of Plugin Outlets which can be used to inject new content or replace existing contend in the Discourse UI. ‘Outlet arguments’ are made available so that content can be customized based on the …

---

## [Setup Continuous Integration using GitHub Actions](https://meta.discourse.org/t/setup-continuous-integration-using-github-actions/240150)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 8\
**Last updated:** [March 3, 2025, 9:12am UTC](https://meta.discourse.org/t/setup-continuous-integration-using-github-actions/240150 "2025-03-03T09:12:26Z")

</div>

:mag: Overview To build a robust extension for Discourse, it can be wise to include Continuous Integration (CI) into your plugin or theme-component. This will help to detect errors early on and lessen the chances of bugs…

---

## [How to run Discourse core, plugin and theme QUnit test suites](https://meta.discourse.org/t/how-to-run-discourse-core-plugin-and-theme-qunit-test-suites/66857)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [July 26, 2017, 2:09pm UTC](https://meta.discourse.org/t/how-to-run-discourse-core-plugin-and-theme-qunit-test-suites/66857 "2017-07-26T14:09:58Z")

</div>

Discourse has extensive frontend tests for core, plugins and themes. Once you have a functioning local development environment, those tests can be run locally in a number of different ways. Running tests in the browser C…

---

## [Automatically lint and format code before commits](https://meta.discourse.org/t/automatically-lint-and-format-code-before-commits/132947)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [November 8, 2019, 5:16pm UTC](https://meta.discourse.org/t/automatically-lint-and-format-code-before-commits/132947 "2019-11-08T17:16:12Z")

</div>

Discourse uses lefthook for git hooks, and bin/lint as the main CLI entry point for running the same checks manually. If you are working in a local clone, install the hooks once: pnpm install pnpm lefthook install Aft…

---

## [Discourse AI - Spam detection](https://meta.discourse.org/t/discourse-ai-spam-detection/343541)

<div class="topic-metadata">

**Author:** [@sam](https://meta.discourse.org/u/sam)\
**Replies:** 31\
**Last updated:** [August 28, 2026, 1:39am UTC](https://meta.discourse.org/t/discourse-ai-spam-detection/343541 "2026-08-28T01:39:29Z")

</div>

:bookmark: This guide explains how to configure and use Discourse AI’s spam detection feature, including the setup process, scanning criteria, classification logic, customizations, and contrasts with AI triage. …

---

## [Setup Multisite Configuration with Let's Encrypt and no Reverse Proxy](https://meta.discourse.org/t/setup-multisite-configuration-with-lets-encrypt-and-no-reverse-proxy/175285)

<div class="topic-metadata">

**Author:** [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Replies:** 24\
**Last updated:** [August 27, 2026, 11:12am UTC](https://meta.discourse.org/t/setup-multisite-configuration-with-lets-encrypt-and-no-reverse-proxy/175285 "2026-08-27T11:12:24Z")

</div>

These instructions should be considered beta and for those familiar with a standard setup But right now (2023.02.11) these instructions do not work!! (See Set up Let’s Encrypt with multiple domains / redirects for how to…

---

## [Configuring Discourse for a closed or private community](https://meta.discourse.org/t/configuring-discourse-for-a-closed-or-private-community/27014)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 3\
**Last updated:** [August 22, 2026, 2:19pm UTC](https://meta.discourse.org/t/configuring-discourse-for-a-closed-or-private-community/27014 "2026-08-22T14:19:56Z")

</div>

:bookmark: This guide explains how to configure Discourse for a closed or private community, including setting login requirements, user approval processes, and invite-only access. :person\_raising\_hand: Required user le…

---

## [Objects type for theme setting](https://meta.discourse.org/t/objects-type-for-theme-setting/305009)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 32\
**Last updated:** [April 13, 2026, 1:45am UTC](https://meta.discourse.org/t/objects-type-for-theme-setting/305009 "2026-04-13T01:45:38Z")

</div>

We are introducing a new type: objects to the supported types for theme settings which can be used to replace the existing json\_schema type which we intend to deprecate soon. Defining an objects type theme setting To cr…

---

## [Move topics from one Discourse instance to another](https://meta.discourse.org/t/move-topics-from-one-discourse-instance-to-another/38930)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 7\
**Last updated:** [August 20, 2026, 7:16pm UTC](https://meta.discourse.org/t/move-topics-from-one-discourse-instance-to-another/38930 "2026-08-20T19:16:58Z")

</div>

Need to move some stuff from one instance of Discourse to another? There is a command line tool to export a topic, a set of topics, or an entire category, and another to import them in at the other end. Topic Export/I…

---

## [Migrate a XenForo forum to Discourse](https://meta.discourse.org/t/migrate-a-xenforo-forum-to-discourse/45232)

<div class="topic-metadata">

**Author:** [@Cyb3r](https://meta.discourse.org/u/Cyb3r)\
**Replies:** 93\
**Last updated:** [August 16, 2026, 1:55pm UTC](https://meta.discourse.org/t/migrate-a-xenforo-forum-to-discourse/45232 "2026-08-16T13:55:56Z")

</div>

Hey guys so after trying for a week or so I decided to import the database on docker app which I hoped it will succeed without any issues. TBH I got some issues at first but it turned to be all easy to solve. Now I woul…

---

## [Creating and managing calendars](https://meta.discourse.org/t/creating-and-managing-calendars/283773)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 17\
**Last updated:** [August 14, 2026, 8:52pm UTC](https://meta.discourse.org/t/creating-and-managing-calendars/283773 "2026-08-14T20:52:44Z")

</div>

:bookmark: This guide explains how to create and manage calendars in Discourse using the Calendar (and Event) plugin. :person\_raising\_hand: Required user level: All users Calendars are a powerful feature in Discourse…

---

## [Sending messages to all users on a Discourse site](https://meta.discourse.org/t/sending-messages-to-all-users-on-a-discourse-site/229341)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 8\
**Last updated:** [August 13, 2026, 3:39pm UTC](https://meta.discourse.org/t/sending-messages-to-all-users-on-a-discourse-site/229341 "2026-08-13T15:39:40Z")

</div>

:bookmark: This guide explains how to send a private message or email to all users on your Discourse site, including using an external email service or creating an Announcements category. :person\_raising\_hand: Required…

---

## [Discourse AI - Large Language Model (LLM) settings page](https://meta.discourse.org/t/discourse-ai-large-language-model-llm-settings-page/319903)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 1\
**Last updated:** [September 30, 2024, 5:16pm UTC](https://meta.discourse.org/t/discourse-ai-large-language-model-llm-settings-page/319903 "2024-09-30T17:16:20Z")

</div>

:bookmark: This guide covers the LLM settings page which is part of the Discourse AI plugin. :person\_raising\_hand: Required user level: Administrator The dedicated settings page is designed to have everything related…

---

## [Move your Discourse Instance to a Different Server](https://meta.discourse.org/t/move-your-discourse-instance-to-a-different-server/15721)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 11\
**Last updated:** [August 11, 2026, 8:28am UTC](https://meta.discourse.org/t/move-your-discourse-instance-to-a-different-server/15721 "2026-08-11T08:28:07Z")

</div>

:bookmark: This is a guide for moving your Discourse instance from one server to another, including all settings and data. This guide applies to self-hosted Discourse instances using Docker. :person\_raising\_hand: Requi…

---

## [Set up Gemini API Keys for Discourse AI](https://meta.discourse.org/t/set-up-gemini-api-keys-for-discourse-ai/320688)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 2\
**Last updated:** [August 6, 2026, 2:03am UTC](https://meta.discourse.org/t/set-up-gemini-api-keys-for-discourse-ai/320688 "2026-08-06T02:03:34Z")

</div>

How to Set Up Gemini API Keys for Discourse AI Introduction This topic covers how to set up your Google Gemini API key with an existing Google Cloud account project. Gemini is not a free service, and therefore, you …

---

## [Switching between Discourse release channels / versions](https://meta.discourse.org/t/switching-between-discourse-release-channels-versions/17014)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 12\
**Last updated:** [August 3, 2026, 1:09pm UTC](https://meta.discourse.org/t/switching-between-discourse-release-channels-versions/17014 "2026-08-03T13:09:32Z")

</div>

:bookmark: This guide explains how to configure the release channel of your Discourse instance. :person\_raising\_hand: Required user level: System Administrator :warning: Console access is required. Managing your Dis…

[Next page](https://meta.discourse.org/tag/how-to/478.md?match_all_tags=true&page=1&tags%5B%5D=how-to)
