How can I import/export settings into a file?

Is it possible, after tuning Discourse on local computer, to export all settings into file and upload them into production?

Thanks.

I guess probably you can export your settings from DB.

discourse=>\dt
...
...
 public | single_sign_on_records     | table | discourse
 public | site_customizations        | table | discourse
 public | site_settings              | table | discourse
 public | stylesheet_cache           | table | discourse
...
...

Notice site_settings table. You can also take this data from your backup. It already have a dump of your database inside it.

Then all you need to do is restore this table to your server from your local dump. :thumbsup:

Courtesy of @blake we now have rake tasks to export/import site settings:

rake site_settings:export > settings.yml
rake site_settings:import < settings.yml

For those who do not have access to rake tasks, I also have contributed a settings uploader that uses the API: GitHub - pfaffman/discourse-settings-uploader: Install a Discourse settings JSON file to a site

Hello,

I’ve used discourse-settings-uploader to upload site_settings.json file from the GitHub Jay mentioned. I get this error when I run it:

./discourse-settings-uploader:39:in `<main>': undefined method `each' for nil:NilClass (NoMethodError)

line39: settings['site_settings'].each do |setting|
line40:  jsetting (setting) unless setting['value'] == setting['default']
line41: end

I used an API key for “All Users” and used “system” when I ran discourse-settings-uploader.
Any thoughts?

Per riferimento futuro, ecco alcuni problemi che ho avuto utilizzando discourse-settings-uploader, ottenendo errori 301:

./discourse-settings-uploader community.mysite.com 22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b system site-settings.json
SiteSettingtitle="Mysite"
E! 301 Moved Permanently

Ho ricevuto questo errore una volta per ogni impostazione. Tuttavia, riesco a navigare sul sito con successo a quegli URL. Ho quindi capito che il problema era dovuto al fatto che stava passando attraverso http, che è disabilitato.

Quindi ora ho aggiunto https al nome del mio sito e ho ottenuto un errore diverso:

SiteSettingtitle="My sIte"
E! SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
something's wrong with https://community.mysite.com/admin/site_settings/title {"title"=>"Mysite", :api_key=>"22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b ec6d3b", :api_username=>"system"}

Quindi tutto si riduce a una configurazione locale insufficiente dei certificati root, sembra. Potrei perdere un pomeriggio a risolvere questo problema, ma invece ho disattivato verify_ssl. È molto insicuro e cose terribili accadranno a te, ai tuoi figli e ai figli dei tuoi figli, ma in questo caso semplicemente non mi importava.

Quindi nello script di caricamento ho aggiunto questo metodo:

def put_no_ssl(url, payload, headers={}, &block)
  RestClient::Request.execute(method: :put, url: url, :payload => payload, headers: headers, verify_ssl: false, &block)
end

E qui sotto, ho modificato la chiamata da

r = RestClient.put(url, my_hash)

a

r = put_no_ssl(url, my_hash)

E ha funzionato! :sunglasses:

:scream: :family_man_woman_girl_boy:

Ciao community,
ho bisogno di esportare le impostazioni del sito dalla produzione allo staging. Ho trovato questa istruzione: Discourse-Settings Uploader, ho creato un file JSON con le impostazioni, ma non ho la possibilitĂ  di importarlo. Non so dove eseguire questo comando:
./discourse-settings-uploader HOSTURL API_KEY API_USER SETTINGS_FILE
Dovrebbe essere fatto tramite terminale? Il mio cliente mi ha detto che utilizzano una community Discourse e non hanno accesso al terminale. Cosa significa? Qual è il modo migliore per risolvere il mio problema? Sono piuttosto nuovo in questo, quindi ho bisogno del vostro aiuto.
Grazie in anticipo.

Dai un’occhiata a Backup only Site Settings - #5 by pfaffman. Devi scaricare lo script da GitHub e avere Ruby installato.

rake site_settings:import < settings.yml

Volevo solo menzionare la versione Docker di questo comando:

d/rake "site_settings:import < settings.yml"

nel caso riceviate

L'input device non è un TTY

Ciao @pfaffman
Ho provato esattamente come indicato… ./discourse-settings-uploader https://discourse.example.com d35989078a system site_settings.json

Ma il mio script fallisce e non sono sicuro del perchĂŠ o di come.
Restituisce E! 404 Not Found per ogni impostazione

@Ravi_Teja_Varma,

Ho rimosso lo screenshot poichĂŠ includeva la tua chiave API. Sentiti libero di aggiungerne un altro che non contenga (o che oscuri) i dati sensibili. Dovresti anche ruotare la chiave, dato che essendo stata resa pubblica, va considerata compromessa.

Grazie per il riscontro immediato. D’ora in avanti mi occuperò di tali pratiche.

Se ricevi un errore 404, significa che la tua chiave API è errata o non si trova nella posizione in cui lo script può individuarla.

Ho verificato questo. Tutte le mie API funzionano con la stessa chiave.
Sono certo che lo script stia cercando nel posto giusto, dato che le istruzioni di registro mostrano URL come

{url}/admin/site_settings/title
{url}/admin/site_settings/site_description

Ho scaricato site_settings.json da un sito e ora sto cercando di applicare le impostazioni su un sito esistente chiamato site2. Dovrei apportare modifiche al file site_settings.json che ho scaricato?

Strano. Mi dispiace, ma è la mia migliore risposta gratuita. Puoi scrivermi se hai un budget.

C’è un task rake che puoi provare se sei self-hosted su entrambi i siti.

Non uso piĂš quello script di persona. Potrebbe essere che qualcosa in Discourse sia cambiato, ma ne dubito. Se sei sicuro di utilizzare la chiave API per il sito su cui stai cercando di scrivere, allora non ho alcuna ipotesi.

Ho provato a usare rake site_settings:export > settings.yml. Ho notato che i tag e i gruppi di tag configurati sul mio server Discourse non vengono esportati. PerchĂŠ?

I tag sono tag, non impostazioni del sito. Non sono a conoscenza di un modo per migrare i tag.

C’è un modo per esportare anche le impostazioni per i plugin componenti del tema?