Ich versuche, mit der 1-Klick-App von Digital Ocean eine Neuinstallation durchzuführen.
Dies ist das dritte Mal, dass ich sie von vorne erstelle, und ich erlebe dasselbe Problem.
Beim Prüfen der DNS-Einstellungen sehe ich, dass meine Domain auf die IP des Droplets zeigt, aber Discourse wird auf meiner Domain nicht angezeigt.
Ich habe discourse-doctor ausgeführt, und es bleibt hängen, bevor die Information „Domain wird bedient/nicht bedient
@merefield Ich habe gerade einen neuen Droplet erstellt und die Installation wie in der offiziellen Anleitung beschrieben durchgeführt. Ich habe immer noch exakt das gleiche Problem.
Das ist eine völlig frische Installation mit dem offiziellen Installer. Ich kann nicht herausfinden, was hier los sein könnte. Gibt es irgendwelche Hinweise?
Also, ich sehe, dass es versucht, auf /shared/ssl zuzugreifen, aber tatsächlich befindet sich das SSL unter shared/standalone/ssl. Wie sollte ich das beheben?
Das Problem liegt meist daran, dass die DNS-Einstellungen nicht korrekt konfiguriert sind oder sich noch nicht propagiert haben. Wenn du deine URL teilst, könnte jemand sie überprüfen.
Ich verwende oft https://dnschecker.org/#A/example.com, um dies zu prüfen.
Wenn du jedoch bereits mehrfach versucht hast, hast du wahrscheinlich die maximale Anzahl an Zertifikatsanfragen bei Let’s Encrypt ausgeschöpft. Ich gehe zu 90 % davon aus, dass dies dein aktuelles Problem ist. Du könntest zwar einen „Trick
@pfaffman Ja, klingt plausibel! Trotzdem kann ich es nicht erstellen, aber ich kann es auf einer anderen Domain erstellen. Da die DNS-Abfrage zeigt, dass ich mit dem richtigen Server verbunden bin und so weiter, gehe ich davon aus, dass es sich um den von dir beschriebenen Fall handelt. Ich warte noch ein paar Tage und versuche es erneut.
Danke
@pfaffman Kannst du mir beim Betrügen helfen? Ich habe mir angesehen, wie man es mit mehreren Domains einrichtet, aber ich bin mir nicht sicher, was du gemeint hast. Meinst du, dass man den after_ssl-Hook irgendwie verwendet?
Du fügst einfach eine weitere Domain hinzu. Wenn dein Forum also forum.example.com ist, fügst du einen DNS-Eintrag für cheat.example.com hinzu, der auf deinen Server zeigt, und fügst ihn wie dort beschrieben hinzu. Da es sich um eine separate Zertifikatsanfrage handelt, kannst du diese anfordern.
Oder er kann eine Domain oder Subdomain mit diesem Trick hinzufügen. Ein einfacher Weg, um das Problem zu umgehen, wenn man das Kontingent erreicht hat. Um jedoch die Kontingentgrenzen nicht zu überschreiten, ist es immer am besten, die Testumgebung mit --dryrun zu nutzen. (Hinweis: Let’s Encrypt arbeitet derzeit möglicherweise daran, --dryrun in etwas zu ändern, das für Nicht-Muttersprachler leichter zu erkennen ist, wie zum Beispiel --test oder --testrun. Höchstwahrscheinlich wird das nicht vor Januar 2021 oder später geschehen. Zudem arbeiten sie an einer vollständigen Überarbeitung ihrer Anleitungen.
Die empfohlene Methode zum Hinzufügen einer neuen Domain zu einem bestehenden Zertifikat besteht tatsächlich darin, den ursprünglichen Befehlszeilenaufruf erneut zu verwenden, die neue Domain mit einem weiteren -d-Flag hinzuzufügen und --expand anzufügen, um certbot anzuweisen, keine neue Linie zu erstellen (was zu einem neuen Unterverzeichnis in /etc/letsencrypt/live führen würde).
Das Problem hier ist, dass man erst zu spät merkt, dass es sich um einen Test handelt. Außerdem ist es selbst für mich nicht klar, wie man Discourse so konfiguriert, dass es diese Zertifikate im Testmodus lädt.
Das ist einer der Gründe, warum sie (bei Let’s Encrypt) ihre Anleitungen umschreiben, um sie verständlicher zu machen. Sobald man eingerichtet ist, um über die Testumgebung ein Testzertifikat (simuliert) zu erhalten, kann man Certbot im Produktionsmodus ausführen und sein CA-Zertifikat beziehen. Danach lässt sich Discourse installieren, und es sollte das neue (erweiterte) CA-Zertifikat automatisch übernehmen.
Das ist es nicht. Es geht darum, dass es etwa dreimal (oder vielleicht sogar zehnmal) so schwierig ist, herauszufinden, wie man eine Konfigurationszeile in eine app.yml einfügt, um diesen Schalter hinzuzufügen – so offensichtlich es auch sein mag – als die Installation von Discourse. Man müsste die app.yml bearbeiten, eine komplizierte Sache hinzufügen und dabei alle Leerzeichen genau richtig setzen? Warten Sie einfach eine Woche oder wählen Sie einen neuen Namen.
@pfaffman Ich habe einen neuen Namen gewählt, wie ich beschrieben habe. Ein Problem war, dass cheat.example.com ein CNAME statt eines A-Eintrags sein sollte.
Es funktioniert trotzdem noch nicht. Ich werde es noch etwas länger versuchen.
EDIT: Zur Referenz hier ist meine app.yml:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Diese beiden Zeilen kommentieren Sie aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Setzen Sie db_shared_buffers auf maximal 25 % des gesamten Speichers.
## Wird automatisch durch das Bootstrap-System basierend auf dem erkannten RAM festgelegt, oder Sie können es überschreiben
db_shared_buffers: "256MB"
## Kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch pro Verbindung
#db_work_mem: "40MB"
## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
# DISCOURSE_RELATIVE_URL_ROOT: /forum
## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt vom Speicher und den CPU-Kernen ab.
## Wird automatisch durch das Bootstrap-System basierend auf den erkannten CPUs festgelegt, oder Sie können es überschreiben
UNICORN_WORKERS: 4
## TODO: Der Domainname, auf den diese Discourse-Instanz antworten soll
## Erforderlich. Discourse funktioniert nicht mit einer reinen IP-Nummer.
DISCOURSE_HOSTNAME: cheat.example.com
## Kommentieren Sie dies aus, wenn Sie möchten, dass der Container mit demselben
## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Liste der durch Komma getrennten E-Mail-Adressen, die bei der ersten Anmeldung als Administrator und Entwickler festgelegt werden
## Beispiel 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'emails@emails.com'
## TODO: Der SMTP-Mailserver, der zur Validierung neuer Konten und zum Senden von Benachrichtigungen verwendet wird
# SMTP-Adresse, Benutzername und Passwort sind erforderlich
# WARNUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
DISCOURSE_SMTP_ADDRESS: smtpout.secureserver.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: some@email.com
DISCOURSE_SMTP_PASSWORD: "apassword"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard: true)
## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## Die http- oder https-CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
## siehe https://meta.discourse.org/t/14857 für Details
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d cheat.example.com --expand"
Letztendlich verging eine Woche, und ich konnte meine Domain wieder nutzen. Wahrscheinlich lag ein Fehler in der Konfiguration vor, um sie mit der Subdomain funktionsfähig zu machen, da ich nach dem Lesen bei Let’s Encrypt ziemlich sicher bin, dass dies die Lösung ist.
Nochmals vielen Dank an @pfaffman und @JimPas für die Hilfe und die informativen Antworten!