# Back up only the settings

**URL:** https://meta.discourse.org/t/back-up-only-the-settings/395448
**Category:** Feature
**Created:** [February 7, 2026, 9:24pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448 "2026-02-07T21:24:11Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![Willy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/willy/32/499930_2.png) [@Willy](https://meta.discourse.org/u/Willy)
#### Post date: [February 7, 2026, 9:24pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/1 "2026-02-07T21:24:11Z")

</div>

According to the link there is interest but several years have passed and I don’t know if they actually implemented it or not.

> [@Backup only Site Settings](https://meta.discourse.org/t/backup-only-site-settings/78150/3):
>
> I believe @techapj has expressed interest in this feature but we do not have it yet.

A very useful scenario for this is to configure a VPS server with the exact same settings as the production server, and this cloned VPS would be solely for development. This way, I can work more effectively with my team of developers.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [February 7, 2026, 11:50pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/2 "2026-02-07T23:50:25Z")

</div>

Hmm… did you see the solution @pfaffman posted?

> [@Backup only Site Settings](https://meta.discourse.org/t/backup-only-site-settings/78150/5):
>
> Save [https://yoursite/admin/site\_settings.json](https://yoursite/admin/site_settings.json). Use [GitHub - pfaffman/discourse-settings-uploader: Install a Discourse settings JSON file to a site · GitHub](https://github.com/pfaffman/discourse-settings-uploader) to upload them. To install these settings to another site Do this: ./discourse-settings-uploader HOSTURL API\_KEY API\_USER SETTINGS\_FILE For example: ./discourse-settings-uploader https://discourse.example.com d35989078a system site\_settings.json One caveat: It uploads only settings that are marked as changed. This means that if there’s…

---

<div class="post-metadata">

### Author: ![Willy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/willy/32/499930_2.png) [@Willy](https://meta.discourse.org/u/Willy)
#### Post date: [February 8, 2026, 7:39pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/3 "2026-02-08T19:39:50Z")

</div>

It’s not a native solution, and the repository makes it clear that it might fail.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [February 8, 2026, 10:57pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/4 "2026-02-08T22:57:06Z")

</div>

You can use Administrative Bulk Operations (link from the README):

> [@Administrative Bulk Operations](https://meta.discourse.org/t/administrative-bulk-operations/118349/1):
>
> ## Export/Import
> 
> ### Export/Import all site settings
> 
> * * *
> 
> To simply print out all of the settings that have been changed on your site, run:
> 
> ```plaintext
> rake site_settings:export
> 
> ```
> 
> If you want to export the settings to a file:
> 
> ```plaintext
> rake site_settings:export > saved_settings.yml
> 
> ```
> 
> If you want to import settings from a file:
> 
> ```plaintext
> rake site_settings:import < saved_settings.yml
> 
> ```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [February 9, 2026, 2:06pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/5 "2026-02-09T14:06:39Z")

</div>

> [@Willy](#):
>
> A very useful scenario for this is to configure a VPS server with the exact same settings as the production server, and this cloned VPS would be solely for development. This way, I can work more effectively with my team of developers.

You need much more than just the settings to see that stuff works. Why not just restore the production database to staging? See [Set up a staging server](https://meta.discourse.org/t/set-up-a-staging-server/225951).

---

<div class="post-metadata">

### Author: ![Willy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/willy/32/499930_2.png) [@Willy](https://meta.discourse.org/u/Willy)
#### Post date: [February 10, 2026, 3:53am UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/6 "2026-02-10T03:53:29Z")

</div>

One question: does that also clone the forum credentials and content? Because obviously the developers don’t need that, just the basic configuration to develop the plugins. I don’t want them to have access to my users’ accounts, much less the Administrator accounts.

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [February 10, 2026, 4:03am UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/7 "2026-02-10T04:03:41Z")

</div>

> [@Willy](#):
>
> does that also clone the forum credentials and content?

Yes - it clones absolutely everything. If you’ve got untrusted devs, then it might not be the best thing. Personally, I’d get trusted devs!

As is, you would need to commit to cloning the structure in there that you need (e.g. settings, categories, groups, plugins, etc) and either maintaining it in sync manually, re-cloning it when needed, or developing your own solution to automate it.

Good luck!

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [February 10, 2026, 9:26am UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/8 "2026-02-10T09:26:59Z")

</div>

> [@Willy](#):
>
> Because obviously the developers don’t need that

Then mabye export structure is close to what you need. It doesn’t export content

> <https://github.com/discourse/discourse/blob/d2fef861e4bcd79ad562faea01388467dbb2fcab/lib/tasks/site.rake#L96-L97>

> <https://github.com/discourse/discourse/blob/d2fef861e4bcd79ad562faea01388467dbb2fcab/lib/tasks/site.rake#L334-L335>

---

<div class="post-metadata">

### Author: ![Willy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/willy/32/499930_2.png) [@Willy](https://meta.discourse.org/u/Willy)
#### Post date: [February 10, 2026, 11:23pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/9 "2026-02-10T23:23:59Z")

</div>

> [@Moin](#):
>
> `(settings, groups, categories, tags, themes, etc)`

Can I choose what to export, right? What are all the available options? “etc.” doesn’t help much.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [February 11, 2026, 5:39am UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/10 "2026-02-11T05:39:09Z")

</div>

> [@Willy](#):
>
> Can I choose what to export, right

No.

There is no etc.

It exports

- settings
- admin users
- groups
- categories
- tags/tag groups
- themes/theme components/settings

> [@nathank](#):
>
> Yes - it clones absolutely everything. If you’ve got untrusted devs, then it might not be the best thing. Personally, I’d get trusted devs!

Even if you trust your devs there can be regulations (like GDPR) that forbid you to share personal information with people outside a certain jurisdiction or that require you to minimize the amount of personal information that is copied to another system. Additionally, a development or staging server runs untested software which might contain security issues.

We always run something like this on the staging server immediately after restoring the backup from production, which anonymizes all users except staff and those in the `testusers` group.

```plaintext
keep_groups = Group.where(name: ['staff', 'testusers']).pluck(:id)
acting_user = User.find(-1)
User.all.each do |u|
  next if u.in_any_groups? keep_groups
  user = UserAnonymizer.new(u, acting_user).make_anonymous
end

```

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [February 11, 2026, 10:43pm UTC](https://meta.discourse.org/t/back-up-only-the-settings/395448/11 "2026-02-11T22:43:31Z")

</div>

That is very clever!

Should we roll that into the explainer about staging servers?
