Is it possible, after tuning Discourse on local computer, to export all settings into file and upload them into production?
Thanks.
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. ![]()
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?
For future reference some problems I had using discourse-settings-uploader, getting 301 errors:
./discourse-settings-uploader community.mysite.com 22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b system site-settings.json
SiteSettingtitle="Mysite"
E! 301 Moved Permanently
I get this error once for each setting. But I can browse the site successfully at those URLs. So I figured out - it’s going through http, and that is disabled.
So now I add https to my site name and I get a different error:
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"}
So this boils down to a deficient local configuration of root certificates, it seems. I could go off and waste an afternoon on this, but instead what I did was turn off verify_ssl. It’s very insecure and horrible things will happen to you and your children and your children’s children but for this case, I just didn’t care.
So in the uploader script I added this method:
def put_no_ssl(url, payload, headers={}, &block)
RestClient::Request.execute(method: :put, url: url, :payload => payload, headers: headers, verify_ssl: false, &block)
end
And below, I changed the call from
r = RestClient.put(url, my_hash)
to
r = put_no_ssl(url, my_hash)
And it worked! 
![]()
Hello community,
I need to export the site settings from the production to the staging. I found this instruction Discourse-Settings Uploader, created a json file with settings but do not have a possibility to import it. I do not know where I can run this command
./discourse-settings-uploader HOSTURL API_KEY API_USER SETTINGS_FILE
Should it be done via terminal? My client told me that they use a community discourse and do not have terminal access. What does it mean? How is it better to solve my issue? I am pretty new to this, so I need your help.
Thank you in advance.
Have a look at Backup only Site Settings. You need to download the script from github and have Ruby installed.
rake site_settings:import < settings.yml
Nur zur Info, hier ist die Docker-Version dieses Befehls:
d/rake "site_settings:import < settings.yml"
Falls folgende Meldung erscheint:
Das Eingabegerät ist kein TTY
Hey @pfaffman
Ich habe es genau so versucht, wie angegeben… ./discourse-settings-uploader https://discourse.example.com d35989078a system site_settings.json
Aber mein Skript schlägt fehl, und ich bin mir nicht sicher, warum und wie.
Es meldet für jede Einstellung E! 404 Not Found.
Ich habe deinen Screenshot entfernt, da er deinen API-Schlüssel enthält. Du kannst gerne einen anderen Screenshot hinzufügen, der keine sensiblen Daten enthält oder diese verschleiert. Da der Schlüssel öffentlich war, solltest du ihn außerdem rotieren, da er als kompromittiert gilt.
Vielen Dank für die sofortige Rückmeldung. Ich werde solche Vorgehensweisen ab sofort beachten.
Wenn Sie eine 404 erhalten, ist Ihr API-Schlüssel falsch oder nicht dort, wo das Skript ihn finden kann.
Ich habe das geprüft. Alle meine APIs funktionieren mit demselben Schlüssel. Und ich bin mir sicher, dass das Skript den richtigen Ort sucht, da die Log-Ausgaben URLs wie
{url}/admin/site_settings/title
{url}/admin/site_settings/site_description
enthalten.
Ich habe site_settings.json von einer Seite heruntergeladen und versuche nun, die Einstellungen auf eine bestehende Seite2 zu übertragen. Sollte ich die heruntergeladene site_settings.json bearbeiten?
Seltsam. Entschuldigung, aber das ist meine beste kostenlose Antwort. Du kannst mir eine Nachricht senden, wenn du ein Budget hast.
Es gibt einen Rake-Auftrag, den du ausprobieren kannst, wenn du auf beiden Seiten selbst gehostet bist.
Ich benutze dieses Skript heutzutage selbst nicht mehr. Es könnte sein, dass sich etwas in Discourse geändert hat, aber ich bezweifle es. Wenn du sicher bist, dass du den API-Schlüssel für die Seite verwendest, auf die du schreiben möchtest, dann habe ich keine Vermutung.
Ich habe versucht, rake site_settings:export > settings.yml auszuführen. Mir ist aufgefallen, dass die Tags und Tag-Gruppen, die ich auf meinem Discourse-Server konfiguriert habe, nicht exportiert wurden. Warum ist das so?
Tags sind Tags, keine Seiteneinstellungen. Mir ist kein Weg bekannt, Tags zu migrieren.
Gibt es eine Möglichkeit, die Einstellungen auch für Plugins Theme-Komponenten zu exportieren?