SMTP in Docker-Container konfigurieren

Wenn ich Discourse über Helm-Charts bereitstelle

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/discourse

funktioniert alles wie erwartet, aber ich kann die SMTP-E-Mail-Konfiguration im Docker-Container nicht ändern.

Wenn ich versuche, dies zu replizieren, wechsle ich in den Container und führe aus

cd /opt/bitnami/discourse/config

in diesem Verzeichnis finde ich die Datei discourse.conf, aber ich kann sie nicht ändern, da zum Beispiel angegeben wird, dass vi nicht verfügbar ist.

Haben Sie Vorschläge, was ich tun könnte?

Sie können in deren Forum fragen. Außer, dass sie es geschlossen haben.

Oder Sie können eine Standardinstallation durchführen und hier Hilfe erhalten.

Sie können Umgebungsvariablen festlegen. Sie können sich die Beispiele ansehen.

Hallo @pfaffman , vielen Dank für deine Eingabe.

Ich weiß jetzt, wie ich Umgebungsvariablen in das Bitnami Helm-Diagramm einbringen kann.

Angesichts der SMTP-Zugangsdaten meines Anbieters für transaktionale E-Mails Sendinblue

weißt du, wie die Umgebungsvariablen aussehen, die ich an den Discourse-Container übergeben muss?

Wenn Sie versuchen, ein reguläres Gmail-Konto zum Senden von E-Mails zu verwenden, verstößt dies gegen die Nutzungsbedingungen und funktioniert aus mehreren anderen Gründen nicht.

Es gibt ein Beispiel für SMTP-Umgebungsvariablen in

1 „Gefällt mir“

Hallo @pfaffman @Falco

vielen Dank für eure Beiträge.

So sehen meine Umgebungsvariablen aus:

discourse:
  extraEnvVars:
    - name: DISCOURSE_SMTP_ADDRESS
      value: "smtp-relay.sendinblue.com"
    - name: DISCOURSE_SMTP_PORT
      value: "587"
    - name: DISCOURSE_NOTIFICATION_EMAIL
      value: "no-reply@my-domain.com"
    - name: DISCOURSE_SMTP_USER_NAME
      value: "my-email@googlemail.com"
    - name: DISCOURSE_SMTP_PASSWORD
      value: "my-pw"
    - name: DISCOURSE_SMTP_DOMAIN
      value: "my-domain.com"

Danach ist der Container hochgefahren. Ich habe versucht, eine Test-E-Mail von der Admin-Oberfläche an mein Gmail-Konto zu senden. Dies ist, was ich erhalten habe:

Es funktioniert also bisher nicht.

Dies sind die Protokolle des Discourse-Containers:

Processing by Admin::UsersController#show as JSON
  Parameters: {"id"=>"1"}
Completed 200 OK in 1978ms (Views: 0.6ms | ActiveRecord: 0.0ms | Allocations: 195416)
Started GET "/groups/search.json" for 10.0.0.50 at 2022-08-10 11:55:05 +0000
Processing by GroupsController#search as JSON
Completed 200 OK in 1189ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 133325)
Started GET "/admin/email.json" for 10.0.0.50 at 2022-08-10 11:55:17 +0000
Processing by Admin::EmailController#index as JSON
Completed 200 OK in 23ms (Views: 1.2ms | ActiveRecord: 0.0ms | Allocations: 864)
Started POST "/admin/email/test" for 10.0.0.50 at 2022-08-10 11:55:20 +0000
Processing by Admin::EmailController#test as */*
  Parameters: {"email_address"=>"test@gmail.com"}
Completed 422 Unprocessable Entity in 20ms (Views: 1.1ms | ActiveRecord: 0.0ms | Allocations: 2037)
Started GET "/about.json" for 10.0.0.47 at 2022-08-10 11:55:46 +0000
Processing by AboutController#index as JSON
Completed 200 OK in 67ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 9503)
Started GET "/site/basic-info.json" for 10.0.0.47 at 2022-08-10 11:55:46 +0000
Processing by SiteController#basic_info as JSON
Completed 200 OK in 254ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 33103)
Started GET "/site/basic-info.json" for 10.0.0.47 at 2022-08-10 11:55:47 +0000
Processing by SiteController#basic_info as JSON
Completed 200 OK in 80ms (Views: 0.8ms | ActiveRecord: 0.0ms | Allocations: 4260)

Wissen Sie, was ich anders machen könnte?

Sie können den laufenden Container betreten und Folgendes ausführen:

message = TestMailer.send_test("test@gmail.com")
Email::Sender.new(message, :test_message).send

und die ausgelöste Ausnahme untersuchen, um Hinweise zu erhalten.

1 „Gefällt mir“

Dies ist, was von der ersten Zeile kommt

bash: syntax error near unexpected token `('

Sie müssen zuerst in die Rails-Konsole wechseln. Gehen Sie zum Discourse-Verzeichnis und geben Sie rails c ein.

1 „Gefällt mir“

Das ist, was ich dann bekomme

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# rails c
bash: rails: command not found
root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# ls
Brewfile         Gemfile.lock  adminjs  config.ru                  docs                 lefthook.yml  package.json             plugins  test            yarn.lock
CONTRIBUTING.md  LICENSE.txt   app      d                          images               lib           passenger.3000.pid.lock  public   tmp
COPYRIGHT.md     README.md     bin      db                         install-imagemagick  licenses      passenger.8080.pid       script   translator.yml
Gemfile          Rakefile      config   discourse.sublime-project  jsapp                log           passenger.8080.pid.lock  spec     vendor

Okay, ich habe jetzt Folgendes ausgeführt

RAILS_ENV=production bundle exec rails c

irb(main):002:0> message = TestMailer.send_test("test@gmail.com")
Traceback (most recent call last):
        2: from app/mailers/test_mailer.rb:7:in `send_test'
        1: from lib/email/build_email_helper.rb:8:in `build_email'
ArgumentError (:arguments expected to be an Array of individual string args)

Auch das hier funktioniert nicht:

root@discourse-69c7f5475c-h9qf5:/opt/bitnami/discourse# RAILS_ENV=production bundle exec rails c message = TestMailer.send_test("test@gmail.com")
bash: syntax error near unexpected token `('

Mache ich hier etwas falsch?

Weird, this works just fine on my install:

[5] pry(main)> message = TestMailer.send_test("test@gmail.com")
  TranslationOverride Exists? (0.8ms)  SELECT 1 AS one FROM "translation_overrides" WHERE "translation_overrides"."locale" = 'en' AND "translation_overrides"."translation_key" = 'test_mailer.subject_template' LIMIT 1
  (0.2ms)  SELECT "translation_overrides"."translation_key", "translation_overrides"."value" FROM "translation_overrides" WHERE "translation_overrides"."locale" = 'en'
TestMailer#send_test: processed outbound mail in 259.9ms
=> #<Mail::Message:212740, Multipart: false, Headers: <From: "Discourse" <noreply@unconfigured.discourse.org>>, <Reply-To: "Discourse" <noreply@unconfigured.discourse.org>>, <To: test@gmail.com>, <Subject: [Discourse] Email Deliverability Test>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <X-Auto-Response-Suppress: All>, <Auto-Submitted: auto-generated>>

Since you are using an unsupported-install packaged by Bitnami, it’s expected for it to be broken on subtle ways. We do not support such installs here, so you will want to reach out to their own support channel at GitHub · Where software is built.

1 „Gefällt mir“

Hallo @Falco, vielen Dank für deine Rückmeldung.

Was meinst du mit nicht unterstützten Installationen? Ich bin gerne bereit, mehr unterstützte Installationen zu verwenden. :slight_smile:

Kann ich dann trotzdem alles mit einem Helm-Chart erledigen?

Das kannst du nicht. Nur die offizielle Installation wird unterstützt. Siehe Kann Discourse häufige Docker-Images versenden, die nicht gebootstrappt werden müssen?.

Ich habe letzte Woche jemandem bei einer K8s-Installation geholfen. Es hat mich und ein paar talentierte Ingenieure über 6 Stunden gekostet (aber es könnten auch 10 gewesen sein, die Zeit, die sie ohne mich verbrachten, nicht mitgerechnet), um sie mit ihren Werkzeugen zum Laufen zu bringen.

Ich habe darüber nachgedacht, Images zu erstellen, die von einem Helm-Chart gestartet werden sollten, aber das habe ich noch nicht getan. Wenn du ein Budget hast, kontaktiere mich bitte per PN oder E-Mail und ich kann dir vielleicht helfen.

2 „Gefällt mir“