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 UsersTotal Cluster CPUsTotal Cluster Memory
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

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 UsersComments StoredCPUs Per InstanceMemory Per Instance
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

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.

VariabelStandardInfoPåkrævetEksempler eller gyldige værdier
NODE_ENVMiljøtype.Japroduction, dev
MONGO_URIDB-forbindelses-URI.Ja
MONGO_ENABLE_SSLfalseAktiverer brug af SSL til at oprette forbindelse til databasen.Nejtrue, false
MONGO_ENABLE_SSL_VALIDATEfalseAktiverer validering af certifikatet mod CA'en ved forbindelse til Mongo.Nejtrue, false
MONGO_SSL_CAMongo SSL CA pem-fil.Nej/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILE-mailadresse hvor vigtige systemrelaterede notifikationer sendes.Nejadmin-group@bigcorp.com
IP_HASH_SALTSalt til hashing af IP-adresser.Ja
SESSION_SECRETNøglen, der bruges til at signere sessioner.Ja
SESSION_STORE_SECRETNøglen, der bruges til at signere/hash'e sessioner i storage. Skal være forskellig fra SESSION_SECRET.Ja
HOSTNAMEVærtsnavnet hvor FastComments er deployeret (admin dashboard osv.). Skal IKKE inkludere port eller protokol.Jaexample.com
HOST_ADDREn tilgængelig URI hvor FastComments er deployeret (admin dashboard osv.).Jahttps://example.com
EMAIL_CONFIG_PATHEn sti på det lokale filsystem hvor e-mailkonfigurationen (SMTP, domæne/udbyder-tilknytninger mv.) ligger.Ja/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments RobotE-mailens "From Name"-header.NejMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngLogo i e-mailens sidefod.Nejhttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTOverride for "defaultTransport" i EMAIL_CONFIG_PATH. Nyttigt til at deploye samme konfigurationsfil til forskellige miljøer.NejmyTransportName
ON_PREM_TENANT_IDID'et for din konto på fastcomments.com. Bruges til at registrere din licensnøgle.Nej
ON_PREM_LICENSE_KEYEn on-prem licensnøgle.Nej
GIPHY_API_KEYGiphy API-nøgle. Hvis ikke angivet, bør du oprette en konfigurationsregel som deaktiverer GIF-vælgeren.Nej
GIPHY_DEFAULT_RATINGpgBruges til giphy-integration. Kan også overskrives med widget-tilpasningsregler.Nejg, pg, pg-13, r
OPENAI_SECRET_KEYBruges til openai-drevne funktioner som valgfri GPT-baseret spamdetektion.Nej
CDN_HOST_ADDRVærtsnavnet hvor assets hentes fra. Standard er værdien af HOSTNAME.Nejexample.com
LARGE_FILE_HOST_ADDRVærtsnavnet hvor store filer (som eksporter) hentes fra. Standard er værdien af CDN_HOST_ADDR.Nejexample.com
LARGE_FILE_LOCATION_TYPElocal_diskHvor store filer, såsom eksporter, skal gemmes.Nejlocal_disk, s3
FROM_EMAIL_HOSTVærtsnavnet, som e-mails skal sendes fra.Nejexample.com
COOKIE_IDfastcomments.sidNavnet på fastcomments-cookien.Nej
COOKIE_HOSTNAME.fastcomments.comVærdien af cookieens "hostname"-felt. Anbefales at præfikse med punktum.Nej.example.com
S3_ACCESS_KEYBruges til brugeres filuploads, avatarer osv. Standard er lokalt filsystem hvis udefineret.Nej
S3_SECRET_KEYBruges til brugeres filuploads, avatarer osv.Nej
S3_REGIONBruges til brugeres filuploads, avatarer osv.Nej
S3_BUCKETBruges til brugeres filuploads, avatarer osv.Nej
S3_HOSTBruges til brugeres filuploads, avatarer osv.Nej
CACHE_DIRPlacering til at gemme en valgfri offline-cache, til når DB ikke er tilgængelig. Periodisk opdateret med top 100 kommentartråde.Nej
BACKUP_DIRPlacering 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 kodeudsnit og biblioteker til On-Prem er de samme som SaaS-produktet. Du skal dog angive apiHost og den korrekte sti til scriptet:

Kommentarkode til On-Prem
Copy Copy
1
2<script async src="https://my.host.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: "demo",
8 apiHost: "https://my.host.com"
9 // ... kan også sende SSO-payload osv.
10 }];
11</script>
12

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.