FastComments.com


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 Internal Link

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.

Instanzen Internal Link

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 Internal Link

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:

E-Mail-Konfiguration
Copy Copy
1
2{
3 "defaultDKIM": {
4 "domainName": "mycompany.org",
5 "keySelector": "2024",
6 "privateKey": "-----BEGIN PRIVATE KEY-----\nABCDEFG\n-----END PRIVATE KEY-----"
7 },
8 "providerTransports": {
9 "yahoo.com": "specialTransport"
10 },
11 "defaultTransport": "mailgun",
12 "transports": {
13 "mailgun": {
14 "host": "smtp.mailgun.org",
15 "port": 587,
16 "secure": false,
17 "auth": {
18 "user": "admin@somewhere.com",
19 "pass": "password"
20 },
21 "tls": {
22 "ciphers": "SSLv3"
23 }
24 },
25 "specialTransport": {
26 "host": "smtp.someplace.org",
27 "port": 587,
28 "secure": false,
29 "auth": {
30 "user": "admin@example.com",
31 "pass": "password"
32 },
33 "tls": {
34 "ciphers": "SSLv3"
35 }
36 }
37 }
38}
39

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 Internal Link

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.

Widget-Code Internal Link


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:

Kommentare-Code für On-Prem
Copy Copy
1
2<script src="https://my.host.com/js/embed-v2.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 FastCommentsUI(document.getElementById('fastcomments-widget'), {
6 tenantId: "demo",
7 apiHost: "https://my.host.com"
8 // ... es kann auch SSO-Payload usw. übergeben werden.
9 });
10</script>
11

Das Obige ist ein sehr einfaches Beispiel. Wir könnten auch die First-Party-Bibliotheken für React, Angular, Vue, Svelte usw. verwenden.


API Internal Link

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 Internal Link

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 Internal Link

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.