Banging my head against an inexplicable (to me) problem which has arisen when moving off sandbox mailgun SMTP to a new domain.
A few hours ago I switched the URL setting in app.yml to the new domain, and install is working fine. Then I moved to email settings and changed necessary settings in app.yml to the Mailgun settings for my verified domain (all DNS is good to do in Mailgun).
Instead of seeing the SMTP settings I saved in app.yml, I’m only seeing one line under “Delivery Method” that shows “Arguments -i”. Here’s a screenshot:
No errors in logs but browser console is reporting “Failed to load resource: the server responded with a status of 502 (Bad Gateway)”. However, this seems to be an intermittent error. Saw it once this morning and have not seen it again.
app.yml is valid and pasted below (FYI, I had to remove all links since I’m not allowed to post more than two URLs as a new user…)
## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## which TCP/IP ports should this container expose?
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Set db_shared_buffers to a max of 25% of the total memory.
## will be set automatically by bootstrap based on detected RAM, or you can o$
db_shared_buffers: "256MB"
## can improve sorting performance, but adds memory usage per-connection
#db_work_mem: "40MB"
## Which Git revision should this container use? (default: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## How many concurrent web requests are supported? Depends on memory and CPU $
## will be set automatically by bootstrap based on detected CPUs, or you can $
UNICORN_WORKERS: 4
## TODO: The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: caldata.net
## Uncomment if you want the container to be started with the same
## hostname (-h option) as specified above (default "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: List of comma delimited emails that will be made admin and developer
## on initial signup example 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'lawrence@civicmakers.com'
## TODO: The SMTP mail server used to validate new accounts and send notifica$
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@caldata.net
DISCOURSE_SMTP_PASSWORD: XXXXXXX
DISCOURSE_SMTP_ENABLE_START_TLS: false # (optional, default true)
## If you added the Lets Encrypt template, uncomment below to get a free SSL $
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## The CDN address for this Discourse instance (configured to pull)
#DISCOURSE_CDN_URL: [REMOVED]
## The Docker container is stateless; all data is stored in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins go here
env:
SEGMENT_IO_KEY: XXXXXXX
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone [REMOVED]
- git clone [REMOVED]
## Any custom commands to run after building
run:
- exec: echo "Beginning of custom commands"
## If you want to set the 'From' email address for your first registration, u$
## After getting the first signup email, re-comment the line. It only needs t$
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse$
- exec: echo "End of custom commands"
The only thing I haven’t seen before is SEGMENT_IO_KEY. I’m assuming that’s related to this plugin? https://github.com/kylewelsby/discourse-segment-io-plugin Does the error still occur when the plugin is removed from your app.yml?
Thanks, Joshua. For the code pasting tip, and the response.
Yep, that’s a plugin for Segment.io, and the mail settings were working when I was using Mailgun’s sandbox SMTP settings and had that same plugin installed. I can try commenting that out of app.yml and see what happens, but m y guess is that’s not the problem. Will let you know if anything changes when I have a chance to try that later.
I’ve also now tried going back to Mailgun sandbox SMTP settings and creating a Sparkpost account and using those SMTP settings. Still only seeing the “arguments -i” line in the email settings admin page.
I’m totally confused. Anyone have any ideas on what else I can try?
You are redefining the “env” key (which is defined earlier) and thus all of the “DISCOURSE_” settings are gone…
To fix it, you need to move the “SEGMENT_IO_KEY” under the “#DISCOURSE_CDN_URL” line, like so
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
# [...]
## The CDN address for this Discourse instance (configured to pull)
#DISCOURSE_CDN_URL: [REMOVED]
SEGMENT_IO_KEY: XXXXXXX
## The Docker container is stateless; all data is stored in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
@zogstrip Thank you! That did it. I saw the extra “env” statement there, but didn’t stop to think it would redeclare all environment variables. Thanks again, it’s a relief to see my SMTP settings back