FastComments.com

Hosting af FastComments lokalt

FastComments tilbyder flere løsninger til udrulning. Det mest almindelige er, at vi hoster applikationen for dig.

Vi forstår dog, at nogle kunder ikke kan gemme deres oplysninger i skyen, og kræver, at alle deres data hostes på egne servere.

Denne dokumentation dækker dette brugsscenarie.

Hvad er inkluderet Internal Link

FastComments On Prem giver dig mulighed for at implementere vores live-kommentarløsning, inklusive alle moderations- og adminværktøjer, på din egen hardware.

Det betyder, at du har kontrol over dine data, og kommentarsystemet kan begrænses til dit lokale LAN eller virksomhedens netværk.

Instanser Internal Link

Nødvendige komponenter

For On-Prem består FastComments kun af en applikationsserver og en database. Vi har forenklet udrulningen, så applikationen kan håndtere al trafik direkte uden at tilføje andre komponenter.

Applikationsserveren leveres i et Docker-image og kan udrulles med enhver container management-løsning.

Databasen, MongoDB, kan køres selv eller hostes af en anden udbyder som AWS DocumentDB eller MongoDB Atlas.

FastComments er i øjeblikket testet med MongoDB 7, men vi sigter efter at være DocumentDB-kompatible for at lette udrulningen.

Instansstørrelser

Du vil opleve, at FastComments er ret veloptimeret og ikke kræver store maskiner for selve applikationen for at holde lave P99s.

Alle batch- og cron jobs bruger streaming for at begrænse det samlede hukommelsesforbrug.

Tabellerne nedenfor for applikationsserveren og databasen kan hjælpe med dimensionering.

Applikationsserverinstanser

Concurrent Users Total Cluster CPUs Total Cluster Memory
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

For eksempel bruger en enkelt kerne, der håndterer omkring 100 kommentarsamtaler i sekundet, normalt aldrig mere end 250mb RSS.

Database-serverinstanser

Dimensionering af databasen afhænger af working set-størrelsen, hvilket er mængden af data, du tilgår på et givent tidspunkt, samt samtidige forespørgsler.

FastComments er ret venlig mod Mongo, idet den for de varme forespørgsler bruger index hints, streaming cursors og har concurrency-begrænsninger på forskellige områder for at forhindre overbelastning af downstream-systemer.

Nedenstående er en generel retningslinje for database-instansstørrelser. Bemærk, at dette er pr. instans, ikke de samlede ressourcer i clustret.

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

Ovenstående tabeller er konservative estimater. Du kan opleve, at de faktiske krav varierer baseret på din specifikke konfiguration (side-størrelser, kommentarmængde osv).

Konfiguration Internal Link

FastComments bruger miljøvariabler til konfiguration. Følgende liste skitserer alle understøttede variabler, der er relevante for On-Prem.

Variabel Standard Info Påkrævet Eksempler eller gyldige værdier
NODE_ENV Miljøtype. Ja production, dev
MONGO_URI DB-forbindelses-URI. Ja
MONGO_ENABLE_SSL false Aktiverer brug af SSL til at oprette forbindelse til databasen. Nej true, false
MONGO_ENABLE_SSL_VALIDATE false Aktiverer validering af certifikatet mod CA'en ved forbindelse til Mongo. Nej true, false
MONGO_SSL_CA Mongo SSL CA pem-fil. Nej /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL E-mailadresse hvor vigtige systemrelaterede notifikationer sendes. Nej admin-group@bigcorp.com
IP_HASH_SALT Salt til hashing af IP-adresser. Ja
SESSION_SECRET Nøglen, der bruges til at signere sessioner. Ja
SESSION_STORE_SECRET Nøglen, der bruges til at signere/hash'e sessioner i storage. Skal være forskellig fra SESSION_SECRET. Ja
HOSTNAME Værtsnavnet hvor FastComments er deployeret (admin dashboard osv.). Skal IKKE inkludere port eller protokol. Ja example.com
HOST_ADDR En tilgængelig URI hvor FastComments er deployeret (admin dashboard osv.). Ja https://example.com
EMAIL_CONFIG_PATH En sti på det lokale filsystem hvor e-mailkonfigurationen (SMTP, domæne/udbyder-tilknytninger mv.) ligger. Ja /my/config.json
EMAIL_DEFAULT_FROM_NAME FastComments Robot E-mailens "From Name"-header. Nej My Company Name
EMAIL_DEFAULT_FOOTER_LOGO /images/logo-32-2020-01.png Logo i e-mailens sidefod. Nej https://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORT Override for "defaultTransport" i EMAIL_CONFIG_PATH. Nyttigt til at deploye samme konfigurationsfil til forskellige miljøer. Nej myTransportName
ON_PREM_TENANT_ID ID'et for din konto på fastcomments.com. Bruges til at registrere din licensnøgle. Nej
ON_PREM_LICENSE_KEY En on-prem licensnøgle. Nej
GIPHY_API_KEY Giphy API-nøgle. Hvis ikke angivet, bør du oprette en konfigurationsregel som deaktiverer GIF-vælgeren. Nej
GIPHY_DEFAULT_RATING pg Bruges til giphy-integration. Kan også overskrives med widget-tilpasningsregler. Nej g, pg, pg-13, r
OPENAI_SECRET_KEY Bruges til openai-drevne funktioner som valgfri GPT-baseret spamdetektion. Nej
CDN_HOST_ADDR Værtsnavnet hvor assets hentes fra. Standard er værdien af HOSTNAME. Nej example.com
LARGE_FILE_HOST_ADDR Værtsnavnet hvor store filer (som eksporter) hentes fra. Standard er værdien af CDN_HOST_ADDR. Nej example.com
LARGE_FILE_LOCATION_TYPE local_disk Hvor store filer, såsom eksporter, skal gemmes. Nej local_disk, s3
FROM_EMAIL_HOST Værtsnavnet, som e-mails skal sendes fra. Nej example.com
COOKIE_ID fastcomments.sid Navnet på fastcomments-cookien. Nej
COOKIE_HOSTNAME .fastcomments.com Værdien af cookieens "hostname"-felt. Anbefales at præfikse med punktum. Nej .example.com
S3_ACCESS_KEY Bruges til brugeres filuploads, avatarer osv. Standard er lokalt filsystem hvis udefineret. Nej
S3_SECRET_KEY Bruges til brugeres filuploads, avatarer osv. Nej
S3_REGION Bruges til brugeres filuploads, avatarer osv. Nej
S3_BUCKET Bruges til brugeres filuploads, avatarer osv. Nej
S3_HOST Bruges til brugeres filuploads, avatarer osv. Nej
CACHE_DIR Placering til at gemme en valgfri offline-cache, til når DB ikke er tilgængelig. Periodisk opdateret med top 100 kommentartråde. Nej
BACKUP_DIR Placering til at gemme data når DB ikke er tilgængelig. Hvis en kommentar indsendes når DB ikke er tilgængelig, går den herhen og behandles senere. Nej

Bemærk at alle domænerelaterede variabler bruger suffikset _HOST eller _ADDR. Forskellen er:

  • _HOST: example.com
  • _ADDR: https://example.com

The EMAIL_CONFIG_PATH should contain a path to a JSON file with the following example format:

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

I ovenstående eksempel definerer vi en standard SMTP e-mailtransport kaldet mailgun. Vi definerer også en specialtransport, som vi bruger specifikt til @yahoo.com-e-mails. I nogle scenarier kan det være ønskeligt at bruge en specifik udbyder eller afsender-IP for et domæne for at finjustere levering. Dette er valgfrit.

DocumentDB

Når du opretter forbindelse til DocumentDB bør du angive MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem for at være kompatibel med standardindstillingerne.


Database-nedetid og vedligeholdelsestilstand Internal Link


FastComments understøtter en automatisk vedligeholdelsestilstand. Hvis databasen går ned, kan den fortsat levere populære kommentartråde.

Derudover gemmes i vedligeholdelsestilstand alle kommentarer i BACKUP_DIR. De vil blive behandlet (tjekket for spam osv.) og gemt, når systemet er online igen.

Dette gøres ved hver time at afgøre de 100 mest populære kommentartråde og cache deres indhold på disken. Afgørelsen af de 100 bedste tråde er allerede udført ud fra forudberegnet tilstand, så det er ikke et tungt periodisk job.

Dette er fuldstændig valgfrit og aktiveres kun, hvis CACHE_DIR og BACKUP_DIR er sat. Dette gør naturligvis applikationsnoderne tilstandsholdende, men det er en tilstand, der kan gå tabt når som helst uden at få applikationen til at opføre sig forkert.

Bemærk, at korrekt autentificering af kommentartråde ikke kan foretages i vedligeholdelsestilstand, så kun tråde, der med sikkerhed anses for offentlige, bliver periodisk sikkerhedskopieret.

I vedligeholdelsestilstand er mange funktioner ikke tilgængelige.

Widget-kode Internal Link

Front end-kodeuddragene og bibliotekerne til On-Prem er de samme som SaaS-produktet. Du skal dog angive apiHost og den korrekte scriptsti:

Kode til kommentarer for 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 // ... kan også sende SSO-payload osv.
9 });
10</script>
11

Ovenstående er et meget simpelt eksempel. Vi kan også bruge førsteparts React-, Angular-, Vue-, Svelte- osv. biblioteker.

API Internal Link

API'et kan tilgås på samme måde som det almindelige SaaS-produkt, idet du logger ind på On-Prem dashboardet for at oprette API-nøgler og bruge disse nøgler til at få adgang til API'et. API'et endpoints er de samme on-prem som de er for SaaS-produktet.

Flere domæner Internal Link

Din On-Prem FastComments-installation kan levere kommentarer til flere interne domæner, for eksempel app.mycorp.org og hr.mycorp.org. Du kan konfigurere disse separat, men hoste dem på én On-Prem-opsætning ved at oprette separate tilpasningsregler for at konfigurere deres individuelle adfærd.

Sikkerhed Internal Link

Som standard antager FastComments, at kommentartråde er offentlige. For at tilføje et lag af sikkerhed anbefales det at oprette en Customization Rule med Requires SSO indstillingen markeret. Dette vil få alle kommentarrelaterede endpoints til at kræve SSO-godkendelse.

Afslutning

Du er nået til slutningen af On Prem-dokumentationen. Fortæl os, hvilke yderligere kommentarer eller spørgsmål du har nedenfor - du kan også kontakte os via Support-siden.