
Sprache 🇩🇪 Deutsch
Hintergrund
Erste Schritte
Bereitstellung
Architektur
Installation und Integration
Sicherheitshinweise
Hosting FastComments vor Ort
FastComments bietet mehrere Lösungen für die Bereitstellung. Am häufigsten hosten wir die Anwendung für Sie.
Wir verstehen jedoch, dass einige Kunden ihre Informationen nicht in der Cloud speichern können und verlangen dass alle ihre Daten vor Ort gehostet werden.
Diese Dokumentation behandelt diesen Anwendungsfall.
Was enthalten ist 
FastComments On Prem ermöglicht es Ihnen, unsere Live-Kommentarlösung einschließlich aller Moderations- und Admin-Tools, auf Ihrer eigenen Hardware bereitzustellen.
Das bedeutet, dass Sie die Kontrolle über Ihre Daten haben, und das Kommentarsystem auf Ihr lokales LAN oder das Firmennetzwerk beschränkt werden kann.
Einstieg 
Um mit der Bereitstellung von FastComments On Prem zu beginnen, kontaktieren Sie uns.
Sobald die Einrichtung abgeschlossen ist, können Sie jederzeit das neueste Docker-Image von der Lizenzseite herunterladen.
Instanzen 
Required Components
Für On-Prem besteht FastComments nur aus einem Anwendungsserver und einer Datenbank. Wir haben die Bereitstellung vereinfacht, sodass der Anwendungsserver den gesamten Traffic direkt bedienen kann, ohne weitere Komponenten hinzuzufügen.
Der Anwendungsserver wird in einem Docker-Image bereitgestellt und kann mit jeder Container-Management-Lösung bereitgestellt werden.
Die Datenbank, MongoDB, kann selbst betrieben oder von einem anderen Anbieter wie AWS DocumentDB oder MongoDB Atlas gehostet werden.
FastComments wird derzeit mit MongoDB 7 getestet, wir streben jedoch Kompatibilität mit DocumentDB an, um die Bereitstellung zu erleichtern.
Instance Sizes
Sie werden feststellen, dass FastComments ziemlich gut optimiert ist und für den Anwendungsserver selbst keine großen Maschinen benötigt, um niedrige P99s zu erreichen.
Alle Batch- und Cron-Jobs verwenden Streaming, um den gesamten Speicherverbrauch zu begrenzen.
Die untenstehenden Tabellen für den Anwendungsserver und die Datenbank können bei der Größenplanung helfen.
Application Server Instances
| Concurrent Users | Total Cluster CPUs | Total Cluster Memory |
|---|---|---|
| 100 | 1 | 256mb |
| 1K | 2 | 512mb |
| 10K | 8 | 1gb |
| 100K | 32 | 8gb |
| 1M | 64 | 64gb |
Zum Beispiel verwendet ein einzelner Kern, der etwa 100 Kommentar-Threads pro Sekunde bedient, normalerweise selten mehr als 250mb RSS.
Database Server Instances
Die Größe der Datenbank hängt von der Working-Set-Größe ab, also der Menge an Daten, auf die Sie zu einem bestimmten Zeitpunkt zugreifen, sowie von gleichzeitigen Anfragen.
FastComments ist gegenüber Mongo recht freundlich, da es für die heißen Abfragen Index-Hints, Streaming-Cursor verwendet und an verschiedenen Stellen Concurrency-Limits hat, um eine Überlastung nachgelagerter Systeme zu verhindern.
Die folgende Tabelle ist eine allgemeine Richtlinie für die Größe von Datenbankinstanzen. Beachten Sie, dass dies pro Instanz gilt, nicht die Gesamtressourcen im Cluster.
| Concurrent Users | Comments Stored | CPUs Per Instance | Memory Per Instance |
|---|---|---|---|
| 100 | 1k | 1 | 256mb |
| 1K | 5k | 2 | 512mb |
| 10K | 100k | 8 | 2gb |
| 100K | 500k | 16 | 8gb |
| 1M | 5M | 32 | 32gb |
Die obigen Tabellen sind konservative Schätzungen. Sie werden feststellen, dass die tatsächlichen Anforderungen je nach Ihrer spezifischen Konfiguration (Seitengrößen, Kommentarvolumen usw.) abweichen können.
Konfiguration 
FastComments verwendet Umgebungsvariablen zur Konfiguration. Die folgende Liste beschreibt alle unterstützten Variablen, die für On-Prem relevant sind.
| Variable | Default | Info | Required | Examples or Valid Values |
|---|---|---|---|---|
| NODE_ENV | Umgebungstyp. | Ja | production, dev | |
| MONGO_URI | DB-Verbindungs-URI. | Ja | ||
| MONGO_ENABLE_SSL | false | Aktiviert die Verwendung von SSL zur Verbindung mit der Datenbank. | Nein | true, false |
| MONGO_ENABLE_SSL_VALIDATE | false | Aktiviert die Validierung des Zertifikats gegenüber der CA bei der Verbindung zu Mongo. | Nein | true, false |
| MONGO_SSL_CA | Mongo SSL CA pem Datei. | Nein | /path/to/some-cert.pem | |
| ADMIN_NOTIFICATIONS_EMAIL | E-Mail, an die wichtige systembezogene Benachrichtigungen gesendet werden sollen. | Nein | admin-group@bigcorp.com | |
| IP_HASH_SALT | Salt zum Hashen von IP-Adressen. | Ja | ||
| SESSION_SECRET | Der Schlüssel, mit dem Sessions signiert werden. | Ja | ||
| SESSION_STORE_SECRET | Der Schlüssel, mit dem Sessions im Speicher signiert/gehasht werden. Muss sich von SESSION_SECRET unterscheiden. | Ja | ||
| HOSTNAME | Der Hostname, unter dem FastComments bereitgestellt wird (Admin-Dashboard usw.). Sollte KEINE Port- oder Protokollangabe enthalten. | Ja | example.com | |
| HOST_ADDR | Eine erreichbare URI, unter der FastComments bereitgestellt wird (Admin-Dashboard usw.). | Ja | https://example.com | |
| EMAIL_CONFIG_PATH | Ein Pfad im lokalen Dateisystem, in dem die E-Mail-Konfiguration (SMTP, Domain/Provider-Zuordnungen usw.) liegt. | Ja | /my/config.json | |
| EMAIL_DEFAULT_FROM_NAME | FastComments Robot | E-Mail Header "From Name". | Nein | My Company Name |
| EMAIL_DEFAULT_FOOTER_LOGO | /images/logo-32-2020-01.png | Logo in der E-Mail-Fußzeile. | Nein | https://exmaple.com/footer.png |
| EMAIL_DEFAULT_TRANSPORT | Überschreibung für "defaultTransport" in EMAIL_CONFIG_PATH. Nützlich, um dieselbe Konfigurationsdatei in verschiedenen Umgebungen bereitzustellen. | Nein | myTransportName | |
| ON_PREM_TENANT_ID | Die ID Ihres Kontos auf fastcomments.com. Wird zur Registrierung Ihres Lizenzschlüssels verwendet. | Nein | ||
| ON_PREM_LICENSE_KEY | Ein On-Prem-Lizenzschlüssel. | Nein | ||
| GIPHY_API_KEY | Giphy API-Schlüssel. Falls nicht angegeben, sollten Sie eine Konfigurationsregel erstellen, die den GIF-Picker deaktiviert. | Nein | ||
| GIPHY_DEFAULT_RATING | pg | Wird für die Giphy-Integration verwendet. Kann auch mit Widget-Anpassungsregeln überschrieben werden. | Nein | g, pg, pg-13, r |
| OPENAI_SECRET_KEY | Wird für OpenAI-basierte Funktionen wie optionalen GPT-gestützten Spam-Schutz verwendet. | Nein | ||
| CDN_HOST_ADDR | Der Hostname, von dem Assets abgerufen werden. Standardmäßig der Wert von HOSTNAME. | Nein | example.com | |
| LARGE_FILE_HOST_ADDR | Der Hostname, von dem große Dateien (wie Exporte) abgerufen werden. Standardmäßig der Wert von CDN_HOST_ADDR. | Nein | example.com | |
| LARGE_FILE_LOCATION_TYPE | local_disk | Wo große Dateien, wie Exporte, gespeichert werden sollen. | Nein | local_disk, s3 |
| FROM_EMAIL_HOST | Der Hostname, von dem E-Mails versendet werden sollen. | Nein | example.com | |
| COOKIE_ID | fastcomments.sid | Der Name des fastcomments Cookies. | Nein | |
| COOKIE_HOSTNAME | .fastcomments.com | Der Wert des Cookie-Feldes "hostname". Es wird empfohlen, einen Punkt vorzuschalten. | Nein | .example.com |
| S3_ACCESS_KEY | Wird für Benutzerdatei-Uploads, Avatare usw. verwendet. Standardmäßig lokales Dateisystem, falls undefiniert. | Nein | ||
| S3_SECRET_KEY | Wird für Benutzerdatei-Uploads, Avatare usw. verwendet. | Nein | ||
| S3_REGION | Wird für Benutzerdatei-Uploads, Avatare usw. verwendet. | Nein | ||
| S3_BUCKET | Wird für Benutzerdatei-Uploads, Avatare usw. verwendet. | Nein | ||
| S3_HOST | Wird für Benutzerdatei-Uploads, Avatare usw. verwendet. | Nein | ||
| CACHE_DIR | Speicherort für optionalen Offline-Cache, wenn die DB nicht verfügbar ist. Wird periodisch mit den 100 wichtigsten Kommentar-Threads aktualisiert. | Nein | ||
| BACKUP_DIR | Speicherort für Daten, wenn die DB nicht verfügbar ist. Wenn ein Kommentar eingereicht wird, während die DB nicht verfügbar ist, landet er hier und wird später verarbeitet. | Nein |
Beachten Sie, dass alle domänenbezogenen Variablen das Postfix _HOST oder _ADDR verwenden. Der Unterschied ist:
_HOST:example.com_ADDR:https://example.com
Der EMAIL_CONFIG_PATH sollte einen Pfad zu einer JSON-Datei mit dem folgenden Beispiel-Format enthalten:

Im obigen Beispiel definieren wir einen Standard-SMTP-E-Mail-Transport namens mailgun. Außerdem definieren wir einen speziellen Transport, den wir speziell für @yahoo.com-E-Mails verwenden. In einigen Szenarien ist es wünschenswert, für eine Domain einen bestimmten Provider oder eine bestimmte Versand-IP zu verwenden, um die Zustellung zu optimieren. Dies ist optional.
DocumentDB
Beim Verbinden mit DocumentDB sollten Sie MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem angeben, um mit den Standardeinstellungen kompatibel zu sein.
Datenbankausfall und Wartungsmodus 
FastComments unterstützt einen automatischen Wartungsmodus. Wenn die Datenbank ausfällt, kann es weiterhin beliebte Kommentar-Threads ausliefern.
Zusätzlich werden im Wartungsmodus alle Kommentare in BACKUP_DIR gespeichert. Sie werden verarbeitet (auf Spam geprüft usw.) und gespeichert, sobald das System wieder online ist.
Das geschieht, indem es jede Stunde die 100 beliebtesten Kommentar-Threads bestimmt und deren Inhalte auf der Festplatte zwischenspeichert. Die Bestimmung der 100 beliebtesten Threads wird bereits aus einem vorab berechneten Zustand vorgenommen, daher ist es kein aufwändiger periodischer Job.
Das ist völlig optional und wird nur aktiviert, wenn CACHE_DIR und BACKUP_DIR gesetzt sind. Dadurch werden die Anwendungs-Knoten natürlich zustandsbehaftet, jedoch handelt es sich um einen Zustand, der
jederzeit verloren gehen kann, ohne dass die Anwendung Fehlverhalten zeigt.
Beachte, dass im Wartungsmodus eine ordnungsgemäße Authentifizierung von Kommentar-Threads nicht möglich ist, daher werden nur Threads, die sicher als öffentlich gelten, periodisch gesichert.
Im Wartungsmodus sind viele Funktionen nicht verfügbar.
Sperren 
Wie jedes verteilte System benötigt FastComments eine Möglichkeit, Ressourcen und Abläufe zu sperren. Diese Sperren können über den Endpunkt /locks-in-progress überwacht werden.
Zum Beispiel ist hier der Endpunkt auf unserem US-Shard.
Dies kann nützlich sein, um zu sehen, warum das System festhängt oder unter Last steht. Wenn beispielsweise ein SRE herausfinden möchte, warum das System eine hohe CPU-Auslastung hat, könnte man diesen Endpunkt abfragen, um den Namen des fehlverhaltenden Cron-Jobs zu erhalten.
Widget-Code 
Die Frontend-Code-Snippets und Bibliotheken für On-Prem sind dieselben wie beim SaaS-Produkt. Sie müssen jedoch apiHost und den korrekten Skriptpfad angeben:

Das Obige ist ein sehr einfaches Beispiel. Wir könnten auch die First-Party-Bibliotheken für React, Angular, Vue, Svelte usw. verwenden.
API 
Die API kann genauso wie beim regulären SaaS-Produkt genutzt werden, indem Sie sich im On-Prem dashboard anmelden, API-Schlüssel erstellen und diese Schlüssel verwenden, um auf die API zuzugreifen.
Die API Endpunkte sind on-prem dieselben wie beim SaaS-Produkt.
Mehrere Domains 
Ihre On-Prem FastComments-Installation kann Kommentare für mehrere interne Domains bereitstellen, zum Beispiel app.mycorp.org und hr.mycorp.org. Sie können diese
separat konfigurieren, aber auf einer einzigen On-Prem-Installation hosten, indem Sie separate Customization Rules erstellen, um ihr individuelles Verhalten zu konfigurieren.
Sicherheit 
Standardmäßig geht FastComments davon aus, dass Kommentar-Threads öffentlich sind. Um eine zusätzliche Sicherheitsebene hinzuzufügen, wird empfohlen, eine Anpassungsregel zu erstellen, bei der die
Requires SSO-Option angekreuzt ist. Dadurch erfordern alle kommentarbezogenen Endpunkte eine SSO-Authentifizierung.
Abschließend
Sie haben das Ende der On Prem-Dokumentation erreicht. Teilen Sie uns unten mit, welche weiteren Kommentare oder Fragen Sie haben - Sie können sich auch über die Support-Seite an uns wenden.