# Sysadmins

**URL:** https://meta.discourse.org/c/wiki/sysadmins/180.md

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

---

## [Sysadmins Index](https://meta.discourse.org/t/sysadmins-index/322725)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [August 21, 2024, 2:22pm UTC](https://meta.discourse.org/t/sysadmins-index/322725 "2024-08-21T14:22:24Z")

</div>

Migrating to Discourse SMF2: Migrate an SMF2 forum to Discourse Vanilla: Migrate a Vanilla forum to Discourse PunBB: Migrate a PunBB forum to Discourse Kunena 3: Migrate a Kunena 3 forum to Discourse Phorum: Migrate a P…

---

## [Recommended Hosting Providers for Self Hosters](https://meta.discourse.org/t/recommended-hosting-providers-for-self-hosters/79562)

<div class="topic-metadata">

**Author:** [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Replies:** 118\
**Last updated:** [February 24, 2026, 12:43pm UTC](https://meta.discourse.org/t/recommended-hosting-providers-for-self-hosters/79562 "2026-02-24T12:43:22Z")

</div>

This guide is intended for people who are not system administrators who just want to make Discourse work. This is a list of cloud hosting services that are believed to be reliable and easy enough for a novice to get up a…

---

## [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 …

---

## [Mutisite and Cloudflare R2 Objects](https://meta.discourse.org/t/mutisite-and-cloudflare-r2-objects/412414)

<div class="topic-metadata">

**Author:** [@kcahtoor](https://meta.discourse.org/u/kcahtoor)\
**Replies:** 0\
**Last updated:** [September 15, 2026, 2:26am UTC](https://meta.discourse.org/t/mutisite-and-cloudflare-r2-objects/412414 "2026-09-15T02:26:41Z")

</div>

Using Cloudflare R2 on just one site in a Discourse multisite install If you run a multisite Discourse install and only want one of your sites on Cloudflare R2 (uploads, backups, and optionally static assets), the standa…

---

## [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 …

---

## [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…

---

## [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…

---

## [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…

---

## [MKJ's Opinionated Discourse Deployment Configuration](https://meta.discourse.org/t/mkjs-opinionated-discourse-deployment-configuration/193355)

<div class="topic-metadata">

**Author:** [@mcdanlj](https://meta.discourse.org/u/mcdanlj)\
**Replies:** 46\
**Last updated:** [August 7, 2026, 3:56pm UTC](https://meta.discourse.org/t/mkjs-opinionated-discourse-deployment-configuration/193355 "2026-08-07T15:56:28Z")

</div>

I have been running a Discourse forum with a substantial amount of content and plenty of images over the past few years. Maker Forums has over 100GB of images and over 400,000 posts, of which a substantial amount was imp…

---

## [Install Discourse on a residential internet with Cloudflare Tunnel](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297)

<div class="topic-metadata">

**Author:** [@Falco](https://meta.discourse.org/u/Falco)\
**Replies:** 69\
**Last updated:** [July 27, 2026, 4:10pm UTC](https://meta.discourse.org/t/install-discourse-on-a-residential-internet-with-cloudflare-tunnel/211297 "2026-07-27T16:10:47Z")

</div>

Since Discourse now has support for running on a Raspberry Pi, running a small instance in your home lab will become a common use case. However, many residential ISPs block incoming traffic to the ports 80/443 that Disco…

---

## [Resolve the issue where all user IPs in Discourse deployed with 1Panel show as coming from Cloudflare instead of the user's real browser IP](https://meta.discourse.org/t/1panel-discourse-ip-cloudflare-ip/402038)

<div class="topic-metadata">

**Author:** [@sniper756](https://meta.discourse.org/u/sniper756)\
**Replies:** 1\
**Last updated:** [July 3, 2026, 2:33pm UTC](https://meta.discourse.org/t/1panel-discourse-ip-cloudflare-ip/402038 "2026-07-03T14:33:02Z")

</div>

I installed 1Panel on my VPS, deployed Discourse (via container), and set up a reverse proxy using OpenResty (via container). The domain is hosted on Cloudflare with CDN (orange cloud) enabled. Below is the solution to the issue where user IPs appear as coming from Cloudflare instead of the user's actual browser IP. 1. Create a scheduled task in 1Panel to download the latest Cloudflare IP list weekly and save it to the OpenResty configuration directory. Click “Scheduled Tasks” in the left menu bar of 1Panel. …

---

## [@ Top-level domain redirects to www](https://meta.discourse.org/t/www/400583)

<div class="topic-metadata">

**Author:** [@Lxk520](https://meta.discourse.org/u/Lxk520)\
**Replies:** 6\
**Last updated:** [April 16, 2026, 6:04pm UTC](https://meta.discourse.org/t/www/400583 "2026-04-16T18:04:50Z")

</div>

Use sudo to temporarily elevate privileges and edit app.yml cd /var/discourse sudo nano /containers/app.yml Edit the Discourse configuration file app.yml You only need to configure the Discourse configuration file app.yml to define the primary domain and alias relationships: DISCOURSE\_HOSTNAME: 'www.discourse.cc' # Your primary domain (final access address) DISCO…

---

## [Any random subdomain redirects to www](https://meta.discourse.org/t/www/400584)

<div class="topic-metadata">

**Author:** [@Lxk520](https://meta.discourse.org/u/Lxk520)\
**Replies:** 2\
**Last updated:** [April 14, 2026, 3:23pm UTC](https://meta.discourse.org/t/www/400584 "2026-04-14T15:23:07Z")

</div>

Redirect Random Subdomains to www Obtain an Alibaba Cloud AccessKey (using Alibaba Cloud as an example; apply for your own key). AccessKey ID: LTAI5tQCfDcVcghn5 AccessKey Secret: J8ZayXB44MIWa1Mfnj Install acme.sh cd ~ curl https://get.acme.sh | sh Switch the default CA to Let's Encrypt, then reapply for the certificate: # Switch the default CA to Let's ...

---

## [Migrate a NodeBB forum with MongoDB to Discourse](https://meta.discourse.org/t/migrate-a-nodebb-forum-with-mongodb-to-discourse/126553)

<div class="topic-metadata">

**Author:** [@enigmaty](https://meta.discourse.org/u/enigmaty)\
**Replies:** 18\
**Last updated:** [March 8, 2026, 2:39pm UTC](https://meta.discourse.org/t/migrate-a-nodebb-forum-with-mongodb-to-discourse/126553 "2026-03-08T14:39:08Z")

</div>

As you properly know, NodeBB supports two DB backends, Redis and MongoDB. Discourse importer script supports them both. In this tutorial, we will learn how to migrate NodeBB with MongoDB as DB backend. We will be using N…

---

## [Customize direct-delivery Postfix configuration](https://meta.discourse.org/t/customize-direct-delivery-postfix-configuration/118759)

<div class="topic-metadata">

**Author:** [@mpalmer](https://meta.discourse.org/u/mpalmer)\
**Replies:** 19\
**Last updated:** [February 14, 2026, 11:28pm UTC](https://meta.discourse.org/t/customize-direct-delivery-postfix-configuration/118759 "2026-02-14T23:28:15Z")

</div>

If you have a mail receiver container which requires customised Postfix configuration, this is the topic for you. Herein are described the steps required to set Postfix main.cf configuration variables to whatever your h…

---

## [Add an offline page to display when Discourse is rebuilding or starting up](https://meta.discourse.org/t/add-an-offline-page-to-display-when-discourse-is-rebuilding-or-starting-up/45238)

<div class="topic-metadata">

**Author:** [@fefrei](https://meta.discourse.org/u/fefrei)\
**Replies:** 140\
**Last updated:** [February 3, 2026, 11:01am UTC](https://meta.discourse.org/t/add-an-offline-page-to-display-when-discourse-is-rebuilding-or-starting-up/45238 "2026-02-03T11:01:35Z")

</div>

:warning: This guide is intended for advanced users, who are already using nginx outside the docker container. By following this guide you make your setup more complicated and will lose some speed benefits like HTTP2 if…

---

## [Configuring AWS's Amazon S3 for storage and Cloudfront for CDNs](https://meta.discourse.org/t/configuring-awss-amazon-s3-for-storage-and-cloudfront-for-cdns/392369)

<div class="topic-metadata">

**Author:** [@philh](https://meta.discourse.org/u/philh)\
**Replies:** 2\
**Last updated:** [January 13, 2026, 5:22pm UTC](https://meta.discourse.org/t/configuring-awss-amazon-s3-for-storage-and-cloudfront-for-cdns/392369 "2026-01-13T17:22:50Z")

</div>

Getting Started You will need: A Discourse instance with app.yml access AWS account Naming Strategy There are many places to make mistakes. Using a naming convention strategy that makes sense to you and perhaps others…

---

## [Deploy Discourse without Docker](https://meta.discourse.org/t/deploy-discourse-without-docker/351194)

<div class="topic-metadata">

**Author:** [@fokx](https://meta.discourse.org/u/fokx)\
**Replies:** 33\
**Last updated:** [January 8, 2026, 5:05pm UTC](https://meta.discourse.org/t/deploy-discourse-without-docker/351194 "2026-01-08T17:05:01Z")

</div>

Though it is more convenient and safer to deploy Discourse following the official install guide, I want to dive deeper into the container and see how it can be deployed in Linux without Docker. I want to share the step…

---

## [Running Discourse with WordPress (Docker) on a single VPS using Nginx Reverse Proxy](https://meta.discourse.org/t/running-discourse-with-wordpress-docker-on-a-single-vps-using-nginx-reverse-proxy/392094)

<div class="topic-metadata">

**Author:** [@thaidb](https://meta.discourse.org/u/thaidb)\
**Replies:** 0\
**Last updated:** [December 24, 2025, 4:14pm UTC](https://meta.discourse.org/t/running-discourse-with-wordpress-docker-on-a-single-vps-using-nginx-reverse-proxy/392094 "2025-12-24T16:14:24Z")

</div>

Introduction By default, a Discourse “standalone” installation binds to ports 80 and 443. To host another application like WordPress on the same server, you must reconfigure Discourse to listen on an internal port and us…

---

## [Some wp-discourse + cloudflare lessons learned](https://meta.discourse.org/t/some-wp-discourse-cloudflare-lessons-learned/391942)

<div class="topic-metadata">

**Author:** [@Lee\_Ars](https://meta.discourse.org/u/Lee_Ars)\
**Replies:** 0\
**Last updated:** [December 22, 2025, 6:06pm UTC](https://meta.discourse.org/t/some-wp-discourse-cloudflare-lessons-learned/391942 "2025-12-22T18:06:12Z")

</div>

Some personal setup-specific lessons I’ve learned in the last few months with Discourse, wp-discourse, and Cloudflare. Sharing in case any of this is useful to anyone. Environment: Discourse & Wordpress hosted on sepa…

---

## [Set up Let’s Encrypt with multiple domains / redirects](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685)

<div class="topic-metadata">

**Author:** [@brahn](https://meta.discourse.org/u/brahn)\
**Replies:** 111\
**Last updated:** [December 16, 2025, 2:52am UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685 "2025-12-16T02:52:10Z")

</div>

NOTE: @pfaffman says: This page needs to be cleaned up. There is now a new ENV setting that will let you add more hostnames. In your app.yml under your DISCOURSE\_HOSTNAME line (it can go many places but that one makes se…

---

## [Discourse AI: Discord Bot Integration Guide](https://meta.discourse.org/t/discourse-ai-discord-bot-integration-guide/390391)

<div class="topic-metadata">

**Author:** [@DevTeVe](https://meta.discourse.org/u/DevTeVe)\
**Replies:** 0\
**Last updated:** [December 4, 2025, 10:07am UTC](https://meta.discourse.org/t/discourse-ai-discord-bot-integration-guide/390391 "2025-12-04T10:07:23Z")

</div>

Disclaimer: I am not the creator of the integration, I can’t provide support for it beyond a best-effort friendly community help, I am just another user that wanted this setup on their site and didn’t find a clear wa…

---

## [Set up a staging server](https://meta.discourse.org/t/set-up-a-staging-server/225951)

<div class="topic-metadata">

**Author:** [@nathank](https://meta.discourse.org/u/nathank)\
**Replies:** 31\
**Last updated:** [November 30, 2024, 11:12am UTC](https://meta.discourse.org/t/set-up-a-staging-server/225951 "2024-11-30T11:12:02Z")

</div>

There are several tricks that can help when you are setting up a staging server. What is a staging server? A staging server is essentially a clone of a production site. It also resides on a server, and functions identic…

---

## [Use rclone to sync to Dropbox (2025)](https://meta.discourse.org/t/use-rclone-to-sync-to-dropbox-2025/378430)

<div class="topic-metadata">

**Author:** [@alltiagocom](https://meta.discourse.org/u/alltiagocom)\
**Replies:** 3\
**Last updated:** [November 11, 2025, 12:00am UTC](https://meta.discourse.org/t/use-rclone-to-sync-to-dropbox-2025/378430 "2025-11-11T00:00:27Z")

</div>

Admins and moderators: feel free to move this topic somewhere else or edit it if necessary. These are extended, step-by-step instructions on how I installed rclone and set up everything to back up my Discourse to Drop…

---

## [Migrate a vBulletin 4 forum to Discourse](https://meta.discourse.org/t/migrate-a-vbulletin-4-forum-to-discourse/54881)

<div class="topic-metadata">

**Author:** [@enigmaty](https://meta.discourse.org/u/enigmaty)\
**Replies:** 183\
**Last updated:** [November 9, 2025, 6:05pm UTC](https://meta.discourse.org/t/migrate-a-vbulletin-4-forum-to-discourse/54881 "2025-11-09T18:05:20Z")

</div>

In this tutorial we will learn how to migrate vBulletin forum to :discourse: platform using vBulletin importer script. I have tested the script with a big database and the result was very good. The script is well writte…

---

## [Detailed installation guide + control panel | Super detailed tutorial for installing discourse + control panel](https://meta.discourse.org/t/detailed-installation-guide-control-panel-discourse/278426)

<div class="topic-metadata">

**Author:** [@zengyunsi](https://meta.discourse.org/u/zengyunsi)\
**Replies:** 33\
**Last updated:** [October 7, 2025, 8:19pm UTC](https://meta.discourse.org/t/detailed-installation-guide-control-panel-discourse/278426 "2025-10-07T20:19:32Z")

</div>

I’m a beginner at building websites. Due to my hobby, I want to build a technical exchange community. I’m preparing to build a Discourse and share this tutorial. I hope it will be helpful to friends who need to install D…

---

## [Step-by-step Discourse migration with R2 and Cloudflare integration](https://meta.discourse.org/t/step-by-step-discourse-migration-with-r2-and-cloudflare-integration/382491)

<div class="topic-metadata">

**Author:** [@hel\_Sinki](https://meta.discourse.org/u/hel_Sinki)\
**Replies:** 0\
**Last updated:** [September 13, 2025, 1:31am UTC](https://meta.discourse.org/t/step-by-step-discourse-migration-with-r2-and-cloudflare-integration/382491 "2025-09-13T01:31:47Z")

</div>

This is a post-mortem/runbook of a real migration. I skip common Discourse prep (the official docs cover it). I focus on the exact switches, Cloudflare R2 gotchas, the rails/rake one-liners that mattered, what failed, an…

---

## [Watched words to block recent spam attack](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420)

<div class="topic-metadata">

**Author:** [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Replies:** 12\
**Last updated:** [September 10, 2025, 4:26pm UTC](https://meta.discourse.org/t/watched-words-to-block-recent-spam-attack/380420 "2025-09-10T16:26:12Z")

</div>

I’ve had at least two sites get hit with a wave of spam that looks like it’s designed to poison LLMs. The same attack has also been reported here at least once (Anyone else currently undergoing mass spam attack?). The be…

---

## [Move a Discourse site to another VPS with rsync](https://meta.discourse.org/t/move-a-discourse-site-to-another-vps-with-rsync/43812)

<div class="topic-metadata">

**Author:** [@SystemZ](https://meta.discourse.org/u/SystemZ)\
**Replies:** 55\
**Last updated:** [August 17, 2025, 10:20pm UTC](https://meta.discourse.org/t/move-a-discourse-site-to-another-vps-with-rsync/43812 "2025-08-17T22:20:11Z")

</div>

This method is different than restoring file in UI. Maybe there is a more downtime but it’s simpler for linux folks without Discourse knowledge and it’s easy to automate. Prepare new VPS First, prepare our new Current …

---

## [Spam: Retroactively get AI to review recent posts and then delete the ones marked as spam](https://meta.discourse.org/t/spam-retroactively-get-ai-to-review-recent-posts-and-then-delete-the-ones-marked-as-spam/378956)

<div class="topic-metadata">

**Author:** [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Replies:** 0\
**Last updated:** [August 17, 2025, 10:09pm UTC](https://meta.discourse.org/t/spam-retroactively-get-ai-to-review-recent-posts-and-then-delete-the-ones-marked-as-spam/378956 "2025-08-17T22:09:43Z")

</div>

I helped out a site that got hit about about 30 spam posts per hour. We turned on AI Spam, but that didn’t solve the problem of the existing posts. Here’s what I did. This might work for you. It’s not tested on your site…

[Next page](https://meta.discourse.org/c/wiki/sysadmins/180.md?page=1)
