Ich habe kürzlich Discourse auf einem Ubuntu Focal Fossa VPS installiert, und es funktioniert hervorragend. Allerdings habe ich Schwierigkeiten, einige URL-Sonderheiten zu beheben.
Das folgende Verhalten beobachte ich (in Safari). Ich habe bei meinem Registrar A-NAME-Einträge für @, WWW und * erstellt.
example.com [zeigt die Seite „Willkommen bei nginx!“ an] FEHLGESCHLAGEN
www.example.com [leitet auf https://example.com weiter] ERFOLGREICH
http://example.com [zeigt die Seite „Willkommen bei nginx!“ an] FEHLGESCHLAGEN
http://www.example.com [leitet auf https://example.com weiter und funktioniert einwandfrei] ERFOLGREICH
https://example.com [funktioniert wie erwartet, keine Umleitung] ERFOLGREICH
https://www.example.com [liefert die Fehlermeldung „Diese Verbindung ist nicht privat“] FEHLGESCHLAGEN
Ich möchte, dass meine Installation im Root-/Apex-Bereich läuft, daher habe ich bei der Einrichtung example.com eingegeben.
Betreiben Sie einen externen Nginx auf dem Discourse-Server? Warum?
Discourse wird bereits mit einem vorkonfigurierten Nginx ausgeliefert, der diese Aufgabe übernimmt, sofern Sie es so einrichten, dass es auf die Ports 80 und 443 lauscht.
Hallo @Falco, danke für deine Antwort. Mir ist nichts bekannt, nein. Das Image des VPS-Anbieters heißt einfach „Focal Fossa Clean OS“, was vermutlich bedeutet, dass es keine Tools von Drittanbietern enthält.
Dies ist eine Installation direkt aus dem Kasten, wie sie im veröffentlichten „30-Minuten“-Installationsweg beschrieben wird.
sudo su
wget -qO- https://get.docker.com/ | sh
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
./discourse-setup
Gerne, danke. Könnte es Probleme geben, wenn meine Domain eine ungewöhnliche TLD hat? (Es ist eine .community).
## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSSEN Sie neu aufbauen
## /var/discourse/launcher rebuild app
##
## SEIEN SIE *SEHR* VORSICHTIG BEI DER BEARBEITUNG!
## YAML-DATEIEN SIND EXTREM EMPFINDLICH GEGENÜBER FEHLERN IN LEERZEICHEN ODER AUSRICHTUNG!
## Besuchen Sie http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Kommentieren Sie diese beiden Zeilen aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## Welche TCP/IP-Ports sollte dieser Container exponieren?
## Wenn Sie möchten, dass Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
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 bootstrap basierend auf dem erkannten RAM gesetzt, oder Sie können überschreiben
db_shared_buffers: "768MB"
## Kann die Sortierleistung verbessern, erhöht aber die Speichernutzung pro Verbindung
#db_work_mem: "40MB"
## Welche Git-Revision sollte dieser Container verwenden? (Standard: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt von Speicher und CPU-Kernen ab.
## wird automatisch durch bootstrap basierend auf den erkannten CPUs gesetzt, oder Sie können überschreiben
UNICORN_WORKERS: 8
## TODO: Der Domainname, auf den diese Discourse-Instanz reagieren wird
## Erforderlich. Discourse funktioniert nicht mit einer bloßen IP-Nummer.
DISCOURSE_HOSTNAME: 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-Mails, die bei der ersten Registrierung zu Administratoren und Entwicklern gemacht werden
## Beispiel 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'email@gmail.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: smtp.postmarkapp.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: username
DISCOURSE_SMTP_PASSWORD: "password"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (von einigen Anbietern erforderlich)
## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
LETSENCRYPT_ACCOUNT_EMAIL: email@gmail.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 Maxmind-Geolokalisierungs-IP-Schlüssel für die IP-Adressen-Nachschlage
## siehe https://meta.discourse.org/t/-/137387/23 für Details
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## 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
## Alle benutzerdefinierten Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn Sie die 'Von'-E-Mail-Adresse für Ihre erste Registrierung festlegen möchten, kommentieren Sie aus und ändern Sie:
## Nach Erhalt der ersten Anmelde-E-Mail diesen Kommentar entfernen. Es muss nur einmal ausgeführt werden.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Ende der benutzerdefinierten Befehle"
und
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
465fbf1c3fb8 local_discourse/app "/sbin/boot" 47 minutes ago Up 46 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app
Okay, ich bin offensichtlich ein Idiot. Ich habe es über mein Handy mit 4G getestet (um den lokalen DNS zu prüfen) – alle diese URLs funktionierten einwandfrei. Als ich mich wieder mit dem WLAN verbunden habe, funktionierte alles ebenfalls. Also habe ich daraufhin den Cache von Safari auf dem Desktop gelöscht und – schwupps – funktioniert dort auch alles.
Das muss von der Zeit stammen, als ich den Host ursprünglich getestet habe, und der Cache wurde seitdem nicht geleert. Vielen Dank für deine Hilfe beim Troubleshooting und entschuldige bitte, dass ich deine Zeit in Anspruch genommen habe.
fwiw bin ich heute auf dasselbe Problem mit Ubuntu 22.04 gestoßen. Das Leeren des Safari-Caches und das Aktualisieren haben das Problem ebenfalls behoben.