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:

1 curtida

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
13 curtidas

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

7 curtidas

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! :sunglasses:

3 curtidas

:scream: :family_man_woman_girl_boy:

6 curtidas

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.

6 curtidas

rake site_settings:import < settings.yml
SĂł queria mencionar a versĂŁo Docker deste comando:
d/rake "site_settings:import < settings.yml"
caso vocĂŞ receba

O dispositivo de entrada nĂŁo Ă© um TTY
3 curtidas

Olá @pfaffman
Tentei exatamente como indicado… ./discourse-settings-uploader https://discourse.example.com d35989078a system site_settings.json

Mas meu script falha e nĂŁo tenho certeza do motivo ou de como corrigir.
Ele retorna E! 404 Not Found para cada configuração.

@Ravi_Teja_Varma,

Removi sua captura de tela, pois ela inclui sua chave de API. Sinta-se à vontade para adicionar outra captura que não contenha (ou que ofusque) os dados sensíveis. Você também deve rotacionar a chave, já que ela ficou pública e deve ser tratada como comprometida.

Obrigado pelo acompanhamento imediato. A partir de agora, cuidarei de tais práticas.

Se você estiver recebendo um erro 404, sua chave de API está incorreta ou não está onde o script pode encontrá-la.

Verifiquei isso. E todas as minhas APIs estĂŁo funcionando com a mesma chave.
E tenho certeza de que o script deve estar procurando no local correto, pois a instrução de log tem URLs como

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

Baixei o site_settings.json de um site e agora estou tentando enviar as configurações para um site2 existente. Devo fazer alguma edição no site_settings.json que baixei?

Estranho. Desculpe, mas essa é a melhor resposta gratuita que posso dar. Você pode me enviar uma mensagem se tiver um orçamento.

Existe uma tarefa de rake que vocĂŞ pode tentar se estiver auto-hospedado em ambos os sites.

Não uso esse script mais atualmente. Pode ser que algo no Discourse tenha mudado, mas duvido. Se você tem certeza de que está usando a chave de API do site para o qual está tentando escrever, então não tenho nenhuma suposição.

1 curtida

Tentei usar rake site_settings:export > settings.yml. Percebi que as tags e os grupos de tags que configurei no meu servidor Discourse nĂŁo foram exportados. Por que isso aconteceu?

Tags são tags, não configurações do site. Não tenho conhecimento de nenhuma maneira de migrar tags.

1 curtida

Existe uma maneira de também exportar as configurações para plugins componentes de tema?

1 curtida